关联工作表

借助关联工作表,您可以直接在 Google 表格中分析数 PB 的数据。您可以将电子表格与 BigQuery 数据仓库或 Looker 相关联,并使用熟悉的 Google 表格工具(例如数据透视表、图表和公式)进行分析。

管理 BigQuery 数据源

本部分将使用 BigQuery Shakespeare 公共数据集来展示如何使用关联工作表。该数据集包含以下信息:

字段 类型 说明
字词 STRING 从语料库中提取的单个唯一字词(空格作为分隔符)。
word_count INTEGER 此字词在此语料库中出现的次数。
corpus STRING 此字词的来源作品。
corpus_date INTEGER 此语料库的发布年份。

如果您的应用请求任何 BigQuery 关联工作表数据,除了常规 Google 表格 API 请求所需的其他范围之外,还必须提供授予 bigquery.readonly 范围的 OAuth 2.0 令牌。如需了解详情,请参阅选择 Google Sheets API 范围

数据源用于指定数据所在的外部位置。然后,将数据源连接到电子表格。

添加 BigQuery 数据源

如需添加数据源,请使用 spreadsheets.batchUpdate 方法提供 AddDataSourceRequest。请求正文应指定类型为 DataSource 对象的 dataSource 字段。

"addDataSource":{
   "dataSource":{
      "spec":{
         "bigQuery":{
            "projectId":"PROJECT_ID",
            "tableSpec":{
               "tableProjectId":"bigquery-public-data",
               "datasetId":"samples",
               "tableId":"shakespeare"
            }
         }
      }
   }
}

PROJECT_ID 替换为有效的 Google Cloud 项目 ID。

创建数据源后,系统会创建关联的 DATA_SOURCE 工作表,以提供最多 500 行的预览。预览功能不会立即推出。系统会异步触发执行,以导入 BigQuery 数据。

AddDataSourceResponse 包含以下字段:

  • dataSource:创建的 DataSource 对象。dataSourceId 是电子表格级范围的唯一 ID。系统会填充并引用该对象,以便从数据源创建每个 DataSource 对象。

  • dataExecutionStatus:将 BigQuery 数据导入预览工作表的执行状态。如需了解详情,请参阅数据执行状态部分。

更新或删除 BigQuery 数据源

使用 spreadsheets.batchUpdate 方法并相应地提供 UpdateDataSourceRequestDeleteDataSourceRequest 请求。

管理 BigQuery 数据源对象

将数据源添加到电子表格后,您可以根据该数据源创建数据源对象。数据源对象是指与关联的 Google 表格集成的常规 Google 表格工具(例如数据透视表、图表和公式),可为您的数据分析提供支持。

对象有四种类型:

  • DataSource 个表
  • DataSource pivotTable
  • DataSource图表
  • DataSource 公式

添加 BigQuery 数据源表

表对象在 Google 表格编辑器中称为“提取内容”,用于将数据源中的静态数据转储导入到 Google 表格中。与数据透视表类似,表格会指定并锚定到左上角单元格。

以下代码示例展示了如何使用 spreadsheets.batchUpdate 方法和 UpdateCellsRequest 创建包含最多 1,000 行和两个列(wordword_count)的数据源表。

"updateCells":{
   "rows":{
      "values":[
         {
            "dataSourceTable":{
               "dataSourceId":"DATA_SOURCE_ID",
               "columns":[
                  {
                     "name":"word"
                  },
                  {
                     "name":"word_count"
                  }
               ],
               "rowLimit":{
                  "value":1000
               },
               "columnSelectionType":"SELECTED"
            }
         }
      ]
   },
   "fields":"dataSourceTable"
}

DATA_SOURCE_ID 替换为用于标识数据源的电子表格级唯一 ID。

创建数据源表后,数据不会立即可用。在 Google 表格编辑器中,它会显示为预览。您需要刷新数据源表才能提取 BigQuery 数据。您可以在同一 batchUpdate 中指定 RefreshDataSourceRequest。请注意,所有数据源对象的工作原理都类似。如需了解详情,请参阅刷新数据源对象

刷新完成并提取 BigQuery 数据后,系统会填充数据源表,如下所示:

数据源表,其中显示了莎士比亚作品公开数据集中的数据。

添加 BigQuery 数据源数据透视表

与传统的数据透视表不同,数据源数据透视表由数据源提供支持,并按列名称引用数据。以下代码示例展示了如何使用 spreadsheets.batchUpdate 方法和 UpdateCellsRequest 创建一个数据透视表,以按语料库显示总字数。

"updateCells":{
   "rows":{
      "values":[
         {
            "pivotTable":{
               "dataSourceId":"DATA_SOURCE_ID",
               "rows":{
                  "dataSourceColumnReference":{
                     "name":"corpus"
                  },
                  "sortOrder":"ASCENDING"
               },
               "values":{
                  "summarizeFunction":"SUM",
                  "dataSourceColumnReference":{
                     "name":"word_count"
                  }
               }
            }
         }
      ]
   },
   "fields":"pivotTable"
    }

DATA_SOURCE_ID 替换为用于标识数据源的电子表格级唯一 ID。

