dax - 运行总功能的速度优化
问题描述
有一个表格,其中包含按产品 (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 不是最优的,但我不知道如何优化我的功能
解决方案
推荐阅读
- react-native - 弹出 React Native 项目时,Bare 和 ExpoKit 有什么区别?
- android - Jetpack 撰写新源无法正常工作
- haskell - 共享一个无点函数,但评估两次
- java - Spring Cloud Kubernetes 无法设置 ConfigMap 值
- r - 使用基于 ID 列的一列的串联可能值创建一列
- javascript - 如何从 vuejs 中的对象数组中跟踪更改的值
- javascript - 如何用对象中的键对数组进行分组?
- sql - 如何在此查询中打印学生姓名?
- c# - 当我尝试在 Xamarin 中启动模拟器时,我收到“构建已取消”消息
- c# - 在没有模拟实现的情况下调用 Moq 验证方法