我需要帮助创建DAX措施。这是Tabular立方体中的关系。 我有一个事实销售,初始日期,最终日期和产品表。
Relationship : Product -> Fact Sales (1 to Many, active)
Initial Date -> Fact Sales (1 to many, inactive relation)
Final Date - > Fact Sales(1 to many, active)
Cube用作Power Bi工具的源。用户可以选择任何初始和最终日期来进行销售比较。
实际数据
Product|Date|Sales
Product1|20160101|100
Product1|20160102|110
Product1|20160131|200
Product2|20160101|78
.....
预期产出 过滤器:
product : Product1
Initial date : 20160101
Final Date : 20160131
Product | Initial Sales | Final Sales
Product1|100 |200
我创建了DAX测量AS
Initial Sales := CALCULATE(SUM(SALES),USERELATIONSHIP('Fact Sales'[Date],'Initial Date'[Date]))
但这项措施并未给我初步销售,因为它也按最终日期过滤。
提前致谢
答案 0 :(得分:0)
您可以通过在DAX中使用FILTER函数来关联没有显式关系的表。
由于与Initial Date
的{{1}}关系已被停用,因此您需要Fact Sales
与过滤器中所选FILTER
匹配的Fact Sales
行。您可以使用Initial Date
将正在评估的上下文与EARLIER
中的每一行进行比较,并过滤正确的计算值。
使用这些措施:
Fact Sales
Initial Sales :=
IF (
ISFILTERED ( InitialDate[InitialDate] ),
CALCULATE (
SUM ( FactSales[Sales] ),
FILTER (
ALL ( FactSales ),
COUNTROWS (
FILTER (
FactSales,
EARLIER ( FactSales[Date] ) = MAX ( InitialDate[InitialDate] )
&& EARLIER ( FactSales[Product] ) = [Product]
)
)
)
),
BLANK ()
)
此表达式的工作原理如下,它汇总了Final Sales :=
IF (
ISFILTERED ( FinalDate[FinalDate] ),
CALCULATE (
SUM ( FactSales[Sales] ),
FILTER ( FactSales, [Date] = MAX ( FinalDate[FinalDate] ) )
),
BLANK ()
)
列中Sales
等于过滤器中所选Date
的所有值。但是,根据您在Final Date
和Final Date
之间设置的关系,您可以轻松计算出这一点。
Fact Sales
函数告诉我们过滤器是否选择了值,如果选择了值,则返回值,否则返回ISFILTERED
。
这是Power BI中的一个示例,因为我现在无法访问Excel。