作为衡量标准,您可以执行以下操作。我假设您的模型如下:
- 事实:(日期、ID、值)
- DimDate:(日期,...)
- 费率:(ID,费率)
- 暗淡:(ID,...)
使用这些表,您将拥有如下关系:
- 暗淡 -1:N-> 事实
- 暗淡 费率
- DimDate -1:N-> 事实
使用上面的模型,您可以构建以下视觉效果:
- 行:DimDate[Date]
- 列:暗淡[ID]
- 值:[值或比率度量]
Value = SUM ( 'Fact'[Value] )
Rate = SUM ( 'Rates'[Rate] )
Value Or Rate Measure =
VAR Value = [Value]
RETURN
IF ( ISBLANK ( Value ), [Rate], Value )
这可能无法满足您对总计的要求 - 您没有指定。因此,如果您需要视觉总计,您可以尝试以下方法:
Value or Rate - visual totals =
SUMX (
CROSSJOIN ( VALUES ( 'Dim'[ID] ), VALUES ( 'DimDate'[Date] ) ),
[Value Or Rate Measure]
)
您也可以在 Power Query M 中处理此问题,假设您拥有与我上面描述的相同的表。我假设每个表都有一个同名的关联查询。
let
Source = Table.AddColumn(Dim, "Date", each DimDate[Date]),
#"Expanded Date" = Table.ExpandListColumn(Source, "Date"),
#"Merged Queries" = Table.NestedJoin(#"Expanded Date", {"id", "Date"}, Fact, {"ID", "Date"}, "Fact", JoinKind.LeftOuter),
#"Expanded Fact" = Table.ExpandTableColumn(#"Merged Queries", "Fact", {"Value"}, {"Value"}),
#"Merged Queries1" = Table.NestedJoin(#"Expanded Fact", {"id"}, Rates, {"ID"}, "Rates", JoinKind.LeftOuter),
#"Expanded Rates" = Table.ExpandTableColumn(#"Merged Queries1", "Rates", {"Rate"}, {"Rate"}),
#"Added Custom" = Table.AddColumn(#"Expanded Rates", "Value Or Rate", each if [Value] = null then [Rate] else [Value]),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Value", "Rate"})
in
#"Removed Columns"
在这里,我们正在做类似的事情,但在表格级别,而不是作为衡量标准。我们交叉连接 Dim[ID] 和 DimDate[Date] 以获得所有日期和 ID 组合的密集表。然后我们离开加入原始 Fact 表和 Rates 表。然后我们添加一列,如果存在则采用 [Value],如果 [Value] 为 null,则采用 [Rate]。