azure-data-factory - Azure 数据工厂映射 ADFv2
问题描述
在 ADFv2 的复制活动中,我 95% 的映射是直接的一对一映射。但是,我有一种情况需要将源“MIDDLE_INIT”列映射到其中字符串必须为 SUBSTR(PS_NAMES.MIDDLE_NAME,1,1) 的接收器列。这可以在 ADFv2 复制活动中完成吗?(政府云没有数据流,所以我必须使用复制活动)。谢谢迈克
解决方案
如果您的体系结构中有 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 工作区、Azure Functions、逻辑应用程序等等?
推荐阅读
- angular - 从 12 到 13 的角度迁移出现错误:无法解构“buildOptions.sourceMap”的属性“样式”,因为它未定义
- c# - 具有线程安全的实体框架
- linker - 如何在 XCode 9 中链接静态库
- java - 仅当从子模块触发时,Maven 构建错误
- python - 如何在列表/数组中的某个字符之后获取每个值
- keyword - BER主题;主题表征
- sql - 从 jsonb 列中生成选定行之前和之后的行
- visual-studio - 表达式抛出错误中的 SSRS 嵌套 IIF 语句
- functional-programming - 生成只有 3 个值和 2 个运算符的所有高度为 n 的树
- terraform - 用于 Key Vault 访问的 ADF 托管标识