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。这仅对行分组有效,会被列忽略。

默认情况下,我们会尽量减少标题的重复,如果标题相同,则不显示更高级别的标题。例如,即使下面的第三行对应于“Q1 3 月”,但“Q1”却未显示,因为它与前几行重复。如果将 repeatHeadings 设置为 true,会导致“Feb”和“Mar”重复出现“Q1”。

+--------------+
| 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:E15,则 sourceColumnOffset0 表示该组引用了 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

允许您手动将源数据列中的值整理到使用所选名称的存储分区中。例如,按州汇总人口的数据透视表:

+-------+-------------------+
| 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 的一个组中。未出现在任何分组中的项会单独显示。

HistogramRule

允许您将源数据列中的数值整理到常量大小的存储分区中。从 HistogramRule.startHistogramRule.end 的所有值都会被归类到大小为 HistogramRule.interval 的组中。此外,HistogramRule.start 下的所有值都会放在一个组中,HistogramRule.end 以上的所有值会放在另一个组中。只有 HistogramRule.interval 是必需的,但如果同时提供了 HistogramRule.startHistogramRule.endHistogramRule.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

项被放入恒定大小的存储分区中的最小值。以下起始值将归入一个存储分区。此字段是选填字段。

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。系统会根据电子表格的语言区域翻译 AM/PM 字样。
DAY_OF_WEEK 按星期几(例如星期日)对日期进行分组。星期几会根据电子表格的语言区域进行翻译。
DAY_OF_YEAR 按一年中的第几天对日期进行分组,范围为 1 到 366。请注意,2 月 29 日之后的日期在闰年的分桶中与非闰年的分桶不同。
DAY_OF_MONTH 按一个月中的第几天对日期进行分组,范围为 1 到 31。
DAY_MONTH 按日期和月份对日期进行分组,例如 22 至 11 月。月份根据电子表格的语言区域进行翻译。
MONTH 按月对日期进行分组,例如 11 月。月份根据电子表格的语言区域进行翻译。
QUARTER 按季度对日期进行分组,例如 Q1(表示 1 月到 3 月)。
YEAR 按年份对日期进行分组,例如 2008。
YEAR_MONTH 按年份和月份对日期进行分组,例如 2008-11。月份根据电子表格的语言区域进行翻译。
YEAR_QUARTER 按年份和季度对日期进行分组,例如 2008 Q4。
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”的列,并且对类型为 NUMBER_GREATER 且值为 =Cost 的“Revenue”列应用条件,则只有“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)

如果指定,则表示数据透视值应作为使用另一个数据透视值的计算结果来显示。例如,如果 computeDisplayType 指定为 PERCENT_OF_GRAND_TOTAL,则所有数据透视值都会显示为占总计的百分比。在表格编辑器中,这在数据透视表的值部分称为“显示为”。

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

integer

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

例如,如果来源为 C10:E15,则 sourceColumnOffset0 表示此值引用列 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 值垂直排列(作为行)。