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

如何编写DAX查询指定日期间隔内的所有发票及对应总数量

前置场景假设
  • 我们默认两张多对多关联的表为Invoice(发票主表,存储发票唯一标识、开票日期等维度信息)、InvoiceItem(发票行项表,存储每笔商品/服务的数量信息),两张表通过InvoiceID字段建立多对多关联
  • 你可根据自己的实际表名、字段名替换对应内容
方案1:生成查询结果表(返回完整的发票+总数量数据集)

直接执行以下DAX语句即可:

日期范围发票总数量查询 = 
// 自定义日期间隔,可根据需求调整
VAR StartDate = DATE(2024, 1, 1)
VAR EndDate = DATE(2024, 6, 30)
RETURN
ADDCOLUMNS(
    // 筛选日期间隔内的所有发票
    FILTER(
        Invoice,
        Invoice[InvoiceDate] >= StartDate && Invoice[InvoiceDate] <= EndDate
    ),
    // 计算对应发票的总数量,显式处理多对多关系筛选
    "总数量", CALCULATE(
        SUM(InvoiceItem[Quantity]),
        CROSSFILTER(Invoice[InvoiceID], InvoiceItem[InvoiceID], BOTH)
    )
)
方案2:可视化度量值(适配Power BI表格/矩阵组件,可响应切片器动态筛选)

如果不需要生成静态计算表,仅需要在可视化组件中给每一行发票展示对应总数量,直接创建以下度量值:

发票总数量 = 
CALCULATE(
    SUM(InvoiceItem[Quantity]),
    CROSSFILTER(Invoice[InvoiceID], InvoiceItem[InvoiceID], BOTH)
)

在表格组件中拖入发票的所有需要展示的字段、再拖入该度量值,同时绑定日期切片器,即可动态查询任意日期间隔的发票及对应总数量。

注意事项
  • 如果你的多对多关系是通过中间桥接表实现的,只需要将CROSSFILTER的两个关联字段替换为对应表和桥接表的关联字段即可
  • 必须显式指定CROSSFILTER的筛选方向为双向,避免多对多关系默认单向筛选导致的计算结果错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:24:01