

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

# 在 Quick Sight 中使用关卡感知计算
<a name="level-aware-calculations"></a>


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

通过*Level-aware 计算* (LAC)，您可以指定要计算窗口函数或聚合函数的粒度级别。LAC 函数有两种类型：关卡感知计算——聚合 (LAC-A) 函数和关卡感知计算——窗口 () 函数。LAC-W

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

## Level-aware 计算-聚合 (LAC-A) 函数
<a name="level-aware-calculations-aggregate"></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\_count](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 例子
<a name="level-aware-calculations-aggregate-examples"></a>

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

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

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

  尽管可视化中未包含国家/地区，但该 LAC-A 函数首先汇总国家/地区级别的销售额，然后通过视觉级别计算生成每个区域的平均数字。如果不使用该 LAC-A函数来指定级别，则会在每个区域的最低粒度级别（数据集的基本级别）上计算平均销售额（显示在销售额列中）。
+ 与其他聚合函数和 LAC-W 函数 LAC-A 结合使用。有两种方法可以将 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 限制
<a name="level-aware-calculations-aggregate-limitations"></a>

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

  例如，有效函数如下所示：
  + `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)`

## Level-aware 计算-窗口 (LAC-W) 函数
<a name="level-aware-calculations-window"></a>

使用 LAC-W 函数，您可以指定用于计算计算的窗口或分区。 LAC-W 函数是一组可以在预过滤器或预聚合级别运行的窗口函数，例如`denseRank`、、。`sumover()` `(maxover)`例如：`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 函数的示例，请参阅 AWS 大数据博客中的以下文章：[使用 Amazon QuickSight 中的关卡感知聚合创建高级见解。](https://aws.amazon.com/jp/blogs/big-data/create-advanced-insights-using-level-aware-aggregations-in-amazon-quicksight/)