之前,我询问过如何通过递增的ID字段获取简单的上一行(谢谢PetrHavlík)。在这种情况下,我具有ID和ACTIVITY,其中(ACTIVITY&ID)是每行的唯一值。
从SQL的角度来看,我只是做一个内部联接,其中ACTIVITY =联接的ACTIVITY并且ID = ID-1-在联接表中并获取我需要的行。
换句话说,我希望先前的百分比属于同一活动。
所以在以前使用的回答后,我能够得到1000行我想要的结果。但是,如果要将行数增加到85000+,此功能将非常慢。
= SUMX(FILTER(查询,((EARLIER([ID])= [ID] +1])&&(EARLIER([ACTIVITY] == ACTIVITY])),[PERCENTAGE])
我的最终结果是使此功能最多处理700万行,如果可能的话,我该如何对其进行优化?如果不是,您能向我解释为什么我不能这样做吗?
一种选择是尝试这种方法的一种变化-没有您的数据集,我无法测试它是否更有效,但是我已经对1m +行数据集运行了类似的操作,而没有出现问题:
=
CALCULATE (
SUM ( [PERCENTAGE] ),
FILTER (
Query,
[ID] = EARLIER ( [ID] ) - 1
&& [ACTIVITY] = EARLIER ( [ACTIVITY] )
)
)
也许不是您想听到的,但在导入时使用SQL进行此操作可能是您最好的选择。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句