You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerBI中基于日期角色切片器展示度量值底层数据的方案

问题描述

在Sam Nseir的帮助下已解决诸多问题,现有如下数据:

UniqueIDOrderDateShipping DateDelivery DateDivisionRegion
A1748/18/2022 13:14AZAZ1
A19611/17/2022 19:3321-Sep-2321-Sep-23MPMP1
A1971/11/2023 17:2421-Nov-23MPMP1
A1795/30/2023 12:5521-Oct-2321-Oct-23WBWB1
A1786/23/2023 21:1921-Sep-23WBWB1
A1806/27/2023 19:1621-Sep-2321-Sep-23AZAZ1
A1959/21/2023 19:0621-Oct-2321-Oct-23AZAZ1

我需要在PowerBI的表格图表中展示上述数据,但选择2023年时,UniqueID为A196的订单无法显示——这是因为DateTable与OrderDate之间是活动关系,而Shipping Date和Delivery Date与DateTable之间是两个非活动关系。

我创建了一个包含三行数据的Date Role表,用作切片器来选择OrderDate、Shipping Date和Delivery Date。

需求说明

  • 选择Shipping Date时,应显示所有带有Shipping Date的行,即使这些行超出当前DateTable上下文;
  • 但如果选择3月,则仅显示符合3月的数据(此时结果应为0)。

现有可统计此类订单数量的度量值(已修正原语法错误):

Date Role Count = 
var oRole = CONTAINS('Date Role',  'Date Role'[Role], "OrderDate")
var sRole = CONTAINS('Date Role',  'Date Role'[Role], "Shipping Date")
var dRole = CONTAINS('Date Role',  'Date Role'[Role], "Delivery Date")

var oValues = 
    CALCULATETABLE(
        DISTINCT(Data[UniqueID]),
        NOT ISBLANK(Data[UniqueID]) = oRole
    )

var sValues = 
    CALCULATETABLE(
        DISTINCT(Data[UniqueID]),
        USERELATIONSHIP(DATETABLE[DATE], Data[Shipping Date]),
        NOT ISBLANK(Data[UniqueID]) = sRole
    )

var dValues = 
    CALCULATETABLE(
        DISTINCT(Data[UniqueID]),
        USERELATIONSHIP(DATETABLE[DATE],Data[Delivery Date]),
        NOT ISBLANK(Data[UniqueID]) = dRole
    )

RETURN COUNTROWS( DISTINCT( UNION( oValues, sValues, dValues ) ) )

解决方案

要在表格图表中展示该度量值对应的底层数据,需创建一个筛选度量值来控制表格显示,步骤如下:

  1. 创建用于筛选的度量值:
Show Row = 
var oRole = CONTAINS('Date Role',  'Date Role'[Role], "OrderDate")
var sRole = CONTAINS('Date Role',  'Date Role'[Role], "Shipping Date")
var dRole = CONTAINS('Date Role',  'Date Role'[Role], "Delivery Date")

var oValues = 
    CALCULATETABLE(
        DISTINCT(Data[UniqueID]),
        NOT ISBLANK(Data[UniqueID]) = oRole
    )

var sValues = 
    CALCULATETABLE(
        DISTINCT(Data[UniqueID]),
        USERELATIONSHIP(DATETABLE[DATE], Data[Shipping Date]),
        NOT ISBLANK(Data[UniqueID]) = sRole
    )

var dValues = 
    CALCULATETABLE(
        DISTINCT(Data[UniqueID]),
        USERELATIONSHIP(DATETABLE[DATE],Data[Delivery Date]),
        NOT ISBLANK(Data[UniqueID]) = dRole
    )

var validIDs = UNION( oValues, sValues, dValues )

RETURN IF( CONTAINS(validIDs, Data[UniqueID], MAX(Data[UniqueID]) ), 1, 0)
  1. 将Show Row度量值添加到表格图表的视觉级筛选器中,设置筛选条件为「等于1」。

  2. 在表格图表中添加需要展示的字段(如UniqueID、OrderDate、Shipping Date等),保留DateTable切片器和Date Role切片器的交互。


原理说明

  • 该筛选度量值会根据当前选择的Date Role和DateTable上下文,判断每一行的UniqueID是否属于符合条件的集合;
  • 只有返回1的行才会在表格中显示,完全匹配原Date Role Count度量值统计的底层数据;
  • 选择Shipping Date时,即使OrderDate不在2023年(如A196),只要Shipping Date符合条件(或无具体月份筛选时显示所有有Shipping Date的行),就会被展示;
  • 选择3月时,无符合条件的行,表格会显示为空。

内容的提问来源于stack exchange,提问作者Joker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 16:02:11