如何在BigQuery中选择包含子字符串的所有列名称?

时间:2018-09-09 10:56:29

标签: sql google-bigquery

我想选择所有列名包含子字符串'age_'的列

 id   gender   age_now   age_graduated
 aa     F        21         25 
 bb     M        34         24

我只想要'age_now'和'age_graduated'列

2 个答案:

答案 0 :(得分:2)

如果您不介意使用某些Python来生成查询:

from google.cloud import bigquery

client = bigquery.Client(project=project_id)
table = client.get_table(
    client.dataset('public_dump', project='fh-bigquery').table('test201602')) 
pattern_cols = [x.name for x in table.schema if x.name.startswith("inferred")]
print ( "SELECT %s\nFROM `%s.%s.%s`" % (
    ','.join(pattern_cols), table.project, table.dataset_id, table.table_id))

enter image description here

答案 1 :(得分:0)

如果您知道前缀不是age_的列,则可以使用SELECT * EXCEPT

SELECT * EXCEPT id, gender
FROM tab;

AFAIK没有类似的语法:

SELECT * LIKE 'age_%'
FROM tab

因此,唯一的解决方案是读取元数据INFORMATION_SCHEMA.COLUMNS表并构建动态SQL查询。