查找按过滤器上下文中未包括的维分组的求和平均值

时间:2019-01-14 18:55:20

标签: ssas dax

以下是我所面临的一个现实世界问题的简化示例:假设我有一个带有测量计数的销售事实表,其维度为供应商,客户和零件。我想获取零件的销售总和的最小值,最大值和平均值,但受相关客户和供应商的组合的限制。

这是Sales表和预期结果的示例

销售表

<form method="POST" action="{{ url_for('scan.add_experiment_and_scans') }}" enctype="multipart/form-data">


   <div class="form-group">
        {{experiment_and_scan_form.date.label}}
        {{experiment_and_scan_form.date(placeholder="Date of session", class_="form-control")}}
    </div>

    <div class="form-group">
        {{experiment_and_scan_form.scanner.label}}
        {{experiment_and_scan_form.scanner(placeholder="Scanner", class_="form-control")}}
    </div>
    <div class="form-group">
        {{experiment_and_scan_form.field_strength.label}}
        {{experiment_and_scan_form.field_strength(placeholder="Field Strength", class_="form-control")}}
    </div>
    {{ experiment_and_scan_form.csrf_token }}
    {{ experiment_and_scan_form.hidden_tag() }}
    {{ experiment_and_scan_form.scan_file(multiple="multiple") }}
    {{ experiment_and_scan_form.submit }}
</form>

结果

  • PartKey 1-最小值:10(a,Z),最大值:20(b,Z),平均:15
  • PartKey 2-最小值:50(b,Z),最大值:70(a,Y => 30 + 40),平均:60

因此,我想以某种方式创建的度量必须从VendorKey,CustomerKey和PartKey分组的数据中获取结果(尽管PartKey将在Filter Context中),但是我不知道如何指定这种类型的度量。分组。

1 个答案:

答案 0 :(得分:1)

此处的关键是创建一个摘要表,在该表中删除过滤器上下文,然后使用该表进行最小/最大/平均。下方的Summary表重新创建了您显示的数据表,但两行2,a,Y已聚合。

AvgSum =
VAR Summary =
    SUMMARIZE (
        ALL(Table1),
        Table1[PartKey],
        Table1[VendorKey],
        Table1[CustomerKey],
        "Cnt", SUM ( Table1[Count] )
    )
RETURN
    AVERAGEX (
        FILTER (
            Summary,
            Table1[PartKey] = MAX ( Table1[PartKey] )
        ),
        [Cnt]
    )

请注意,如果您将上面的AVERAGEX换成MINXMAXX,则会得到指定的最小和最大

相关问题