BigQuery通过查询

时间:2017-10-25 19:07:14

标签: google-bigquery

是否可以通过查询获取BigQuery表架构信息? (类似 TABLES ,但对于架构)。对cli方法不感兴趣。

我想要实现的目标是执行"增量"更新2个BQ表(让我们说分段和生产)与基于1"键"的相同结构。列,但使用自动方式基于所有其他列创建密钥和其余哈希。

在MySQL / mariadb中会是这样的。从information_schema.columns获取特定表的列和字符串agg所有列基于COLUMN_TYPE =" PRI"并保持是关键,然后用字符串聚集所有其他人。这将自动生成一个SQL查询,以便完成剩下的工作。

所以,最初的问题是,是否存在与MySQL information_schema.COLUMNS

相关的内容

3 个答案:

答案 0 :(得分:1)

我可以看到几种方法,尽管它们与MYSQL方法不同 -

  1. 如果 使用query,只需创建一个装饰器来包装带有limit 1子句的查询。虽然您将收取与运行全表扫描相同的费用,但为您提供响应中的架构(请参阅查询作业的documentation)。由于可能产生的费用,这不是最佳方法。
  2. 如果您不与query工作挂钩,为什么不使用tables get方法?它returns一个包含模式的表资源对象

答案 1 :(得分:1)

2021 年更新

现在有可能:

SELECT 
 TO_JSON_STRING(
    ARRAY_AGG(STRUCT( 
      IF(is_nullable = 'YES', 'NULLABLE', 'REQUIRED') AS mode,
      column_name AS name,
      data_type AS type)
    ORDER BY ordinal_position), TRUE) AS schema
FROM
  <YOUR_DATASET>.INFORMATION_SCHEMA.COLUMNS
WHERE
  table_name = <YOUR_TABLE>

答案 2 :(得分:0)

Getting table metadata using INFORMATION_SCHEMA上查看Google文档。 INFORMATION_SCHEMA提供有关BigQuery数据集的元数据。

我相信您需要以下条件:

SELECT * 
FROM `project-id.dataset_name.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS`