请求编写Power BI DAX查询以创建周度销售汇总表视图
正确DAX实现方案
原代码问题分析
- 表名混淆:你代码里引用了
InvIssue[Location]和InvIssue[Sales],但数据源表是DataSheet,这会直接导致列找不到的错误。 - 逻辑偏差:
GENERATE搭配DATESBETWEEN是把每条销售记录和对应日期范围做笛卡尔积,完全不是统计每周销售总和的正确逻辑,而且DATESBETWEEN里的[Date]没有指定所属表,上下文模糊也会触发报错。
方案1:直接分组生成周销售统计
用SUMMARIZE按城市和周结束日(周六)分组,直接计算每周销售总量:
WeeklySalesCount = SUMMARIZE( DataSheet, // 替换为你实际的城市列名,比如DataSheet[Location] DataSheet[城市], "周结束日(周六)", VAR CurrentDate = DataSheet[Date] // 计算当前日期所属周的周六(周范围:周日至周六) RETURN CurrentDate + (7 - WEEKDAY(CurrentDate, 1)), // 替换为你实际的销售数量列名,比如DataSheet[Sales] "周销售总量", SUM(DataSheet[销售数量]) )
方案2:先加计算列再统计
如果需要后续复用周结束日的逻辑,可以先给DataSheet添加计算列标记每条记录的周结束日:
// 在DataSheet中创建计算列 周结束日(周六) = VAR CurrentDate = DataSheet[Date] RETURN CurrentDate + (7 - WEEKDAY(CurrentDate, 1))
然后基于这个计算列生成统计视图:
WeeklySalesCount = SUMMARIZE( DataSheet, DataSheet[城市], DataSheet[周结束日(周六)], "周销售总量", SUM(DataSheet[销售数量]) )
周范围调整说明
如果你的周范围是周一至周六(而非周日至周六),只需修改WEEKDAY的参数和计算逻辑:
把周结束日的公式改成:
CurrentDate + (6 - WEEKDAY(CurrentDate, 2))
这里WEEKDAY(..., 2)表示周一为1,周日为7,计算后会把周一到周五的日期映射到当周周六,周六则返回当天。
内容的提问来源于stack exchange,提问作者Ankit
相关产品推荐
相关产品推荐

