BigQuery-可以查询列数据类型

时间:2018-07-10 09:54:51

标签: google-bigquery

是否有一个函数可以让我们查询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中找不到可比的功能

此功能是否存在我缺少的地方?

1 个答案:

答案 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调用,获取元数据,获取数据和放置视图来创建视图,但是在许多方面,它很容易出错(需要更强的权限,竞争条件,结算问题)。我没有这样尝试。但是,如果您设法收集所有需要获取其永久视图类型的列,则可以解决您的情况。