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

PowerBI技术需求:按注册日期筛选并展示含无日期表的供应商全量数据

解决PowerBI表格可视化需求的步骤

1. 创建符合条件的供应商列表(DAX计算表)

先提取用户所选注册日期范围内的供应商ID,生成动态筛选的供应商列表:

Qualified_Providers = 
CALCULATETABLE(
    VALUES(Provider_info[ProviderID]),
    Sign_up_dates[SignUpDate] IN ALLSELECTED(Calendar[Date])
)

2. 创建日期与供应商的交叉表(DAX计算表)

将所选日期范围的每个日期,与符合条件的供应商做笛卡尔积,确保每个日期都对应所有目标供应商:

Date_Provider_Cross = 
GENERATE(
    ALLSELECTED(Calendar[Date]),
    Qualified_Providers
)

3. 配置数据模型关系

在数据视图中,给新建的交叉表配置关联:

  • 将Date_Provider_Cross[ProviderID]与Provider_info[ProviderID]建立双向筛选关系
  • 将Date_Provider_Cross[Date]与Calendar[Date]建立单向筛选关系

4. 编写度量值获取业务数据

针对无日期字段的Sales、Discount、Offer表,用度量值处理无数据时的显示逻辑:

Sales度量值

Sales_Value = 
VAR CurrentProvider = SELECTEDVALUE(Date_Provider_Cross[ProviderID])
RETURN
IF(
    ISBLANK(CurrentProvider),
    BLANK(),
    CALCULATE(
        SUM(Sales[Amount]),
        Sales[ProviderID] = CurrentProvider
    )
)

Discount度量值

Discount_Value = 
VAR CurrentProvider = SELECTEDVALUE(Date_Provider_Cross[ProviderID])
RETURN
IF(
    ISBLANK(CurrentProvider),
    BLANK(),
    CALCULATE(
        SUM(Discount[Value]),
        Discount[ProviderID] = CurrentProvider
    )
)

Offer度量值

Offer_Status = 
VAR CurrentProvider = SELECTEDVALUE(Date_Provider_Cross[ProviderID])
RETURN
IF(
    ISBLANK(CurrentProvider),
    BLANK(),
    LOOKUPVALUE(
        Offer[Status],
        Offer[ProviderID], CurrentProvider
    )
)

如果需要无数据时显示自定义文本(如"无数据"),可将BLANK()替换为对应文本

5. 配置表格可视化组件

在表格中添加以下字段:

  • Date_Provider_Cross[Date](日期列)
  • Provider_info[ProviderName](供应商名称,从Provider_info表选取)
  • 上述三个自定义度量值:Sales_Value、Discount_Value、Offer_Status

配置完成后,选择注册日期范围时,表格会自动展示该时段内每日的所有合格供应商,无业务数据的供应商对应列会显示空值(或自定义文本),且每个日期都会重复显示供应商信息。

可选优化:限定上周数据

如果Sales/Discount/Offer表存储的是固定上周数据,可在度量值中加入时间判断(假设表中隐含日期字段):

Sales_Value_LastWeek = 
VAR CurrentProvider = SELECTEDVALUE(Date_Provider_Cross[ProviderID])
VAR LastWeekStart = TODAY() - WEEKDAY(TODAY(), 2) - 6
VAR LastWeekEnd = TODAY() - WEEKDAY(TODAY(), 2)
RETURN
IF(
    ISBLANK(CurrentProvider),
    BLANK(),
    CALCULATE(
        SUM(Sales[Amount]),
        Sales[ProviderID] = CurrentProvider,
        Sales[Date] >= LastWeekStart && Sales[Date] <= LastWeekEnd
    )
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 13:07:17