带循环功能的power bi dax

问题描述 投票:0回答:1

我有一张这样的工具检查表。所有工具每年检查一次。日期格式为日-月-年。

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中的循环函数。

loops powerbi dax dynamically-generated
1个回答
0
投票

您需要使用 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]
    )
)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.