首页 > 解决方案 > 运行总功能的速度优化

问题描述

有一个表格,其中包含按产品 (SKU) 和商店划分的单位 (数量) 和收入 (rur) 销售额。表中的产品被聚合成品牌(这是一个非常简单的例子)。目标是在品牌上下文中计算数据透视表的每个单元格,提取累计总额中单位销售边界 50% 的计算价格(这不是简单的价格中位数!)。

在此处输入图像描述

我故意对示例中的行进行排序,以便估计价格(收入“rur”除以单位“数量”)按升序排列

在此处输入图像描述

此外,按价格订购的单位销售额被视为累计总额,并转换为总额的百分比

在此处输入图像描述

之后,我们查找不超过所需边界 (50%) 的最大发货百分比,并将价格返回到汇总表的单元格中在此处输入图像描述

在视觉上,它看起来像这样

在此处输入图像描述

并且表格中的结果看起来像这样(实际上,我们不应该在更大的表格上计算 50% 以及 10% 和 90% 的边界,但我在这里简化了)

在此处输入图像描述

在模型中,我创建了一个计算列

price:= [rur] / [qty]

以及提供必要解决方案的措施

price.50%qty=
MAXX (
    FILTER (
        ADDCOLUMNS (
            ADDCOLUMNS (
                'tbl',
                "cs.qty", SUMX ( FILTER ( 'tbl', tbl[price] <= EARLIER ( tbl[price] ) ), tbl[qty] )
            ),
            "cs.qty.%", [cs.qty] / SUM ( tbl[qty] )
        ),
        [cs.qty.%] <= 0.5
    ),
    [price]
)

它适用于 1 个单元格的小桌子,但一旦 20 个品牌的表格建成 10 个月(200 个单元格),结果就无法等待。我知道 EARLIER 不是最优的,但我不知道如何优化我的功能

标签: daxpowerpivot

解决方案


推荐阅读