You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从BigQuery表中提取全量列名及唯一列名列表

实现方案

优先推荐使用单次元数据查询实现,性能远高于循环逐表查询,可同时满足两个查询需求:

第一步:拉取全量表+列映射元数据

%%bigquery --project ProjectID col_meta_df
SELECT 
  table_name, 
  column_name 
FROM tenjin.INFORMATION_SCHEMA.COLUMNS
ORDER BY table_name, ordinal_position

第二步:输出两类结果

1. 所有表各自的列名列表

# 构造表-列映射字典
table_col_map = {}
for _, row in col_meta_df.iterrows():
    if row['table_name'] not in table_col_map:
        table_col_map[row['table_name']] = []
    table_col_map[row['table_name']].append(row['column_name'])

# 打印结果
for table, cols in table_col_map.items():
    print(f"表名:{table}")
    print(f"列名列表:{cols}\n")

2. 全量唯一列名列表

unique_cols = sorted(col_meta_df['column_name'].unique().tolist())
print("全量唯一列名列表:", unique_cols)

循环逐表查询实现(适配你原有框架)

如果需要沿用你已有的循环框架,可以参考如下代码:

table_col_map = {}
all_unique_cols = set()

for table in all_tables:
    # 单表列名查询
    query = f"""
        SELECT column_name
        FROM tenjin.INFORMATION_SCHEMA.COLUMNS
        WHERE table_name = '{table}'
        ORDER BY ordinal_position
    """
    # 执行BigQuery查询
    %bigquery --project ProjectID col_df --query query
    current_cols = col_df['column_name'].tolist()
    # 存入表映射
    table_col_map[table] = current_cols
    # 加入全局去重集合
    all_unique_cols.update(current_cols)

# 输出所有表列名
print("===== 各表列名列表 =====")
for table, cols in table_col_map.items():
    print(f"{table}:{cols}")

# 输出全量唯一列名
print("\n===== 全量唯一列名列表 =====")
print(sorted(list(all_unique_cols)))

内容的提问来源于stack exchange,提问作者vish community

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:54:02