查询雪花模式中的所有表

Posted

技术标签:

【中文标题】查询雪花模式中的所有表【英文标题】:Query all tables within a Snowflake Schema 【发布时间】:2020-08-05 14:11:38 【问题描述】:

由于我们数据库的存储方式,我们为产品生命周期内发生的每个重要事件都有表格:

获得 已售出 已交付

我需要在任何给定时间浏览并查找产品的状态。为此,我需要查询架构中的所有表并找到具有最新记录的记录。我知道这可以通过合并所有表然后找到 MAX 时间戳来实现,但我想知道是否有更优雅的解决方案?

是否可以仅通过查询根架构或数据库来查询所有表?有没有办法遍历架构中的所有表并将其替换为 FROM 子句?

感谢任何帮助。

谢谢

【问题讨论】:

【参考方案1】:

您可以编写一个存储过程,但是,IMO,只有在表列表定期更改时才值得付出努力(而且更优雅)。 如果表列表相对固定,那么创建 UNION 语句可能是最优雅的解决方案,而且创建起来也相对简单——如果您打算定期使用它,那么只需将其创建为视图。

我总是处理这类问题(为多个表创建相同的 SQL)的方法是将表列表转储到 Excel 中,使用函数为第一个表生成 SQL 语句,然后将此函数复制到所有表表名称,然后在最终函数中连接所有这些语句。然后,您可以将此文本粘贴回您的 SQL 编辑器中

【讨论】:

是的,我创建了一个 UNION 语句来完成这项工作并获取 MAX 时间戳。表可能会定期更改,因此我将研究存储过程。感谢您回复我! 我支持这一点 - 我也通过将 Excel 单元格与函数连接起来为多个表创建语句来做同样的事情 :)

以上是关于查询雪花模式中的所有表的主要内容,如果未能解决你的问题,请参考以下文章

雪花 ...Alter 表在雪花中的托管模式中不起作用

如何从雪花数据库中的表中删除前 N 条记录

如何从雪花中的数据库模式中检索所有表名

雪花 - 检查模式并返回该模式中的子字符串

我可以根据雪花中的模式名称获取数据库名称吗

如何获取雪花交易中使用的所有查询?