Pivot Tables

数据透视表

数据透视表。

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。

数据透视表元素组

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

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 Mar”,但“Q1”未显示,因为它与之前的行是多余的。将 repeatHeading 设置为 true 会导致在“2 月”和“3 月”重复“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)

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

例如,在包含一个行组和两个列组的数据透视表中,行组最多可以列出两个值。第一个值对应于第一个列组中的值,第二个值对应于第二个列组中的值。如果没有列出任何值,则表示应根据列组的“合计”对行进行排序。如果列出了单个值,则等同于使用该存储分区的“Total”。

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 = '中央',列表项 = ['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.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

将内容放入大小不变的存储分区的最小值。低于起始值的值会被归类到单个存储分区中。此字段是选填字段。

end

number

放置在固定大小的存储分区中的项的最大值。高于结束值的值会被并入单个存储分区中。此字段是选填字段。

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

数据透视表的源数据可通过列标题名称引用。例如,如果源数据中有名为“收入”和“费用”的列,而“收入”列应用了条件为 NUMBER_GREATER 且值为 =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)

对数据源列的引用。

数据透视值

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

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 时有效。

PivotValueCalculatedDisplayType

可计算数据透视值以显示的可能方式。

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

PivotValueLayout

数据透视值的布局。

枚举
HORIZONTAL 值以水平方式(以列的形式)排列。
VERTICAL 值会垂直排列(显示为行)。