DAX 模型中的时间点报告

Point-in-time reporting in a DAX model

我现在的组织有重复使用产品代码的坏习惯。这意味着两年前说的套头衫现在是一双鞋。

保存在其中的 table 是类型 2 SCD,我们在我的 DAX 模型中称其为 table 'Items'(我对 DAX 还很陌生),例如

Item code | Description      | Valid From    |  Valid To
1000      | Jumper           | 2016-01-01    |  2016-06-01
1000      | Shoes            | 2016-06-02    |  2016-12-31

有一个销售 table,其中只有商品代码、数量、销售价值和日期,在 DAX 模型中称为“Sales”:

Item Code | SaleDate         |  Quantity     | Value
1000      | 2016-01-31       |  1            | 25.00
1000      | 2016-02-29       |  2            | 50.00
1000      | 2016-06-30       |  1            | 30.00
1000      | 2016-10-31       |  1            | 30.00

因此,查询 DAX 模型时所需的输出如下:

Item Code | Description |  Quantity (sum)  | Value (sum)
1000      | Jumper      |  3               | 75.00
1000      | Shoes       |  2               | 60.00

我相信这需要在我的 DAX 模型的 Sales table 到 link 到 Items table 中进行计算,但是很难来满足我的需要。我已经尝试围绕这个主题进行一些阅读(例如 Alberto Ferrari),但实际上并没有明确的解释。

在结构方面,销售 table 具有对日历 table 的查找引用,但项目 table 目前没有对任何 table 的引用(它没有足够独特的条目 linked 到 Sales table).

任何pointers/ideas。

将不胜感激

创建两个度量:

Quantity Sum =
CALCULATE (
    SUM ( Sales[Quantity] ),
    FILTER (
        Sales,
        [SalesDate] >= MAX ( Items[Valid From] )
            && [SalesDate] <= MAX ( Items[Valid To] )
    )
)

Sales Sum =
CALCULATE (
    SUM ( Sales[Value] ),
    FILTER (
        Sales,
        [SalesDate] >= MAX ( Items[Valid From] )
            && [SalesDate] <= MAX ( Items[Valid To] )
    )
)

然后在您的客户端中,您可以使用 table 或任何可视化效果来显示所需的输出,方法是从 Items table 添加 Item CodeDescription以及之前创建的措施。

这是 Power BI 矩阵中的结果:

如果有帮助请告诉我。