【问题标题】:Select different column names when loop thru snowflake tables from Python从 Python 循环遍历雪花表时选择不同的列名
【发布时间】:2022-01-15 07:48:38
【问题描述】:

我有一个 .py 脚本,它循环通过几个 ids 并从每个表中提取列。

for i in range(len(ids)): 
    sql='select col1, col2 from table_{}'.format(ids[i])
    df = pd.read_sql(sql, snowflake_connection)

但是,我坚持的是,并非所有表都有col2。例如,如果只有 table_01col2table_02 没有,那么上面的脚本会出错。有没有一种简单的方法可以告诉雪花如果col2 存在,然后拉它,否则只需创建一个名为col2 的列并用NULLs 填充它?

【问题讨论】:

  • 为什么不使用 try except 块?
  • @D4NieLDev 使用 try except 获取sql compilation error

标签: python sql snowflake-cloud-data-platform


【解决方案1】:

我们可以在python中编写一个函数来从表中提取列,作为表名作为参数传递,并在函数中使用下面的代码来提取逗号分隔值并返回函数调用。所以它会动态列列表,你可以应用在你的 sql 中。

Select listagg(column_name, ', ') within group (ORDER BY column_name) cols_lst from information_schema.columns  ref_cols where ref_cols.table_name='TEST' ;

【讨论】:

    猜你喜欢
    • 2017-08-31
    • 2019-06-27
    • 2018-10-26
    • 2019-04-15
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    相关资源
    最近更新 更多