是否可以通过查询获取BigQuery表架构信息? (类似 TABLES ,但对于架构)。对cli方法不感兴趣。
我想要实现的目标是执行"增量"更新2个BQ表(让我们说分段和生产)与基于1"键"的相同结构。列,但使用自动方式基于所有其他列创建密钥和其余哈希。
在MySQL / mariadb中会是这样的。从information_schema.columns获取特定表的列和字符串agg所有列基于COLUMN_TYPE =" PRI"并保持是关键,然后用字符串聚集所有其他人。这将自动生成一个SQL查询,以便完成剩下的工作。
所以,最初的问题是,是否存在与MySQL information_schema.COLUMNS
答案 0 :(得分:1)
我可以看到几种方法,尽管它们与MYSQL方法不同 -
query
,只需创建一个装饰器来包装带有limit 1
子句的查询。虽然您将收取与运行全表扫描相同的费用,但将为您提供响应中的架构(请参阅查询作业的documentation)。由于可能产生的费用,这不是最佳方法。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`