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

如何在Power BI中提取每月最后一日最晚时段的分区域设备库存数据

解决Power BI中提取每月最后一日最晚时段库存数据的DAX方案

需求回顾

生成新表,展示每个区域(或每个PhoneID)每年每月最后一日23:00:00时段的库存数量:

  • 按区域汇总时,求和该区域内所有PhoneID的库存数量
  • 可单独展示每个PhoneID的对应库存数据

问题分析

你之前的公式中直接使用MAX(Data[dateonly])会取整个数据集的最大日期,而非每个区域/年月分组下的最后日期,因此仅返回最新月份的数据。需要按分组计算每个组的最后日期,再筛选对应时段的数据。

解决方案

前提准备

确保数据集的dateOnly列设置为日期类型,time列设置为时间类型,避免文本格式导致的比较错误。


方案1:按区域+年月汇总(区域库存总和)

MonthlyLastDayInventory_Region = 
VAR LastDayPerGroup = 
    ADDCOLUMNS(
        SUMMARIZE(Data, Data[Region], Data[year], Data[MonthYear]),
        "@LastDate", CALCULATE(MAX(Data[dateOnly]), ALLEXCEPT(Data, Data[Region], Data[year], Data[MonthYear]))
    )
RETURN
    SUMMARIZE(
        FILTER(
            Data,
            (Data[Region] & Data[year] & Data[MonthYear] IN SELECTCOLUMNS(LastDayPerGroup, "Key", [Region] & [year] & [MonthYear]))
            && Data[dateOnly] = LOOKUPVALUE(LastDayPerGroup[@LastDate], LastDayPerGroup[Region], Data[Region], LastDayPerGroup[year], Data[year], LastDayPerGroup[MonthYear], Data[MonthYear])
            && Data[time] = TIME(23,0,0)
        ),
        Data[Region],
        Data[year],
        Data[MonthYear],
        Data[dateOnly],
        Data[time],
        "TotalQuantity", SUM(Data[Quantity])
    )

方案2:按PhoneID+区域+年月单独展示(单设备库存)

MonthlyLastDayInventory_PhoneID = 
VAR LastDayPerGroup = 
    ADDCOLUMNS(
        SUMMARIZE(Data, Data[PhoneID], Data[Region], Data[year], Data[MonthYear]),
        "@LastDate", CALCULATE(MAX(Data[dateOnly]), ALLEXCEPT(Data, Data[PhoneID], Data[Region], Data[year], Data[MonthYear]))
    )
RETURN
    SUMMARIZE(
        FILTER(
            Data,
            (Data[PhoneID] & Data[Region] & Data[year] & Data[MonthYear] IN SELECTCOLUMNS(LastDayPerGroup, "Key", [PhoneID] & [Region] & [year] & [MonthYear]))
            && Data[dateOnly] = LOOKUPVALUE(LastDayPerGroup[@LastDate], LastDayPerGroup[PhoneID], Data[PhoneID], LastDayPerGroup[Region], Data[Region], LastDayPerGroup[year], Data[year], LastDayPerGroup[MonthYear], Data[MonthYear])
            && Data[time] = TIME(23,0,0)
        ),
        Data[PhoneID],
        Data[Region],
        Data[year],
        Data[MonthYear],
        Data[dateOnly],
        Data[time],
        "Quantity", SUM(Data[Quantity])
    )

思路说明

  1. 计算分组最后日期:通过SUMMARIZE定义分组维度(区域+年月/PhoneID+区域+年月),再用ADDCOLUMNS结合CALCULATE+ALLEXCEPT计算每个分组下的最后日期
  2. 筛选目标数据:用FILTER匹配分组、最后日期、23:00:00时段的数据
  3. 聚合结果:用SUMMARIZE整理输出字段,并计算库存总和

注意事项

如果你的time字段是文本格式(而非时间类型),请将公式中的TIME(23,0,0)替换为对应文本值,例如"23:00:00"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:50:27