Pivot Tables

PivotTable

数据透视表。

JSON 表示法
{
  "rows": [
    {
      object (PivotGroup)
    }
  ],
  "columns": [
    {
      object (PivotGroup)
    }
  ],
  "criteria": {
    integer: {
      object (PivotFilterCriteria)
    },
    ...
  },
  "filterSpecs": [
    {
      object (PivotFilterSpec)
    }
  ],
  "values": [
    {
      object (PivotValue)
    }
  ],
  "valueLayout": enum (PivotValueLayout),
  "dataExecutionStatus": {
    object (DataExecutionStatus)
  },

  // Union field source_data can be only one of the following:
  "source": {
    object (GridRange)
  },
  "dataSourceId": string
  // End of list of possible types for union field source_data.
}
字段
rows[]

object (PivotGroup)

数据透视表中的每一行分组。

columns[]

object (PivotGroup)

数据透视表中的每一列分组。

criteria
(deprecated)

map (key: integer, value: object ( PivotFilterCriteria))

每个来源列偏移量的可选过滤条件映射。

系统会先应用过滤条件,然后再将数据汇总到数据透视表中。映射的键是您要过滤的来源范围的列偏移量,值是该列的条件。

例如,如果来源为 C10:E15,则键 0 将对应于列 C 的过滤条件,而键 1 将对应于列 D 的过滤条件。

此字段已弃用,取而代之的是 filterSpecs

filterSpecs[]

object (PivotFilterSpec)

在汇总数据透视表的数据之前应用于来源列的过滤条件。

系统会在响应中填充 criteriafilterSpecs。如果更新请求中同时指定了这两个字段,则此字段的优先级更高。

values[]

object (PivotValue)

要包含在数据透视表中的值的列表。

valueLayout

enum (PivotValueLayout)

值应水平(列)还是垂直(行)列出。

dataExecutionStatus

object (DataExecutionStatus)

仅限输出。数据源数据透视表的数据执行状态。

联合字段 source_data。数据透视表数据的来源。 source_data只能是以下其中一项:
source

object (GridRange)

数据透视表从中读取数据的范围。

dataSourceId

string

数据透视表要从中读取数据的数据源的 ID。

PivotGroup

数据透视表中的单个分组(行或列)。

JSON 表示法
{
  "showTotals": boolean,
  "valueMetadata": [
    {
      object (PivotGroupValueMetadata)
    }
  ],
  "sortOrder": enum (SortOrder),
  "valueBucket": {
    object (PivotGroupSortValueBucket)
  },
  "repeatHeadings": boolean,
  "label": string,
  "groupRule": {
    object (PivotGroupRule)
  },
  "groupLimit": {
    object (PivotGroupLimit)
  },

  // Union field source can be only one of the following:
  "sourceColumnOffset": integer,
  "dataSourceColumnReference": {
    object (DataSourceColumnReference)
  }
  // End of list of possible types for union field source.
}
字段
showTotals

boolean

如果数据透视表应包含此分组的总计,则为 true。

valueMetadata[]

object (PivotGroupValueMetadata)

有关分组中值的元数据。

sortOrder

enum (SortOrder)

此组中值应按的排序顺序。

valueBucket

object (PivotGroupSortValueBucket)

要按其进行排序的对立数据透视表组的存储分区。如果未指定,则按此组的值进行按字母顺序排序。

repeatHeadings

boolean

如果此数据透视群组中的标题应重复,则为 true。此属性仅适用于行分组,列会忽略此属性。

默认情况下,我们会尽量避免重复标题,即在标题相同的情况下,不显示更高级别的标题。例如,尽管下方的第三行对应于“第一季度(3 月)”,但系统不会显示“第一季度”,因为它与前几行重复。将 repeatHeadings 设置为 true 会导致“2 月”和“3 月”重复显示“第 1 季度”。

+--------------+
| Q1     | Jan |
|        | Feb |
|        | Mar |
+--------+-----+
| Q1 Total     |
+--------------+
label

