我想将薪资数据从位于 Azure BLOB 存储中的 csv 文件导入到 ADF 上的 Azure 数据库中。由于如果表中已存在一批
PaycheckDate
,则工资表是固定的,因此应在导入之前清理给定 PaycheckDate
的现有数据,并且预计将为给定 PaycheckDate
导入文件中的(新)条目。 (文件上没有唯一标识符来选取特定条目)
对于文件, 有一个 CSV 文件,例如 BLOB 存储的
Paycheck_202402.csv
上的 PaycheckContainer
,这里是架构和数据。 (一个文件大约有28K行)
CompanyId,EmployeeId,PaycheckDate,Amount,Description
100,e1234,2024-02-09,150.5,Overtime
100,e1234,2024-02-09,1500.0,Salary
100,e1234,2024-02-23,305.25,Overtime
100,e1234,2024-02-23,1500.0,Salary
200,e2222,2024-02-09,50.5,Tip
200,e2222,2024-02-09,500.0,Salary
400,e5555,2024-02-15,1000,Compensate
400,e5555,2024-02-23,1500.0,Salary
对于目标,名为
factPaychecks
的表,这是一个简单的架构
CompanyId INT,
EmployeeId VARCHAR,
PaycheckDate DATE,
Amount DOUBLE(10,2),
Description VARCHAR
我想做的是
arrCheckDates
= [2024-02-09, 2024-02-15, 2024-02-23]。arrCheckDates
传递给 For-Each 活动,factPaychecks
对
PaycheckDate
DELETE FROM `factPaychecks` WHERE [PaycheckDate] = $PaycheckDate
factPaychecks
我试过了
DFImportPCK
) 用于提取 PaycheckDates 并沉入缓存1.1。
((Source))
来自 CSV
1.2。
((Aggregate))
[分组依据] PaycheckDate
与 [聚合] NumOfRows(PaycheckDate)
1.3。仅
((Select))
PaycheckDate
- 检查结果为DATE类型
1.4。
((Sink))`` [Type] as
Cache`,[选项]选中写入活动输出,[关键列]列列表(未分配列)-->检查/数据预览:DATE类型
varArrPaycheckDates
(PLImportPCK
)varArrPaycheckDates = @activity('DFImportPCK').output.runStatus.output.Sink2Cache.value
我有几个问题
DFImportPCK
) 中,我只能在 2024-02-09
看到 1 个条目
((Aggregate))
`PaycheckDate` 2024-02-09 `NumOfRows` 1000
与后续步骤相同,甚至
((Sink))
我只能看到2024-02-09
。
但它必须是像上面这样的3个元素[2024-02-09, 2024-02-15, 2024-02-23]
2. DataFlow(DFImportPCK
) 返回 (LONG)INTEGER 值 1688688000000
而不是 2024-02-09
DATE 类型。
您能指导我如何实现我的目标或指出我缺少什么吗?
谢谢!
DataFlow(
) 返回 (LONG)INTEGER 值DFImportPCK
而不是1688688000000
DATE 类型。2024-02-09
问题出在日期类型上,首先您需要将其转换为字符串类型,如下所示:
然后在数据流设置中将日志记录级别设置为无并取消选中仅第一行。
然后在数据流输出中您可以看到
PaycheckDate
数组。
然后添加 for every 循环来迭代该数组。有表达
@activity('Data flow1').output.runStatus.output.Sink1.value
在 foreach 活动下使用表达式附加变量
@item().PaycheckDate
将所有值存储在单个数组中。
执行每个附加变量后将如下所示: