是否有一个函数可以让我们查询 BigQuery 中列的数据类型?
我想找到这样的东西:
WITH basket AS
(SELECT "apple" AS fruit, 10 AS qty
UNION ALL SELECT "pear" AS fruit, 7 AS qty
UNION ALL SELECT "banana" AS fruit, 9 AS qty)
-- !!this doesn't work!!:
SELECT
fruit,
qty,
DATA_TYPE(fruit) AS type1,
DATA_TYPE(qty) AS type2
FROM basket
Run Code Online (Sandbox Code Playgroud)
为了返回这样的东西:
+--------+-----+--------+-------+
| fruit | qty | type1 | type2 |
+--------+-----+--------+-------+
| apple | 10 | STRING | INT64 |
| pear | 7 | STRING | INT64 |
| banana | 9 | STRING | INT64 |
+--------+-----+--------+-------+
Run Code Online (Sandbox Code Playgroud)
当然,我的函数不存在,我在文档DATA_TYPE()中找不到任何类似的东西
这个功能是否存在于我所缺少的地方?
Tom*_*ský 13
您可以定义basket为BQ视图,然后使用SQL查询
select column_name, data_type
from `your_project.your_dataset.INFORMATION_SCHEMA.COLUMNS`
where table_name = 'basket'
order by ordinal_position
Run Code Online (Sandbox Code Playgroud)
您在列中获得请求的类型data_type。
我没有找到任何方法如何直接从 BQ 查询(类似于 Java ResultSet.getMetaData().getColumnTypeName())获取 SQL 元数据,据我所知这是不可能的。
理论上,调用 BQ 查询的 BQ 客户端可能会更改为通过 API 调用创建视图、获取元数据、获取数据和删除视图,但它在很多方面都容易出错(需要更强的权限、竞争条件、计费问题) 。我没有尝试这种方式。但是,如果您设法收集需要获取永久视图类型的所有列,那么它可能是您的情况的解决方案。
| 归档时间: |
|
| 查看次数: |
35490 次 |
| 最近记录: |