运行值的 SSRS 出现次数

SSRS number of occurences for runningvalue

我正在尝试创建 ABC / Pareto 分析。目的是标记 'A' 产生总销售额 80% 的所有产品,'B' 产生额外 15% 的产品和 'C' 其余的产品。最多需要考虑 10 万种产品,计算总数 运行 最快的方法是使用 Report Builder / Paginated Reports 中的 RunningValue。

我在将数据下载到数据集时通过计算 运行 总数进行了一些测试,但它非常慢,因此不是一个选项。另一方面,RunningValue 工作得很好,我可以在 Tablix 中用 'A'、'B' 和 'C' 标记产品。这是公式:

=IIF(RunningValue(Fields!ACT.Value, Sum, Nothing ) / Sum(Fields!ACT.Value, "Facts")<0.8, "A", IIF(RunningValue(Fields!ACT.Value, Sum, Nothing ) / Sum(Fields!ACT.Value, "Facts")<0.95,"B","C"))

但是,我找不到如何计算 A、B 和 C 的产品数量的方法。想法是表明 X% 的产品创造了总销售额的 80%,Y% 额外创造了 15% 和Z% 仅产生 5% 的营业额。

如果有任何建议,我将不胜感激,我 运行 别无选择。原始数据源是 Power BI 数据集,计算 运行 总数,同时下载数据对于这个数量的产品来说真的很慢。已使用 MDX 和 DAX 进行测试。

您可以使用自定义代码进行帕累托计数计算。

将以下代码添加到您的报告中

Public Dim a_count, b_count, c_count As Integer


Public Function Pareto( current As Integer, total As Integer) As String

If current / total < 0.8 Then
a_count = a_count + 1
Return "A"
ElseIf current / total < 0.95 Then
b_count = b_count + 1
Return "B"
Else
c_count = c_count + 1
Return "C"
End If


End Function

对于您的父分类列,使用表达式

= Code.Pareto( RunningValue(Fields!ACT.Value, Sum, Nothing ) , Sum(Fields!ACT.Value, "Facts"))

要显示计数器变量,请使用表达式

= Code.a_count
= Code.b_count
= Code.c_count