Power BI - 每个相关实体的总数
Power BI - totals per related entity
基本上,我想获得一个实体的总数,但要为另一个(但仍然 related/associated!)实体计算。这些实体之间的关系类型是多对多的。
为了不那么抽象,让我们将 Trips 和 Shipments 作为提到的实体,并将 Shipments 的重量作为要计算的总数。
计算每次旅行的总重量非常容易。这是 table 的装运重量:
我们将它们放入一定数量的 trucks/trips 中,并获得以下每次旅行的总重量:
但是,当我尝试显示每个相关装运(第 1 个 table 的列)的行程总重量总和(第 2 个 table 的数字)时,它变得比我预期的要难得多。
它应该看起来像:
而且我无法在 Power BI 中得到这样的 table。
供您参考的数据模型:
似乎 SUMMARIZE 函数几乎适合,但它不允许我使用另一个 table 中的列而不是在函数中初始化:
附加限制:
用户所做的选择(点击单元格等)不应影响计算。
这些数字应该能够用于进一步的计算,并以此为基础。
任何人都可以建议解决方案吗?或者至少要考虑适当的 DAX 引用?我以为我可以自己在 DAX 参考指南中找到快速答案。但是我没能快速找到答案。
版本 1
尝试将以下 DAX 函数作为发货中的计算列 table:
TripWeight =
VAR tripID =
RELATED ( Trips[TripID] )
RETURN
CALCULATE (
SUM ( Shipments[ShipmentTaxWeightKG] );
FILTER ( Shipments; RELATED ( InkTable[TripID] ) = tripID )
)
第一个表达式 var tripID
存储当前行的 TripID,CALCULATE 函数获取属于当前行程的所有货件的所有重量的总和。
版本 2
您还可以使用以下 DAX 创建计算的 table,并在新创建的 table 和您的行程 table 之间创建关系,并在此 table:
TripWeight =
GROUPBY (
Shipments;
Trips[TripID];
"Total Weight KG"; SUMX ( CURRENTGROUP (); Shipments[ShipmentTaxWeightKG] )
)
版本 3
只有当 lnkTrip 和 Shipment 之间的关系是一对一的关系时,版本 1 和 2 才有效。如果是多对一关系,可以在Trips里面创建如下计算列table:
ShipmentTaxWeightKG by Trip = SUMX(RELATEDTABLE(Shipments); Shipments[ShipmentTaxWeightKG])
希望这对您有所帮助。
基本上,我想获得一个实体的总数,但要为另一个(但仍然 related/associated!)实体计算。这些实体之间的关系类型是多对多的。
为了不那么抽象,让我们将 Trips 和 Shipments 作为提到的实体,并将 Shipments 的重量作为要计算的总数。
计算每次旅行的总重量非常容易。这是 table 的装运重量:
我们将它们放入一定数量的 trucks/trips 中,并获得以下每次旅行的总重量:
但是,当我尝试显示每个相关装运(第 1 个 table 的列)的行程总重量总和(第 2 个 table 的数字)时,它变得比我预期的要难得多。
它应该看起来像:
而且我无法在 Power BI 中得到这样的 table。
供您参考的数据模型:
似乎 SUMMARIZE 函数几乎适合,但它不允许我使用另一个 table 中的列而不是在函数中初始化:
附加限制:
用户所做的选择(点击单元格等)不应影响计算。
这些数字应该能够用于进一步的计算,并以此为基础。
任何人都可以建议解决方案吗?或者至少要考虑适当的 DAX 引用?我以为我可以自己在 DAX 参考指南中找到快速答案。但是我没能快速找到答案。
版本 1
尝试将以下 DAX 函数作为发货中的计算列 table:
TripWeight =
VAR tripID =
RELATED ( Trips[TripID] )
RETURN
CALCULATE (
SUM ( Shipments[ShipmentTaxWeightKG] );
FILTER ( Shipments; RELATED ( InkTable[TripID] ) = tripID )
)
第一个表达式 var tripID
存储当前行的 TripID,CALCULATE 函数获取属于当前行程的所有货件的所有重量的总和。
版本 2
您还可以使用以下 DAX 创建计算的 table,并在新创建的 table 和您的行程 table 之间创建关系,并在此 table:
TripWeight =
GROUPBY (
Shipments;
Trips[TripID];
"Total Weight KG"; SUMX ( CURRENTGROUP (); Shipments[ShipmentTaxWeightKG] )
)
版本 3
只有当 lnkTrip 和 Shipment 之间的关系是一对一的关系时,版本 1 和 2 才有效。如果是多对一关系,可以在Trips里面创建如下计算列table:
ShipmentTaxWeightKG by Trip = SUMX(RELATEDTABLE(Shipments); Shipments[ShipmentTaxWeightKG])
希望这对您有所帮助。