Power BI

牛奶加咖啡 Lv.2

关注
我是初学者,现在做个模型里面有个系统销售明细表和一个日期表,通过日期列关联

日期表里面有 年,周数(一年中的第几周),星期数(星期几)
然后生成的报表中用日期表中的日期列生成的切片器来选定一个时间段
现在写了两个度量值:

度量值一:计算当前选定日期范围的上一周的成交金额


周环比销售:=CALCULATE (
    SUM('系统零售明细'[成交金额]),
        FILTER(
            ALL('日期表'),
            '日期表'[日期] >=FIRSTDATE(FILTERS('日期表'[日期]))-7&&
            '日期表'[日期] <=LASTDATE(FILTERS('日期表'[日期]))-7
        )
)


度量值二:计算当前选定范围的开始日所属周数对应的去年同周数且同时间范围的成交金额
(比如切片器选的是25年第15周的周一到周四,那么就要计算24年第15周的周一到周四的成交金额)


周同比销售:=CALCULATE (
    SUM('系统零售明细'[成交金额]),
        FILTER (
            ALL('日期表'),
            '日期表'[年] = YEAR(FIRSTDATE(FILTERS('日期表'[日期])))-1 &&
            '日期表'[周数] = WEEKNUM(FIRSTDATE(FILTERS('日期表'[日期])),2) &&
            '日期表'[星期数] >= WEEKDAY(FIRSTDATE(FILTERS('日期表'[日期])),2) &&
            '日期表'[星期数] <= WEEKDAY(LASTDATE(FILTERS('日期表'[日期])),2)
        )
)


经过验证,以上两个度量值在报表中的计算结果正确,但是运算效率很低,每次刷新差不多要10分钟,目前数据源是14万行。
就想请大佬看看有没有什么优化的好方法,开拓下思路。
361阅读
3回复 倒序

zjnfxxh Lv.3 2楼

本帖最后由 zjnfxxh 于 2025-4-19 09:59 编辑

估计是filter + firstdate  每一行都在上下文转换。  用min(日期表[日期])  max(日期表[日期])就行了,搞得那么复杂

wdx223 Lv.6 3楼

日期表里添加周数列

牛奶加咖啡 楼主 4楼

引用: wdx223 发表于 2025-4-21 07:47
日期表里添加周数列

日期表里面有周数和星期数这两列的,现在就是要比较切片器筛选后的开始日期对应的周数和星期数,但是我的写法感觉效率不高

已显示全部内容