Azure Datafactory,多级复杂 csv 结构
Azure Datafactory , multi level complex csv structure
我们必须提供一个相当复杂的 csv 结构,我们想为此使用数据工厂。
该结构具有多个级别,具有全局 header 和尾部 + 子 header(每个主题)及其详细信息行。
第一列定义了它是哪种类型的线。我简化了真实格式只是为了突出我的问题。
HEADER - 导出日期和编号规则等常用数据
SUBHEADER - 主题名称 1
DETAIL - 上述主题的详细信息行
DETAIL - 上述主题的详细信息行
DETAIL - 上述主题的详细信息行
SUBHEADER - 主题名称 2
DETAIL - 上述主题的详细信息行
DETAIL - 上述主题的详细信息行
DETAIL - 上述主题的详细信息行
TRAILER - 总行数
的结束行
源数据将是详细信息行 + 主题名称。
有 2 个问题我无法解决:
- 如何将源数据转换成复杂的 SUBHEADER + DETAIL 格式。老实说,不知道如何处理这个问题。
- 有没有办法通过 Datafactory 添加带有总行数的全局 header + 预告片?另一种方法是使用 azure 函数执行此操作。
欢迎所有建议...
此致,
斯文·皮特斯
你有几个 Azure 数据工厂的选择:
- 采用 ELT 方法,使用某种类型的计算(例如 SQL 数据库、Databricks、Azure Batch、Azure Function 或 Azure Synapse 无服务器 SQL 池,如果你在 Synapse 中工作) 来完成构建文件和输出文件的艰苦工作。 ADF 实际上只是在进行编排(告诉其他进程按什么顺序做什么)和处理输出。计算正在处理繁琐的位。
- 采用 ETL 方法并使用映射数据流。这是一种 low-code 方法,它在后台使用 on-demand Spark 集群。您不必管理它们。
我很想使用 SQL 来执行此操作,特别是如果您的基础架构中已经有一些。一个简化的例子:
;WITH cte AS (
SELECT 10 sortOrder, 'someHeader' main
UNION ALL
SELECT 20, 'col1, col2, col3'
--FROM someTable
UNION ALL
SELECT 30, 'someFooter'
)
SELECT main
FROM cte
ORDER BY sortOrder;
如果您有时间,为什么不尝试这两种方法 proof-of-concept,看看哪种方法最适合您、您的数据和您的组织。查看开发时间、可维护性、灵活性、成本等因素
我们必须提供一个相当复杂的 csv 结构,我们想为此使用数据工厂。 该结构具有多个级别,具有全局 header 和尾部 + 子 header(每个主题)及其详细信息行。 第一列定义了它是哪种类型的线。我简化了真实格式只是为了突出我的问题。
HEADER - 导出日期和编号规则等常用数据 SUBHEADER - 主题名称 1 DETAIL - 上述主题的详细信息行 DETAIL - 上述主题的详细信息行 DETAIL - 上述主题的详细信息行 SUBHEADER - 主题名称 2 DETAIL - 上述主题的详细信息行 DETAIL - 上述主题的详细信息行 DETAIL - 上述主题的详细信息行 TRAILER - 总行数
的结束行源数据将是详细信息行 + 主题名称。
有 2 个问题我无法解决:
- 如何将源数据转换成复杂的 SUBHEADER + DETAIL 格式。老实说,不知道如何处理这个问题。
- 有没有办法通过 Datafactory 添加带有总行数的全局 header + 预告片?另一种方法是使用 azure 函数执行此操作。
欢迎所有建议...
此致, 斯文·皮特斯
你有几个 Azure 数据工厂的选择:
- 采用 ELT 方法,使用某种类型的计算(例如 SQL 数据库、Databricks、Azure Batch、Azure Function 或 Azure Synapse 无服务器 SQL 池,如果你在 Synapse 中工作) 来完成构建文件和输出文件的艰苦工作。 ADF 实际上只是在进行编排(告诉其他进程按什么顺序做什么)和处理输出。计算正在处理繁琐的位。
- 采用 ETL 方法并使用映射数据流。这是一种 low-code 方法,它在后台使用 on-demand Spark 集群。您不必管理它们。
我很想使用 SQL 来执行此操作,特别是如果您的基础架构中已经有一些。一个简化的例子:
;WITH cte AS (
SELECT 10 sortOrder, 'someHeader' main
UNION ALL
SELECT 20, 'col1, col2, col3'
--FROM someTable
UNION ALL
SELECT 30, 'someFooter'
)
SELECT main
FROM cte
ORDER BY sortOrder;
如果您有时间,为什么不尝试这两种方法 proof-of-concept,看看哪种方法最适合您、您的数据和您的组织。查看开发时间、可维护性、灵活性、成本等因素