我正在尝试使用管道将数据从本地数据库提取到 Fabric Lakehouse。首先,我创建了脚本活动,以使用 SELECT table_name FROM all_tables WHERE Owner = 'SCHEMA1' 获取所有表名称的列表。在管道运行中,我得到这样的输出,
{ “结果集计数”:1, “受影响的记录”:0, “结果集”:[ { “行数”:2637, “行”:[ { "TABLE_NAME": "表1" }, { "TABLE_NAME": "表2" },.....
我想将其转换为一个表名数组,我可以将其传递给 foreach 活动进行迭代,并使用 foreach 内的 copydata 活动将数据放入 Lakehouse。另外,我想过滤 foreach 内的表名,以便仅获取所需的表以进行进一步的工程工作。
我仅通过在动态内容中提供引用来连接所有管道组件。
我尝试的一种方法是在管道中设置一个变量。但是当我将此变量传递给 foreach 时它不起作用。此时它正在传递一个空字典。说明如下。
管道运行:
set_variable 输入为 { "variableName": "RawTableNames", “价值”: [ { "TABLE_NAME": "表1" }, { "TABLE_NAME": "表2" },.....
set_variable 输出为 { "name": "RawTableNames", “价值”: [ { "TABLE_NAME": "表1" }, { "TABLE_NAME": "表2" },.....
foreach 输入是 { “项目数”:“2637” }
我的期望:
在 foreach 的输入中,如果我得到一个表名列表,则可以通过 foreach 对其进行迭代以执行下一个任务。
在 foreach 的输入中,如果我得到一个表名列表,则可以通过 foreach 迭代它来执行下一个任务
For-each 活动不会在其输出或输入中给出提供的数组。在输入中,它将显示您给出的数组的计数,如
{ "ItemsCount": "3" }
,并且它将在输出中显示空对象。
您可以在 For-each 活动中使用您想要的活动。
它将按照迭代工作。
我正在尝试使用管道将数据从本地数据库提取到 Fabric Lakehouse
要过滤表名称,您可以在 if 活动中使用 ADF 管道动态表达式。在 if 活动表达式中设置一个条件,然后您可以继续在 if 的 True 活动中进行 copy 活动。如果当前表名@item().TABLE_NAME
满足if活动中的条件,则会执行True活动中的复制活动,否则将执行If活动中的False活动中的活动。如果您愿意,您可以在“虚假”活动中进行任何活动,也可以根据您的要求留空。
您需要参数化复制活动源和接收器中的数据集,以在每次迭代中传递当前表名称@item().TABLE_NAME
。您可以通过此For-each 活动不会有任何输出。如果你想得到过滤后的表名数组,你需要在使用
appendvariableactivity检查条件后在for-each中构建数组。或者,您可以在 for-each 活动之后对输入数组使用 Filter 活动。