我有一张这样的工具检查表。所有工具每年检查一次。日期格式为日-月-年。
ToolNumber InspectionDate PurchaseDate
1 10-1-2024 10-3-2024
2 8-3-2024 12-11-2023
3 12-1-2024 1-7-2019
我想用循环逻辑在新行中添加历史检查日期。历史InspectionDate的年份应从2018年开始。条件是,如果最后一个InspectionDate(基于当前InspectionDate一年前)早于PurchaseDate,则不添加任何行。否则,在新行中添加历史值。
最后表格应该改成这样:
ToolNumber InspectionDate PurchaseDate
1 10-1-2024 10-3-2024
2 8-3-2024 12-11-2023
3 12-1-2024 1-7-2019
3 12-1-2023 1-7-2019
3 12-1-2022 1-7-2019
3 12-1-2021 1-7-2019
3 12-1-2020 1-7-2019
如何编写dax代码?
我尝试为历史值创建一个虚构的表,但不知道如何使用power bi中的循环函数。
您需要使用 UNION 将已有的行与 2018 年至 InspectionDate 年份之前一年内使用 GENSERIES 生成的行组合起来。
然后,在 ToolInspection 的每一行和一系列年份之间创建交叉连接:
HistoricalInspections =
UNION (
'ToolInspection',
SELECTCOLUMNS (
FILTER (
GENERATE (
'ToolInspection',
ADDCOLUMNS (
GENERATESERIES (2018, YEAR('ToolInspection'[InspectionDate]) - 1, 1),
"HistoricalYear", [Value]
)
),
DATE ( [HistoricalYear], MONTH ( 'ToolInspection'[InspectionDate] ), DAY ( 'ToolInspection'[InspectionDate] ) ) >= 'ToolInspection'[PurchaseDate]
),
"ToolNumber", 'ToolInspection'[ToolNumber],
"InspectionDate", DATE ( [HistoricalYear], MONTH ( 'ToolInspection'[InspectionDate] ), DAY ( 'ToolInspection'[InspectionDate] ) ),
"PurchaseDate", 'ToolInspection'[PurchaseDate]
)
)