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

Power BI中DAX互补筛选问题:按月份区分已缴/未缴房租租户

按指定月份区分已付款/未付款租户的DAX解决方案

业务场景与问题

管理楼宇租户付款事宜,租户详情存储于Customer_tb表,每笔付款记录在Sales_tb表中。需在Power BI中实现两个可视化组件:

  • 展示选定年月已完成付款的租户表格
  • 展示同期未付款的租户表格

应用特定月份筛选(如2025年1月)时,两个可视化无法呈现互补分组:已付款租户(如Joe、Aster)可正常显示,但未付款租户(如Kenny、Eric)在相同筛选条件下无法正常展示。原使用的DAX代码如下:

TenantsWithoutPayments = 
CALCULATETABLE (
    VALUES ( Customer_tb[aptID] ),
    NOT (
        CALCULATE (
            COUNTROWS ( Sales_tb ),
            Sales_tb = Customer_tb[aptID]
        )
    )
)

原代码问题分析

  1. 关联逻辑错误:Sales_tb = Customer_tb[aptID]是将整张表与单个租户ID值做比较,逻辑无效,应改为通过Sales_tb[aptID] = Customer_tb[aptID]关联租户付款记录。
  2. 上下文筛选丢失:未处理日期筛选的上下文,未付款租户因在Sales_tb中无对应月份记录,会被默认筛选逻辑排除,无法出现在结果中。

正确DAX实现方案

1. 已付款租户计算表

PaidTenants = 
CALCULATETABLE (
    VALUES ( Customer_tb[aptID] ),
    EXISTS (
        Sales_tb,
        Sales_tb[aptID] = Customer_tb[aptID] &&
        YEAR(Sales_tb[PaymentDate]) = SELECTEDVALUE('Date'[Year]) &&
        MONTH(Sales_tb[PaymentDate]) = SELECTEDVALUE('Date'[Month])
    )
)

2. 未付款租户计算表

UnpaidTenants = 
CALCULATETABLE (
    VALUES ( Customer_tb[aptID] ),
    NOT EXISTS (
        Sales_tb,
        Sales_tb[aptID] = Customer_tb[aptID] &&
        YEAR(Sales_tb[PaymentDate]) = SELECTEDVALUE('Date'[Year]) &&
        MONTH(Sales_tb[PaymentDate]) = SELECTEDVALUE('Date'[Month])
    )
)

优化建议(使用日期维度表)

若已建立独立的日期维度表Date,并与Sales_tb[PaymentDate]建立关联,可简化代码并提升筛选准确性:

// 已付款租户
PaidTenants = 
CALCULATETABLE (
    VALUES ( Customer_tb[aptID] ),
    RELATEDTABLE(Sales_tb)
)

// 未付款租户
UnpaidTenants = 
CALCULATETABLE (
    VALUES ( Customer_tb[aptID] ),
    CROSSFILTER(Sales_tb[PaymentDate], 'Date'[Date], None),
    NOT EXISTS (
        CALCULATETABLE(
            Sales_tb,
            Sales_tb[aptID] = Customer_tb[aptID],
            ALL('Date'),
            'Date'[Year] = SELECTEDVALUE('Date'[Year]),
            'Date'[Month] = SELECTEDVALUE('Date'[Month])
        )
    )
)

使用说明

  1. 创建上述两个计算表后,分别在两个可视化表格中绑定对应表的aptID及租户信息字段。
  2. 添加日期切片器(基于Date表或Sales_tb[PaymentDate]),选择目标年月后,两个表格将自动展示互补的已付款/未付款租户分组。

内容的提问来源于stack exchange,提问作者Eliram Liroy Lugassi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:42:12