【问题标题】:Snowflake sql table name wildcard雪花sql表名通配符
【发布时间】:2020-10-23 17:14:38
【问题描述】:

当雪花sql中事先不知道表列表时,一次从多个表中“选择”的好方法是什么? 模拟的东西

Select * from mytable*

会得到与

相同的结果
Select * from mytable_1
union
Select * from mytable_2 
...

我尝试在多步骤中执行此操作。

show tables like 'mytable%';
set mytablevar =
 (select  listagg("name", ' union ') table_
    from table(result_scan(last_query_id())))

想法是在后续查询中使用变量mytablevar来存储所有表的并集,但是由于表的列表非常大,变量大小超过了256的大小限制。

【问题讨论】:

    标签: sql snowflake-cloud-data-platform


    【解决方案1】:

    即使您没有达到 256 个字符的限制,查询所有这些表也无济于事。您将如何使用该会话变量?

    如果您有多个结构相同的表,并且保存了需要一起查询的相似数据,为什么这些数据不在一个大表中?您可以使用 Snowflake 的集群功能将基于特定列的数据分发到您的微分区。

    https://docs.snowflake.com/en/user-guide/tables-clustering-micropartitions.html

    无论如何,您可以创建一个存储过程来创建/替换视图。

    https://docs.snowflake.com/en/sql-reference/stored-procedures-usage.html#dynamically-creating-a-sql-statement

    然后您可以查询该视图:

    CALL UPDATE_MY_VIEW( 'myview_name', 'table%' );
    SELECT * FROM myview_name;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      相关资源
      最近更新 更多