Power BI单日期切片器关联两表两列的替代解决方案问询
替代方案解决Power BI单日期切片器关联多表不同日期列问题
以下是几个不用依赖传统日期表(或优化现有关系)的可行方案,直接解决活跃/非活跃关系的困扰:
方案1:独立切片器表+DAX度量值过滤(无关系依赖)
创建一个仅用于选择日期的独立表(不需要和任何业务表建立关系),比如用CALENDAR函数生成日期范围:
DateSlicer = CALENDAR(DATE(2020,1,1), TODAY())
然后基于这个表做切片器,在需要展示的度量值里直接过滤业务表的日期列:
总销售额+支出 = // 过滤销售表的订单日期在切片器选中范围内 CALCULATE(SUM(Sales[销售额]), Sales[订单日期] IN VALUES(DateSlicer[Date])) // 过滤支出表的付款日期在切片器选中范围内 + CALCULATE(SUM(Expenses[支出额]), Expenses[付款日期] IN VALUES(DateSlicer[Date]))
这个方案完全避开关系的活跃/非活跃问题,所有关联逻辑都在度量值里处理,灵活度高。
方案2:用USERELATIONSHIP激活非活跃关系
如果已经有日期表,但其中一个表和日期表的关系是非活跃的,直接在度量值里临时激活该关系:
假设日期表DateTable和Sales是活跃关系(关联订单日期),和Expenses是非活跃关系(关联付款日期),那么支出的度量值可以写:
支出总额 = CALCULATE( SUM(Expenses[支出额]), USERELATIONSHIP(DateTable[Date], Expenses[付款日期]) )
这样日期切片器基于DateTable时,既会通过活跃关系自动过滤销售数据,又会通过USERELATIONSHIP临时激活非活跃关系过滤支出数据,实现单切片器控制多表。
方案3:合并多表日期生成切片器表(小数据量适用)
如果两个业务表的日期数据量不大,可以生成一个包含所有唯一日期的合并表,作为切片器的数据源:
合并日期表 = DISTINCT( UNION( SELECTCOLUMNS(Sales, "日期", Sales[订单日期]), SELECTCOLUMNS(Expenses, "日期", Expenses[付款日期]) ) )
然后用这个表做切片器,同样在度量值里用IN VALUES过滤两个业务表的日期,逻辑和方案1一致,优点是切片器只显示实际存在业务数据的日期,避免空日期选项。
内容的提问来源于stack exchange,提问作者Muhammad Hamza Malik
相关产品推荐
相关产品推荐

