是否有一个函数可以让我们查询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
为了返回这样的内容:
+--------+-----+--------+-------+
| fruit | qty | type1 | type2 |
+--------+-----+--------+-------+
| apple | 10 | STRING | INT64 |
| pear | 7 | STRING | INT64 |
| banana | 9 | STRING | INT64 |
+--------+-----+--------+-------+
当然,我的DATA_TYPE()
函数不存在,在the docs中找不到可比的功能
此功能是否存在我缺少的地方?
答案 0 :(得分:0)
您可以将 ....
return JsonResponse({'errors': serializer.errors}, status=500)
定义为BQ视图,然后使用SQL查询
basket
您在select column_name, data_type
from `your_project.your_dataset.INFORMATION_SCHEMA.COLUMNS`
where table_name = 'basket'
order by ordinal_position
列中获得了请求的类型。
我没有找到如何直接从BQ查询(与Java data_type
相似)和AFAIK中获取SQL元数据的任何方法。
从理论上讲,调用BQ查询的BQ客户端可能会更改为通过API调用,获取元数据,获取数据和放置视图来创建视图,但是在许多方面,它很容易出错(需要更强的权限,竞争条件,结算问题)。我没有这样尝试。但是,如果您设法收集所有需要获取其永久视图类型的列,则可以解决您的情况。