如何解决按关系和切片器过滤的度量或列
我有一个表 Deals
,其中包含 [DealId]
、[Open Date Id]
、[Closed Date Id]
列,其中最后 2 列就像 Date
表的外键其中有 [Date]
,[DateId]
列。
Power BI 不会让我有 2 个活动的关系,所以一个是非活动的。
现在我想创建一些视觉效果,指示在自定义时间范围内打开和关闭的交易(使用切片器)。
我是如何尝试解决的
最接近的解决方案是使用 LOOKUPVALUE
创建一个计算列,并将关闭和打开日期直接添加到 Deals 表中。并使用 2 个不同的切片器创建了 2 个不同的页面,但这远不是我想要的解决方案。
我该如何解决这个问题?
解决方法
在这种情况下,最简单的方法是通过复制日期表来实现角色扮演维度功能。 Power BI 引擎不支持角色扮演维度,因此小表的解决方法只是复制它们,如 this article 中所述。
在您的情况下,您可以使用
创建一个表“Date_for_closed”Date_for_closed = ALL('Date')
这会创建原始日期表的副本。然后你可以创建关系并且只有活跃的关系。这样维护起来比一堆不活跃的关系更容易。
通过这个实现,你可以构建这个:
来自这个来源:
,我不知道我要说的内容是否适合您基于表格的大小或由于其他措施导致的数据模型的刚性的需求。我认为最终重要的是要了解您想要展示的内容的局限性。但是,我在这里回答了几乎类似的问题:https://stackoverflow.com/a/66792957/15460989
据我所知,您有两个类似于:
Deals = {[DealID] [OpenDate] [CloseDate] [Quantity] [Price] ...}
Dates = {[Date] [MonthName] [MonthNumber] [Year] ...}
并且您想根据两种关系过滤交易
USERELATIONSHIP (Dates [Date],Deals [OpenDate])
USERELATIONSHIP (Dates [Date],Deals [CloseDate])
我不打算讨论复制日期表的选项,因为之前使用两个切片器进行了介绍。
但是,如果我的模型的特征允许我使用具有两种关系(一个是活动的,另一个是非活动的)的表,而我的可视化使用不相关表的内容,该怎么办?
让我们将新的不相关表定义为:
HarvestingDates = {[Date] [MonthName] [MonthNumber] [Year] ...}
而我想要实现的是这样的:
来自这样的模型:
Deals[DealID]: Unique values.
Deals[OpenDate]: Repeated and missing dates
Deals[CloseDate]: A random number between 0 and 5 is added to Deals [OpenDate]
我没有选择开始日期和结束日期,而是选择与模型无关的日期范围,与交易相关的上下文来自度量。示例:
Opened Deals:在特定日期范围内打开并通过可视化汇总的所有交易。
HOpenedDeals: =
CALCULATE(
COUNTROWS(Deals),TREATAS(
VALUES(HarvestingDate[Date]),Dates[Date]
)
)
已完成的交易:在特定日期范围内完成的所有交易并通过可视化汇总。
HClosedDeals:=
CALCULATE(
COUNTROWS(Deals),USERELATIONSHIP(Dates[Date],Deals[CloseDate]),TREATAS(VALUES(HarvestingDate[Date]),Dates[Date])
)
打开和关闭的交易:可视化汇总的同一日期范围内的所有打开和关闭的交易
HOpened&Closed :=
VAR TotalRow= SUMMARIZE(HarvestingDate,HarvestingDate[Year],HarvestingDate[MonthName])
VAR CurrentDates=VALUES(HarvestingDate[Date])
VAR Result=
ADDCOLUMNS(TotalRow,"Count",VAR CurrentMonthName= {CALCULATE(VALUES(HarvestingDate[MonthName]))}
VAR CurrentYear= {CALCULATE(VALUES(HarvestingDate[Year]))}
RETURN
COUNTROWS(INTERSECT(
CALCULATETABLE(Deals,TREATAS(CurrentMonthName,Dates[MonthName]),TREATAS(CurrentYear,Dates[Year]),TREATAS(CurrentDates,Dates[Date])
),CALCULATETABLE(Deals,Dates[Date])
)
)))
RETURN SUMX(Result,[Count])
未完成和未完成的交易:通过可视化汇总的同一日期范围内的所有未完成和未完成的交易
HO&NOTC :=
VAR TotalRow= SUMMARIZE(HarvestingDate,VAR CurrentMonthName= {CALCULATE(VALUES(HarvestingDate[MonthName]))}
VAR CurrentYear= {CALCULATE(VALUES(HarvestingDate[Year]))}
RETURN
COUNTROWS(EXCEPT(
CALCULATETABLE(Deals,[Count])
测试
Date range: {5/27/2021…5/31/2021}
我相信这可以改进,但正如我在开头所说的那样,这只是一个想法。干杯!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。