在GBQ中查询列标题

时间:2018-12-13 19:36:06

标签: sql google-bigquery

是否可以通过查询为我提供带有特定表的列标题的输出?我正在通过GBQ将多个文件上传到我们的服务器中,虽然它会自动检测标头,但我想以行或逗号分隔的单元格列出标头。

谢谢

1 个答案:

答案 0 :(得分:1)

我假设您的文件为CSV格式,所以表的架构中没有重复的字段。考虑到这一点-以下是适用于BigQuery Standard SQL的查询,只需要完全限定的表名

<input type="file" id="datafile">

如果要应用于某些实际表,如下面的示例

#standardSQL
SELECT 
  REGEXP_EXTRACT_ALL(TO_JSON_STRING(t), r'"(.+?)"') cols_as_array,
  ARRAY_TO_STRING(REGEXP_EXTRACT_ALL(TO_JSON_STRING(t), r'"(.+?)"'), ',') cols_as_string
FROM (SELECT 1) LEFT JOIN 
  (SELECT * FROM `project.dataset.table` WHERE FALSE) t
ON TRUE  

结果将是

#standardSQL
SELECT 
  REGEXP_EXTRACT_ALL(TO_JSON_STRING(t), r'"(.+?)"') cols_as_array,
  ARRAY_TO_STRING(REGEXP_EXTRACT_ALL(TO_JSON_STRING(t), r'"(.+?)"'), ',') cols_as_string
FROM (SELECT 1) LEFT JOIN 
  (SELECT * FROM `bigquery-public-data.utility_us.us_states_area` WHERE FALSE) t
ON TRUE  

您可以选择使用哪个版本:以数组形式列出或以逗号分隔的字符串形式列出

还请注意,以上查询完全不会产生任何费用!