如何将 CSV 复制到 Json,它在 ADF 中有带点的列 header?
How to copy CSV to Json that has column header with dot in ADF?
我正在 Adf 中使用 Copy activity,它将 CSV 作为源并将其作为 Json 接收。我注意到,当 CSV 列 header 名称之间有一个点(例如 abc.def.ghi)时,它将 header 转换为层次结构而不是将其作为普通字符串 header.
有没有一种方法可以根据 csv 文件获取列名?
这似乎是设计使然。解决方法是在导入的映射架构中手动编辑列 header,删除点并替换为 _
但是如果您想将列 header 保留为 abc.def.ghi
,您可以试试 DataFlow。
示例来源:
原始输出:仅使用副本 activity
解决方法:
手动编辑接收器的模式映射:
或
将 DataFlow 与自动映射一起使用并输出到单个文件:
如果您有权访问 Azure Synapse Analytics 工作区,则 serverless SQL pools 可以读取 .csv 并将其转换为 JSON,而不会产生意外的层次结构副作用,方法是使用 FOR JSON AUTO
:
SELECT [abc.def.ghi]
FROM OPENROWSET (
BULK 'https://someL.dfs.core.windows.net/filesystem/raw/colwithdot.csv',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
HEADER_ROW = TRUE
) AS [result]
FOR JSON AUTO, WITHOUT_ARRAY_WRAPPER;
我的结果:
您可以在 Copy activity 中使用此语句作为来源,或在 Synapse (untested) 中尝试 CREATE EXTERNAL TABLE AS (CETAS)
。
我正在 Adf 中使用 Copy activity,它将 CSV 作为源并将其作为 Json 接收。我注意到,当 CSV 列 header 名称之间有一个点(例如 abc.def.ghi)时,它将 header 转换为层次结构而不是将其作为普通字符串 header.
有没有一种方法可以根据 csv 文件获取列名?
这似乎是设计使然。解决方法是在导入的映射架构中手动编辑列 header,删除点并替换为 _
但是如果您想将列 header 保留为 abc.def.ghi
,您可以试试 DataFlow。
示例来源:
原始输出:仅使用副本 activity
解决方法:
手动编辑接收器的模式映射:
或
将 DataFlow 与自动映射一起使用并输出到单个文件:
如果您有权访问 Azure Synapse Analytics 工作区,则 serverless SQL pools 可以读取 .csv 并将其转换为 JSON,而不会产生意外的层次结构副作用,方法是使用 FOR JSON AUTO
:
SELECT [abc.def.ghi]
FROM OPENROWSET (
BULK 'https://someL.dfs.core.windows.net/filesystem/raw/colwithdot.csv',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
HEADER_ROW = TRUE
) AS [result]
FOR JSON AUTO, WITHOUT_ARRAY_WRAPPER;
我的结果:
您可以在 Copy activity 中使用此语句作为来源,或在 Synapse (untested) 中尝试 CREATE EXTERNAL TABLE AS (CETAS)
。