

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 Quick Sight 中使用关卡感知计算
等级感知计算


|  | 
| --- |
|    适用于：企业版和标准版  | 

通过*等级感知计算*（LAC），您可以指定要计算窗口函数或聚合函数的粒度等级。LAC 函数有两种类型：等级感知计算 – 聚合（LAC-A）函数和等级感知计算 – 窗口（LAC-W）函数。

**Topics**
+ [LAC-A 函数](#level-aware-calculations-aggregate)
+ [LAC-A 函数](#level-aware-calculations-window)

## 等级感知计算 – 聚合（LAC-A）函数
LAC-A 函数

通过 LAC-A 函数，您可以指定在哪个等级对计算进行分组。通过向现有聚合函数（例如 `sum() , max() , count()`）添加参数，您可以定义聚合所需的任何分组依据等级。添加的等级可以是任何维度，其独立于添加到视觉对象的维度。例如：

```
sum(measure,[group_field_A])
```

要使用 LAC-A 函数，请在计算编辑器中直接键入这些函数，方法是将预期的聚合等级添加为括号中的第二个参数。以下是用于比较的聚合函数和 LAC-A 函数的示例。
+ 聚合函数：`sum({sales})`
+ LAC-A 函数：`sum({sales}, [{Country},{Product}])`

LAC-A 结果是用方括号 `[ ]` 中的指定级别计算的，可用作聚合函数的操作数。聚合函数的分组依据等级为视觉对象等级，**分组依据**字段添加到视觉对象的字段井中。

除了在方括号 `[ ]` 中创建静态 LAC 组密钥外，您还可以通过在方括号中放置参数 `$visualDimensions` 来使其动态适应视觉对象分组依据字段。这是系统提供的参数，与用户定义的参数截然不同。`[$visualDimensions]` 参数表示添加到当前视觉对象中**分组依据**字段井中的字段。以下示例说明如何将组密钥动态添加到视觉对象维度，或将组密钥从视觉对象维度中移除
+ 带有动态添加组密钥的 LAC-A：`sum({sales}, [${visualDimensions},{Country},{Products}])`

  在计算视觉对象等级聚合之前，它会计算按 `country`、`products` 以及**分组依据**字段井中的任何其他字段分组的销售总额。
+ 带有动态移除组密钥的 LAC-A：`sum({sales}, [${visualDimensions},!{Country},!{Products}])`

  在计算视觉对象等级聚合之前，它会计算按视觉对象**分组依据**字段井中的字段（`country` 和 `product` 除外）分组的销售总额。

您可以在 LAC 表达式中指定添加的组密钥或删除的组密钥，但不能同时指定两者。

以下聚合函数支持 LAC-A 函数：
+ [avg](avg-function.md)
+ [count](count-function.md)
+ [distinct\$1count](distinct_count-function.md)
+ [max](max-function.md)
+ [median](median-function.md)
+ [min](min-function.md)
+ [percentile](percentile-function.md)
+ [percentileCont](percentileCont-function.md)
+ [percentileDisc（百分位数）](percentileDisc-function.md)
+ [stdev](stdev-function.md)
+ [stdevp](stdevp-function.md)
+ [sum](sum-function.md)
+ [var](var-function.md)
+ [varp](varp-function.md)

### LAC-A 示例


您可以使用 LAC-A 函数执行以下操作：
+ 运行独立于与视觉对象中的等级的计算。例如，如果您进行以下计算，则仅汇总国家/地区等级的销售数量，但不汇总视觉对象中其他维度（区域或产品）的销售数量。

  ```
  sum({Sales},[{Country}])
  ```
+ 对不在视觉对象中的维度运行计算。例如，如果您使用以下函数，则可以按区域计算各个国家/地区的平均销售总额。

  ```
  sum({Sales},[{Country}])
  ```

  尽管国家/地区不包含在视觉对象中，但 LAC-A 函数首先汇总国家/地区等级的销售额，然后通过视觉对象等级计算生成每个区域的平均销售额。如果未使用 LAC-A 函数来指定登记，则按每个区域的最低粒度等级（数据集的基本等级）计算平均销售额（显示在销售额列中）。
+ 将 LAC-A 与其他聚合函数和 LAC-W 函数结合使用。有两种方法可以将 LAC-A 函数与其他函数嵌套。
  + 创建计算时，可以编写嵌套语法。例如，LAC-A 函数可以与 LAC-W 函数嵌套，以计算每种产品平均价格的各国家/地区的总销售额：

    ```
    sum(avgOver({Sales},[{Product}],PRE_AGG),[{Country}])
    ```
  + 将 LAC-A 函数添加到视觉对象时，可以将计算与您在字段井中选择的视觉对象等级聚合函数进一步嵌套。有关更改视觉对象中字段聚合的更多信息，请参阅 [使用字段井在字段上更改或添加聚合](changing-field-aggregation.md#change-field-aggregation-field-wells)。

### LAC-A 限制


以下限制适用于 LAC-A 函数：
+ 所有累加性和非累加性聚合函数都支持 LAC-A 函数，例如 `sum()`、`count()` 和 `percentile()`。以 “if” 结尾的条件聚合函数（例如`sumif()`和）不支持 LAC-A 函数`countif()`，也不支持periodToDate以 “” 开头的周期聚合函数，例如`periodToDateSum()`和`periodToDateMax()`。
+ 表和数据透视表中的 LAC-A 函数目前不支持行级和列级总计。在图表中添加行级或列级总计时，总数将显示为空白。其他非 LAC 维度不受影响。
+ 目前不支持嵌套的 LAC-A 函数。支持与常规聚合函数和 LAC-W 函数嵌套的 LAC-A 函数的有限功能。

  例如，有效函数如下所示：
  + `Aggregation(LAC-A())`。例如：`max(sum({sales}, [{country}]))`
  + `LAC-A(LAC-W())`。例如：`sum(sumOver({Sales},[{Product}],PRE_AGG), [{Country}])`

  以下函数无效：
  + `LAC-A(Aggregation())`。例如：`sum(max({sales}), [{country}])`
  + `LAC-A(LAC-A())`。例如：`sum(max({sales}, [{country}]),[category])`
  + `LAC-W(LAC-A())`。例如：`sumOver(sum({Sales},[{Product}]),[{Country}],PRE_AGG)`

## 等级感知计算 – 窗口（LAC-A）函数
LAC-A 函数

通过 LAC-W 函数，您可以指定用于计算的窗口或分区。LAC-W 函数是一组可以在预筛选条件或预聚合等级运行的窗口函数，例如 `sumover()`、`(maxover)`、`denseRank`。例如：`sumOver(measure,[partition_field_A],pre_agg)`。

LAC-W 函数以前称为等级感知聚合（LAA）。

LAC-W 函数可以帮助您回答以下类型的问题：
+ 我有多少客户只下了 1 个采购订单？ 或 11 个？ 或 50 个？ 我们希望视觉对象使用计数作为维度而不是视觉对象中的度量。
+ 对于终身支出超过 10 万美元的客户，每个细分市场的总销售额是多少？ 该视觉对象应只显示细分市场和每个细分市场的总销售额。
+ 每个行业对整个公司利润的贡献（占总利润的百分比）是多少？ 我们希望能够筛选视觉对象以显示一些行业，以及它们如何为所展示行业的总销售额做出贡献。但是，我们还希望看到每个行业占整个公司总销售额的百分比（包括筛选出的行业）。
+ 与行业平均值相比，每个类别的总销售额是多少？ 行业平均值应包括所有类别，即使在筛选后也是如此。
+ 我的客户是如何分组到累积支出范围的？ 我们想使用分组作为维度而不是指标。

对于更复杂的问题，你可以在 Quick Sight 对你的设置进行评估的特定点之前注入计算或过滤器。要直接影响您的结果，您可以将计算级别关键字添加到表计算。有关 Quick Sight 如何评估查询的更多信息，请参阅[Amazon Quick Sight 中的评估顺序](order-of-evaluation-quicksight.md)。

LAC-W 函数支持以下计算等级：
+ **`PRE_FILTER`**— 在应用分析中的筛选器之前，Quick Sight 会评估预过滤器的计算结果。然后，将应用在这些预筛选计算上配置的所有筛选器。
+ **`PRE_AGG`**— 在计算显示屏级别的聚合之前，Quick Sight 会执行预聚合计算。然后，将应用在这些预聚合计算上配置的所有筛选器。此工作发生在应用顶部和底部 *N* 个筛选器之前。

您可以将 `PRE_FILTER` 或 `PRE_AGG` 关键字用作以下表计算函数中的参数。在指定计算级别时，可在函数中使用未聚合的度量。例如，您可以使用 `countOver({ORDER ID}, [{Customer ID}], PRE_AGG)`。通过使用 `PRE_AGG`，您可以指定 `countOver` 在预聚合级别执行。
+ [avgOver](avgOver-function.md)
+ [countOver](countOver-function.md)
+ [denseRank](denseRank-function.md)
+ [distinctCountOver](distinctCountOver-function.md)
+ [minOver](minOver-function.md)
+ [maxOver](maxOver-function.md)
+ [percentileRank](percentileRank-function.md)
+ [rank](rank-function.md)
+ [stdevOver](stdevOver-function.md)
+ [stdevpOver](stdevpOver-function.md)
+ [sumOver](sumOver-function.md)
+ [varOver](varOver-function.md)
+ [varpOver](varpOver-function.md)

默认情况下，每个函数的第一个参数都必须是聚合的度量。如果您使用 `PRE_FILTER` 或 `PRE_AGG`，则对第一个参数使用非聚合度量。

对于 LAC-W 函数，视觉对象聚合默认为 `MIN` 以消除重复项。要更改聚合，请打开字段的上下文菜单（右键单击），然后选择另一个不同聚合。

有关在现实生活场景中何时以及如何使用 LAC-W 函数的示例，请参阅 Amazon 大数据博客中的以下文章：[使用 Amazon 中的关卡感知聚合创建高级见解](https://www.amazonaws.cn/jp/blogs/big-data/create-advanced-insights-using-level-aware-aggregations-in-amazon-quicksight/)。QuickSight