string

要为行/列组使用的标签(可自定义)。例如,在下表中,行标签为 Region(可重命名为 State),列标签为 Product(可重命名为 Item)。2017 年 12 月之前创建的数据透视表没有标题标签。如果您想向现有数据透视表添加标题标签,请删除现有数据透视表,然后使用相同的参数创建一个新的数据透视表。

+--------------+---------+-------+
| SUM of Units | Product |       |
| Region       | Pen     | Paper |
+--------------+---------+-------+
| New York     |     345 |    98 |
| Oregon       |     234 |   123 |
| Tennessee    |     531 |   415 |
+--------------+---------+-------+
| Grand Total  |    1110 |   636 |
+--------------+---------+-------+
groupRule

object (PivotGroupRule)

要应用于此行/列组的组规则。

groupLimit

object (PivotGroupLimit)

要应用于此数据透视群组的行或列的计数限制。

联合字段 source。数据透视组的数据源。 source只能是以下其中一项:
sourceColumnOffset

integer

此分组所依据的来源范围的列偏移量。

例如,如果来源为 C10:E15sourceColumnOffset0,则表示此组引用的是列 C,而偏移量 1 则引用的是列 D

dataSourceColumnReference

object (DataSourceColumnReference)

对此分组所依据的数据源列的引用。

PivotGroupValueMetadata

有关数据透视分组中某个值的元数据。

JSON 表示法
{
  "value": {
    object (ExtendedValue)
  },
  "collapsed": boolean
}
字段
value

object (ExtendedValue)

元数据对应的计算值。(请注意,formulaValue 无效,因为系统会计算值。)

collapsed

boolean

如果与值对应的数据已收起,则为 true。

PivotGroupSortValueBucket

有关应使用数据透视组中的哪些值进行排序的信息。

JSON 表示法
{
  "valuesIndex": integer,
  "buckets": [
    {
      object (ExtendedValue)
    }
  ]
}
字段
valuesIndex

integer

PivotTable.values 列表中的偏移量,此分组中的值应按此偏移量进行排序。

buckets[]

object (ExtendedValue)

确定要从中选择值进行排序的存储分区。

例如,在包含一个行组和两个列组的数据透视表中,行组最多可以列出两个值。第一个值对应于第一个列组中的值,第二个值对应于第二个列组中的值。如果未列出任何值,则表示该行应按各列组的“总计”进行排序。如果列出单个值,则表示使用该分桶的“总计”值。

PivotGroupRule

PivotGroup 上的可选设置,用于为来源数据列中的值定义分桶,而不是对每个单独的值进行细分。您只能为来源数据中的每列添加一个包含组规则的 PivotGroup,但对于任何给定列,您都可以同时添加包含规则的 PivotGroup 和不包含规则的 PivotGroup

JSON 表示法
{

  // Union field rule can be only one of the following:
  "manualRule": {
    object (ManualRule)
  },
  "histogramRule": {
    object (HistogramRule)
  },
  "dateTimeRule": {
    object (DateTimeRule)
  }
  // End of list of possible types for union field rule.
}
字段
联合字段 rule。要应用于 PivotGroup 的规则。 rule只能是以下其中一项:
manualRule

object (ManualRule)

ManualRule

histogramRule

object (HistogramRule)

HistogramRule

dateTimeRule

object (DateTimeRule)

DateTimeRule

ManualRule

可让您手动将源数据列中的值整理到您选择的名称对应的存储分区中。例如,按州汇总人口的 pivot 表:

+-------+-------------------+
| State | SUM of Population |
+-------+-------------------+
| AK    |               0.7 |
| AL    |               4.8 |
| AR    |               2.9 |
...
+-------+-------------------+

可以转换为一个数据透视表,通过向手动分组规则提供组列表(例如,groupName = 'Central', items = ['AL', 'AR', 'IA', ...])来按时区汇总人口。请注意,您也可以通过向源数据添加时区列并调整数据透视表来实现类似的效果。

