在 ADF 管道中,我有一个复制数据活动。 源是对 API 的调用,该 API 返回 JSON 数据块,其内容取决于调用中包含的参数。 目标是一个 Snowflake 表,其中包含一个名为 JSON 的变体列,该列将包含返回的数据。 所以我的映射看起来像:
{
"type": "TabularTranslator",
"mapComplexValuesToString": true,
"mappings": [
{
"source": {"path": "$.data"},
"sink": {"name": "JSON"}
}
]
}
但是,某些 API 调用包含返回数据所依赖的键值(例如,参数调用包含部门 ID,返回的数据是该部门的员工)。 该键值不会在 JSON 块中返回。 因此,为了将依赖 JSON 正确连接到键值,该键值必须位于表中,如下所示:
CREATE TABLE TargetTable (key_value VARCHAR(25), json VARIANT);
我的问题:如何更改映射 TabularTranslator 代码以包含 key_value(这是传递到管道中的参数)以及 JSON 的插入?
要在复制过程中将参数添加到源,您可以使用复制活动源中的附加列选项。更改您的目标表并向其中添加所需的列。
创建附加列
key_value
,并通过动态内容表达式为其提供所需的参数,如下所示。
在映射中,单击导入模式,它会要求提供参数值。给出示例参数值中的任意值。在映射中,将目标中的
key_value
列映射到源中的附加列 key_value
。例如,我使用 SQL 数据库而不是雪花并使用 sql_variant
列。
运行管道并将所需的值传递给参数。对于演示,我已将一些随机字符串列从源 JSON 复制到变体列,您可以看到目标
key_value
列值从源参数复制。