我们必须提供一个相当复杂的csv结构,我们希望使用数据工厂来实现这一点。该结构有多个级别,具有全局标题和尾部+子标题(每个主题(及其详细信息行。第一列定义了它是哪种类型的行。我简化了实际格式,只是为了突出我的问题。
HEADER-常见数据,如导出日期和编号序列SUBHEADER-主题名称1DETAIL-以上主题的详细行DETAIL-以上主题的详细行DETAIL-以上主题的详细行SUBHEADER-主题名称2DETAIL-以上主题的详细行DETAIL-以上主题的详细行DETAIL-以上主题的详细行TRAILER-具有总行数的关闭行
源数据将是详细信息行+主题名称。
有两个问题我无法解决:
- 如何将源数据转换为复杂的SUBHEADER+DETAIL格式。老实说,不知道该怎么做
- 有没有办法通过Datafactory添加带有总行数的全局标头+尾部?另一种选择是使用azure函数来执行此操作
欢迎所有建议。。。
谨致问候,Sven Peeters
使用Azure数据工厂有几个选择:
- 采用ELT方法,使用某种类型的计算(例如SQL数据库、Databricks、Azure Batch、Azure Function或Azure Synapse无服务器SQL池,如果您在Synapse中工作(来完成构建文件和输出文件的艰巨工作。ADF实际上只是进行编排(告诉其他进程按什么顺序做什么(并处理输出。计算机正在处理这个棘手的部分
- 采用ETL方法并使用映射数据流。这是一种低代码的方法,在后台使用按需Spark集群。你不必管理它们
我很想使用SQL来实现这一点,特别是如果您的基础结构中已经有了一些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;
如果你有时间,为什么不尝试这两种方法来证明概念,看看哪种方法最适合你、你的数据和你的组织。考虑开发时间、可维护性、灵活性、成本等因素。