+-----------+-------------------+
| Time Zone | SUM of Population |
+-----------+-------------------+
| Central   |             106.3 |
| Eastern   |             151.9 |
| Mountain  |              17.4 |
...
+-----------+-------------------+
JSON 表示法
{
  "groups": [
    {
      object (ManualRuleGroup)
    }
  ]
}
字段
groups[]

object (ManualRuleGroup)

组名称列表以及与每个组名称对应的源数据中的相应项。

ManualRuleGroup

组名称以及应放入此名称组中的来源数据中的项列表。

JSON 表示法
{
  "groupName": {
    object (ExtendedValue)
  },
  "items": [
    {
      object (ExtendedValue)
    }
  ]
}
字段
groupName

object (ExtendedValue)

组名称,必须是字符串。给定 ManualRule 中的每个组都必须具有唯一的组名称。

items[]

object (ExtendedValue)

应放入此组的来源数据中的项。每个项可以是字符串、数字或布尔值。项最多只能出现在给定 ManualRule 内的 1 个组中。未显示在任何组中的内容将单独显示。

HistogramRule

可让您将来源数据列中的数值整理到大小不变的分桶中。HistogramRule.startHistogramRule.end 之间的所有值都放入大小为 HistogramRule.interval 的组中。此外,所有低于 HistogramRule.start 的值都放入一个组,所有高于 HistogramRule.end 的值都放入另一个组。只有 HistogramRule.interval 是必需的,不过如果同时提供了 HistogramRule.startHistogramRule.end,则 HistogramRule.start 必须小于 HistogramRule.end。例如,一个包含 50 多行的数据透视表,按年龄段显示平均购买金额:

+-----+-------------------+
| Age | AVERAGE of Amount |
+-----+-------------------+
| 16  |            $27.13 |
| 17  |             $5.24 |
| 18  |            $20.15 |
...
+-----+-------------------+

可以通过应用直方图分组规则(HistogramRule.start 为 25、HistogramRule.interval 为 20 和 HistogramRule.end 为 65)将其转换为如下所示的转换表。

+-------------+-------------------+
| Grouped Age | AVERAGE of Amount |
+-------------+-------------------+
| < 25        |            $19.34 |
| 25-45       |            $31.43 |
| 45-65       |            $35.87 |
| > 65        |            $27.55 |
+-------------+-------------------+
| Grand Total |            $29.12 |
+-------------+-------------------+
JSON 表示法
{
  "interval": number,
  "start": number,
  "end": number
}
字段
interval

number

创建的存储分区的大小。必须为正值。

start

number

将项放入固定大小的存储分区时所需的最小值。低于 start 的值会归入单个分桶。此字段是可选字段。

end

number

将项放入大小不变的存储分区时的最大值。高于 end 的值会归入一个分桶。此字段是可选字段。

DateTimeRule

让您能够根据日期或时间值的选定部分,将源数据列中的日期时间值整理到多个存储分区中。例如,假设有一个按日期显示销售交易信息的数据透视表:

+----------+--------------+
| Date     | SUM of Sales |
+----------+--------------+
| 1/1/2017 |      $621.14 |
| 2/3/2017 |      $708.84 |
| 5/8/2017 |      $326.84 |
...
+----------+--------------+

应用日期时间组规则(DateTimeRuleType 为 YEAR_MONTH)会生成以下数据透视表。

+--------------+--------------+
| Grouped Date | SUM of Sales |
+--------------+--------------+
| 2017-Jan     |   $53,731.78 |
| 2017-Feb     |   $83,475.32 |
| 2017-Mar     |   $94,385.05 |
...
+--------------+--------------+
JSON 表示法
{
  "type": enum (DateTimeRuleType)
}
字段
type

enum (DateTimeRuleType)

要应用的日期时间分组类型。

DateTimeRuleType

可用的日期时间分组规则类型。本文档假定电子表格的语言区域为“en-US”,但对于某些规则类型,日期和时间的实际呈现会使用电子表格的语言区域。