提取 BigQuery 数据后,系统会填充数据源数据透视表,如下所示:

数据源数据透视表,显示莎士比亚公开数据集中的数据。

添加 BigQuery 数据源图表

以下代码示例展示了如何使用 spreadsheets.batchUpdate 方法和 AddChartRequest 创建一个数据源图表,其中 chartType 为 COLUMN,显示每个语料库的总字数。

"addChart":{
   "chart":{
      "spec":{
         "title":"Corpus by word count",
         "basicChart":{
            "chartType":"COLUMN",
            "domains":[
               {
                  "domain":{
                     "columnReference":{
                        "name":"corpus"
                     }
                  }
               }
            ],
            "series":[
               {
                  "series":{
                     "columnReference":{
                        "name":"word_count"
                     },
                     "aggregateType":"SUM"
                  }
               }
            ]
         }
      },
      "dataSourceChartProperties":{
         "dataSourceId":"DATA_SOURCE_ID"
      }
   }
}

DATA_SOURCE_ID 替换为用于标识数据源的电子表格级唯一 ID。

提取 BigQuery 数据后,数据源图表会呈现如下所示:

数据源图表,显示了莎士比亚公开数据集中的数据。

添加 BigQuery 数据源公式

以下代码示例展示了如何使用 spreadsheets.batchUpdate 方法和 UpdateCellsRequest 创建数据源公式来计算平均字数。

"updateCells":{
   "rows":[
      {
         "values":[
            {
               "userEnteredValue":{
                  "formulaValue":"=AVERAGE(shakespeare!word_count)"
               }
            }
         ]
      }
   ],
   "fields":"userEnteredValue"
}

提取 BigQuery 数据后,系统会填充数据源公式,如下所示:

数据源公式,显示了莎士比亚公开数据集中的数据。

刷新 BigQuery 数据源对象

您可以刷新数据源对象,以便根据当前的数据源规范和对象配置从 BigQuery 提取最新数据。您可以使用 spreadsheets.batchUpdate 方法调用 RefreshDataSourceRequest。然后,使用 DataSourceObjectReferences 对象指定要刷新的一个或多个对象引用。

请注意,您可以在单个 batchUpdate 请求中创建和刷新数据源对象。

管理 Looker 数据源

本指南将介绍如何添加 Looker 数据源、更新或删除数据源、基于数据源创建数据透视表以及刷新数据透视表。

请求任何 Looker 关联的 Google 表格数据的应用将重复使用您现有的 Google 账号与 Looker 的关联。

添加 Looker 数据源

如需添加数据源,请使用 spreadsheets.batchUpdate 方法提供 AddDataSourceRequest。请求正文应指定类型为 DataSource 对象的 dataSource 字段。

"addDataSource":{
   "dataSource":{
      "spec":{
         "looker":{
            "instance_uri":"INSTANCE_URI",
            "model":"MODEL",
            "explore":"EXPLORE"
         }
      }
   }
}

INSTANCE_URIMODELEXPLORE 分别替换为有效的 Looker 实例 URI、模型名称和探索名称。

创建数据源后,系统会创建关联的 DATA_SOURCE 工作表,以预览所选探索的结构,包括视图、维度、测量和所有字段说明。

AddDataSourceResponse 包含以下字段:

  • dataSource:创建的 DataSource 对象。dataSourceId 是电子表格级范围的唯一 ID。系统会填充并引用该对象,以便从数据源创建每个 DataSource 对象。

  • dataExecutionStatus:将 BigQuery 数据导入预览工作表的执行状态。如需了解详情,请参阅数据执行状态部分。

更新或删除 Looker 数据源

使用 spreadsheets.batchUpdate 方法并相应地提供 UpdateDataSourceRequestDeleteDataSourceRequest 请求。

管理 Looker 数据源对象

将数据源添加到电子表格后,您可以根据该数据源创建数据源对象。对于 Looker 数据源,您只能通过该数据源创建 DataSourcepivotTable 对象。

您无法使用 Looker 数据源创建 DataSource 公式、提取内容和图表。

刷新 Looker 数据源对象

您可以刷新数据源对象,以便根据当前的数据源规范和对象配置从 Looker 提取最新数据。您可以使用 spreadsheets.batchUpdate 方法调用 RefreshDataSourceRequest。然后,使用 DataSourceObjectReferences 对象指定要刷新的一个或多个对象引用。

请注意,您可以在单个 batchUpdate 请求中创建和刷新数据源对象。

数据执行状态

当您创建数据源或刷新数据源对象时,系统会创建一个后台执行作业,以从 BigQuery 或 Looker 提取数据,并返回包含 DataExecutionStatus 的响应。如果执行成功启动,DataExecutionState 通常处于 RUNNING 状态。

由于该过程是异步的,因此您的应用应实现轮询模型,以定期检索数据源对象的状态。使用 spreadsheets.get 方法,直到状态返回 SUCCEEDEDFAILED 状态。在大多数情况下,执行会快速完成,但具体取决于数据源的复杂性。通常,执行时间不会超过 10 分钟。