小编典典

查询GBQ中的列标题

sql

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

谢谢


阅读 64

收藏
2021-04-28

共1个答案

小编典典

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

#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

结果将是

Row cols_as_array           cols_as_string   
1   region_code             region_code,division_code,state_fips_code,state_gnis_code,state_geo_id,state_abbreviation,state_name,legal_area_code,feature_class_code,functional_status_code,area_land_meters,area_water_meters,internal_point_lat,internal_point_lon,state_geom   
    division_code        
    state_fips_code      
    state_gnis_code      
    state_geo_id         
    state_abbreviation       
    state_name       
    legal_area_code      
    feature_class_code       
    functional_status_code       
    area_land_meters         
    area_water_meters        
    internal_point_lat       
    internal_point_lon       
    state_geom

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

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

2021-04-28