枚举
DATE_TIME_RULE_TYPE_UNSPECIFIED 默认类型,请勿使用。
SECOND 按秒(从 0 到 59)对日期进行分组。
MINUTE 按分钟(从 0 到 59)对日期进行分组。
HOUR 使用 24 小时制(从 0 到 23)按小时对日期进行分组。
HOUR_MINUTE 使用 24 小时制按小时和分钟对日期进行分组,例如 19:45。
HOUR_MINUTE_AMPM 使用 12 小时制按小时和分钟对日期进行分组,例如晚上 7:45。上午/下午标识会根据电子表格的语言区域进行翻译。
DAY_OF_WEEK 按星期对日期进行分组,例如星期日。星期几将根据电子表格的语言区域进行翻译。
DAY_OF_YEAR 按一年中的日期(从 1 到 366)对日期进行分组。请注意,2 月 29 日之后的日期在闰年和非闰年中的分桶不同。
DAY_OF_MONTH 按日期(从 1 到 31 的日期)对日期进行分组。
DAY_MONTH 按日期和月份对日期进行分组,例如 11 月 22 日。月份会根据电子表格的语言区域进行翻译。
MONTH 按月份对日期进行分组,例如 11 月。月份会根据电子表格的语言区域进行翻译。
QUARTER 按季度对日期进行分组,例如第 1 季度(表示 1 月至 3 月)。
YEAR 按年份对日期进行分组,例如 2008 年。
YEAR_MONTH 按年份和月份对日期进行分组,例如 2008 年 11 月。月份会根据电子表格的语言区域进行翻译。
YEAR_QUARTER 按年份和季度对日期进行分组,例如 2008 第 4 季度。
YEAR_MONTH_DAY 按年、月和日对日期进行分组,例如 2008-11-22。

PivotGroupLimit

数据透视组中行或列的计数限制。

JSON 表示法
{
  "countLimit": integer,
  "applyOrder": integer
}
字段
countLimit

integer

数量限制。

applyOrder

integer

对数据透视表应用组限制的顺序。

数据透视组限制会从较低的顺序号应用到较高的顺序号。订单号会经过归一化处理,变成从 0 开始的连续整数。

对于写入请求,如需完全自定义应用顺序,所有枢轴组限制都应将此字段设置为一个唯一编号。否则,顺序由 PivotTable.rows 列表中的索引决定,然后再由 PivotTable.columns 列表决定。

PivotFilterCriteria

用于显示/隐藏数据透视表中行的条件。

JSON 表示法
{
  "visibleValues": [
    string
  ],
  "condition": {
    object (BooleanCondition)
  },
  "visibleByDefault": boolean
}
字段
visibleValues[]

string

应包含的值。此处未列出的值会被排除。

condition

object (BooleanCondition)

必须为 true 的条件,系统才会显示相应值。(visibleValues 不会替换此设置 - 即使某个值已在其中列出,如果不符合条件,该值仍会隐藏。)

引用 A1 表示法中的范围的条件值将相对于数据透视表工作表进行评估。系统会对引用进行绝对处理,因此不会向下填充数据透视表。例如,“数据透视表 1”的条件值为 =A1 时,系统会将其视为 'Pivot Table 1'!$A$1

您可以通过列标题名称引用数据透视表的来源数据。例如,如果来源数据包含名为“Revenue”(收入)和“Cost”(费用)的列,并且对“Revenue”(收入)列应用了类型为 NUMBER_GREATER 且值为 =Cost 的条件,则仅包含“Revenue”(收入)>“Cost”(费用)的列。

visibleByDefault

boolean

默认情况下值是否可见。如果为 true,系统会忽略 visibleValues,并显示符合 condition(如果已指定)的所有值。如果为 false,则显示同时位于 visibleValues 中且符合 condition 的值。

PivotFilterSpec

与特定来源列偏移相关联的数据透视表过滤条件。

