如何过滤促销中的所有产品?假设我们有两个表Sales和Budget没有物理关系。在这里,模型得到了简化,并假设是这种情况,我们无法创建物理关系。我们必须使用虚拟关系。
我们可以看到摘要:
前两列是Sales表的。第三栏BudgetTreats是衡量标准:
BudgetTreatas =
CALCULATE (
SUM ( Budget[amount] ),
TREATAS (
VALUES ( Sales[id] ),
Budget[id]
)
)
现在我想解决两件事:
当然还有示例数据: DAX TREATS.pbix
我发布了我问题的答案,但这不是显示答案,而是显示可行的解决方案,并为您提供预期结果的想法。如果有任何答案或意见,我将不胜感激。
参考:
The Logic behind the Magic of DAX Cross Table Filtering
How To Use The TREATAS Function - Power BI & DAX
Creating Virtual Relationships Using TREATAS - Advanced Power BI Technique
答案 0 :(得分:0)
衡量通过预算表中的ID过滤的销售量。
令人惊讶的是,这不起作用:
//not working:
SalesFilteredByBudget1 =
CALCULATE (
[Sales],
TREATAS ( VALUES ( Budget[id] ), Sales[id] )
)
似乎我们需要一个额外的表。如果我们将具有所有销售ID的桥表添加到模型中,然后将其连接到ID上的Sales表(而不将其连接到Budget表!),则可以解决此问题。
//works:
SalesFilteredByBudget2 =
CALCULATE (
[Sales],
TREATAS ( VALUES ( Budget[id] ), Bridge[id] )
)
因此,似乎过滤器从TREATAS( VALUES
中使用的表传播到通过物理关系连接的表。
如果要在没有Bridge表的情况下进行度量,可以将额外的表作为表变量。
// works:
SalesFilteredByBudget3 =
VAR Lineage =
TREATAS ( VALUES ( Budget[id] ), Sales[id] )
VAR tbl =
CALCULATETABLE ( Sales, KEEPFILTERS ( Lineage ) )
VAR result =
CALCULATE ( SUMX ( tbl, [amount] ) )
RETURN
result