Azure data factory Azure数据工厂映射ADFv2

Azure data factory Azure数据工厂映射ADFv2,azure-data-factory,Azure Data Factory,ADFv2复制活动中95%的映射是直接的一对一映射。然而,我有一个例子,我需要将源“MIDDLE_INIT”列映射到Sink列,在该列中字符串必须是 SUBSTR(PS_名称。中间_名称,1,1)。这可以在ADFv2复制活动中完成吗?(政府云没有数据流,因此我必须使用复制活动)。 谢谢 迈克不,复制活动不能这样做 作为wBob注释,您可以将数据从源复制到表类型,并在存储过程中转换SUBSTR(PS_NAME.MIDDLE_NAME,1,1)。然后将此表用作源,复制到接收器。否,复制活动无法执行此

ADFv2复制活动中95%的映射是直接的一对一映射。然而,我有一个例子,我需要将源“MIDDLE_INIT”列映射到Sink列,在该列中字符串必须是 SUBSTR(PS_名称。中间_名称,1,1)。这可以在ADFv2复制活动中完成吗?(政府云没有数据流,因此我必须使用复制活动)。 谢谢
迈克

不,复制活动不能这样做


作为wBob注释,您可以将数据从源复制到表类型,并在存储过程中转换
SUBSTR(PS_NAME.MIDDLE_NAME,1,1)
。然后将此表用作源,复制到接收器。

否,复制活动无法执行此操作


作为wBob注释,您可以将数据从源复制到表类型,并在存储过程中转换
SUBSTR(PS_NAME.MIDDLE_NAME,1,1)
。然后将此表用作源,复制到接收器。

如果您的体系结构中有Azure SQL数据库,您可以使用它的内置功能,即
OPENROWSET
OPENJSON
,直接从您的数据湖中拆分JSON。下面是一个简单的例子:

SELECT *
FROM OPENROWSET (
    BULK 'raw/parliament/2020/09/25/members.json',
    DATA_SOURCE = 'somejsonstore',
    SINGLE_CLOB
) x
CROSS APPLY OPENJSON ( BulkColumn, '$.result.items' )
WITH (
    fullName            NVARCHAR(MAX)       '$.fullName._value',
    gender              NVARCHAR(100)       '$.gender._value',
    party               NVARCHAR(100)       '$.party._value'
)
阅读有关OPENJSON的更多信息

这里是另一个分解JSON的简单示例,我想它与您的类似。注意:在本文中,我创建了JSON,但您需要使用上述技术导入它:

SET @json = '{
"PS_NAMES": {
    "FIRST_NAME": "w",
    "MIDDLE_NAME": "Susan",
    "LAST_NAME": "Bob"
    }
}'

;WITH cte AS (
SELECT *
FROM OPENJSON ( @json, '$.PS_NAMES' )
WITH (
    FIRST_NAME          NVARCHAR(100)       '$.FIRST_NAME',
    MIDDLE_NAME         NVARCHAR(100)       '$.MIDDLE_NAME',
    LAST_NAME           NVARCHAR(100)       '$.LAST_NAME'
    )
)
SELECT 'original'AS [source], FIRST_NAME, MIDDLE_NAME, LAST_NAME
FROM cte
UNION ALL
SELECT 'new', FIRST_NAME, LEFT( MIDDLE_NAME, 1 ) AS MIDDLE_INIT, LAST_NAME
FROM cte;

如果您的体系结构中没有Azure SQL DB,那么请用您现有的写回,例如您是否有Databricks、ADLA、Azure Synapse workspace、Azure函数、逻辑应用程序等?

如果您的体系结构中有Azure SQL数据库,您可以使用它的内置功能直接从数据湖中拆分JSON,即
OPENROWSET
OPENJSON
。下面是一个简单的例子:

SELECT *
FROM OPENROWSET (
    BULK 'raw/parliament/2020/09/25/members.json',
    DATA_SOURCE = 'somejsonstore',
    SINGLE_CLOB
) x
CROSS APPLY OPENJSON ( BulkColumn, '$.result.items' )
WITH (
    fullName            NVARCHAR(MAX)       '$.fullName._value',
    gender              NVARCHAR(100)       '$.gender._value',
    party               NVARCHAR(100)       '$.party._value'
)
阅读有关OPENJSON的更多信息

这里是另一个分解JSON的简单示例,我想它与您的类似。注意:在本文中,我创建了JSON,但您需要使用上述技术导入它:

SET @json = '{
"PS_NAMES": {
    "FIRST_NAME": "w",
    "MIDDLE_NAME": "Susan",
    "LAST_NAME": "Bob"
    }
}'

;WITH cte AS (
SELECT *
FROM OPENJSON ( @json, '$.PS_NAMES' )
WITH (
    FIRST_NAME          NVARCHAR(100)       '$.FIRST_NAME',
    MIDDLE_NAME         NVARCHAR(100)       '$.MIDDLE_NAME',
    LAST_NAME           NVARCHAR(100)       '$.LAST_NAME'
    )
)
SELECT 'original'AS [source], FIRST_NAME, MIDDLE_NAME, LAST_NAME
FROM cte
UNION ALL
SELECT 'new', FIRST_NAME, LEFT( MIDDLE_NAME, 1 ) AS MIDDLE_INIT, LAST_NAME
FROM cte;

如果您的体系结构中没有Azure SQL DB,那么请使用您现有的内容进行回复,例如您是否有Databricks、ADLA、Azure Synapse workspace、Azure函数、逻辑应用程序等?

您可以在复制活动中使用带有表类型的存储过程目标,并在其中执行此小转换。谢谢!那么您是在谈论Azure表存储并在那里进行转换?我还将在谷歌上搜索,看看是否有这样的例子。非常感谢!!–Mike Kiser刚才编辑DeleteNo当目标是某种SQL数据库时,将使用存储过程目标。复制活动的接收器(目标)是什么?我的接收器是Azure Blob容器,文件类型为Json。。。。(Json来自REST API调用…谢谢!!好的,复制任务不能这样做。您必须使用复制任务将数据放入Blob存储中,然后使用其他方法进行转换,例如SQL、DataRicks等,或者使用映射数据流。您可以在复制活动中使用具有表类型的存储过程目标,然后执行以下操作:这里有一个小小的转换。你们两个都是。你们在谈论Azure表存储并在那里进行转换吗?我也会用谷歌搜索看看是否有这样的例子。非常感谢!!–Mike Kiser刚才编辑了DeleteNo当目标是某种SQL数据库时,会使用存储过程目标。si是什么您的复制活动的nk(目标)?我的接收器是Azure Blob容器,文件类型为Json。。。。(Json来自REST API调用…谢谢!!好吧,复制任务不能这样做。你要么使用复制任务将数据放入Blob存储,然后使用其他东西进行转换,如SQL、DataRicks等,要么使用映射数据流。我们两个都是。所以你说的是Azure表存储并进行转换有吗?我也会谷歌看看是否有这样的例子。非常感谢!!我们两个都是!所以你们在谈论Azure表存储并在那里进行转换?我也会谷歌看看是否有这样的例子。非常感谢!!哇,非常棒的鲍勃!我们有Azure SQL DB,我将阅读有关分解和使用你的e非常感谢!!MikeWow,非常棒的Bob!我们有Azure SQL DB,我将阅读有关切碎的内容并使用您的示例。非常感谢!!Mike