JSON 表示法
{
  "filterCriteria": {
    object (PivotFilterCriteria)
  },

  // Union field source can be only one of the following:
  "columnOffsetIndex": integer,
  "dataSourceColumnReference": {
    object (DataSourceColumnReference)
  }
  // End of list of possible types for union field source.
}
字段
filterCriteria

object (PivotFilterCriteria)

列的条件。

联合字段 source。此过滤条件应用到的来源列。 source只能是以下其中一项:
columnOffsetIndex

integer

源范围的列偏移量(从零开始)。

dataSourceColumnReference

object (DataSourceColumnReference)

对数据源列的引用。

PivotValue

对如何计算数据透视表中的值的定义。

JSON 表示法
{
  "summarizeFunction": enum (PivotValueSummarizeFunction),
  "name": string,
  "calculatedDisplayType": enum (PivotValueCalculatedDisplayType),

  // Union field value can be only one of the following:
  "sourceColumnOffset": integer,
  "formula": string,
  "dataSourceColumnReference": {
    object (DataSourceColumnReference)
  }
  // End of list of possible types for union field value.
}
字段
summarizeFunction

enum (PivotValueSummarizeFunction)

用于汇总值的函数。如果设置了 formula,则唯一支持的值为 SUMCUSTOM。如果设置了 sourceColumnOffset,则不支持 CUSTOM

name

string

要为值使用的名称。

calculatedDisplayType

enum (PivotValueCalculatedDisplayType)

如果指定,则表示应将数据透视表值显示为与其他数据透视表值的计算结果。例如,如果将 calculatedDisplayType 指定为 PERCENT_OF_GRAND_TOTAL,则所有数据透视表值均显示为占总计的百分比。在 Google 表格编辑器中,这在数据透视表的“值”部分中称为“显示为”。

联合字段 value。要用于数据透视表中值的数据。必须设置一个值。 value只能是以下其中一项:
sourceColumnOffset

integer

此值读取的源范围的列偏移量。

例如,如果来源为 C10:E15sourceColumnOffset0 表示此值引用的是 C 列,而偏移量 1 则引用的是 D 列。

formula

string

用于计算值的自定义公式。公式必须以 = 字符开头。

dataSourceColumnReference

object (DataSourceColumnReference)

对此值读取的数据源列的引用。

PivotValueSummarizeFunction

用于汇总数据透视表值的函数。

枚举
PIVOT_STANDARD_VALUE_FUNCTION_UNSPECIFIED 默认值,请勿使用。
SUM 对应于 SUM 函数。
COUNTA 对应于 COUNTA 函数。
COUNT 对应于 COUNT 函数。
COUNTUNIQUE 对应于 COUNTUNIQUE 函数。
AVERAGE 对应于 AVERAGE 函数。
MAX 对应于 MAX 函数。
MIN 对应于 MIN 函数。
MEDIAN 对应于 MEDIAN 函数。
PRODUCT 对应于 PRODUCT 函数。
STDEV 对应于 STDEV 函数。
STDEVP 对应于 STDEVP 函数。
VAR 对应于 VAR 函数。
VARP 对应于 VARP 函数。
CUSTOM 表示应按原样使用公式。仅当已设置 PivotValue.formula 时才有效。
NONE 表示该值已汇总,但未明确指定汇总函数。适用于值已汇总的 Looker 数据源数据透视表。

PivotValueCalculatedDisplayType

用于计算显示的枢轴值的可能方式。

枚举
PIVOT_VALUE_CALCULATED_DISPLAY_TYPE_UNSPECIFIED 默认值,请勿使用。
PERCENT_OF_ROW_TOTAL 以占行总值的百分比显示数据透视表值。
PERCENT_OF_COLUMN_TOTAL 以占列总值的百分比显示数据透视表值。
PERCENT_OF_GRAND_TOTAL 以占总计值的百分比显示数据透视表值。

PivotValueLayout

数据透视值的布局。

枚举
HORIZONTAL 值以水平方式(列)排列。
VERTICAL 值以垂直方式(作为行)排列。