首页 > 解决方案 > Power BI - 每个相关实体的总计

问题描述

基本上,我想获得一个实体总数,但为另一个(但仍然相关/关联!)实体计算。这些实体之间的关系类型是多对多的。只是为了不那么抽象,让我们将旅行和发货作为提到的实体,将发货的重量作为要计算的总数。计算每次旅行的总重量非常容易。以下是货件重量表: 带有重量的货物

我们将它们放入一定数量的卡车/旅行中,并获得以下每次旅行的总重量: 每次运输的总重量

但是,当我尝试显示每个相关货件(第 1 表中的列)的行程总重量总和(第 2 表中的数字)时,它变得比我预期的要困难得多。它应该看起来像: 我无法在 Power BI 中获取所需的表

而且我无法在 Power BI 中获得这样的表。

数据模型供您参考: 数据模型

似乎 SUMMARIZE 函数几乎是合适的,但它不允许我使用另一个表中的列而不是在函数中初始化: 几乎适合但不适合

附加限制:

用户所做的选择(单击单元格等)无论如何都不应影响计算。

这些数字应该能够用于进一步的计算,并以此为基础。

任何人都可以提出解决方案吗?或者至少要考虑适当的 DAX 参考?我想我可以自己在 DAX 参考指南中找到快速答案。但是我没有找到一个快速的答案。

标签: powerbirelational-databasedax

解决方案


版本 1

尝试将以下 DAX 函数作为发货表中的计算列:

TripWeight =
VAR tripID =
    RELATED ( Trips[TripID] )
RETURN
    CALCULATE (
        SUM ( Shipments[ShipmentTaxWeightKG] );
        FILTER ( Shipments; RELATED ( InkTable[TripID] ) = tripID )
    )

第一个表达式var tripID是存储当前行的 TripID,CALCULATE 函数获取属于当前行程的所有货物的所有重量的总和。

版本 2

您还可以使用以下 DAX 创建计算表,并在新创建的表和您的 Trips 表之间创建关系,并在此表中简单地显示权重:

TripWeight =
GROUPBY (
    Shipments;
    Trips[TripID];
    "Total Weight KG"; SUMX ( CURRENTGROUP (); Shipments[ShipmentTaxWeightKG] )
)

版本 3

只有当 lnkTrip 和 Shipment 之间的关系是一对一关系时,版本 1 和 2 才有效。如果是多对一关系,可以在 Trips 表中创建以下计算列:

ShipmentTaxWeightKG by Trip = SUMX(RELATEDTABLE(Shipments); Shipments[ShipmentTaxWeightKG])

希望这可以帮助。


推荐阅读