Redshift。用一个共同的列来查询所有的表格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redshift。用一个共同的列来查询所有的表格相关的知识,希望对你有一定的参考价值。

我正试图在Redshift中创建一个视图,以使我们能够看到每个表中的最新数据.我们的数据集更新了各种时间表,每个表都有一列 "已更新",其中包含了行的最后更新日期。

我想实现的是在底部的视图(从这两个例子表)。

other.bigtable
+-----+--------+------------------+
| id  |  stat  |     updated      |
+-----+--------+------------------+
| A2  | rgerhg | 03/05/2020 05:00 |
| F5  | bdfb   | 03/05/2020 05:00 |
| GF5 | bb     | 03/05/2020 05:00 |
+-----+--------+------------------+
default.test
+----+------+------------------+
| id | name |     updated      |
+----+------+------------------+
|  1 | A    | 02/02/2008 00:00 |
|  2 | B    | 02/02/2008 00:00 |
|  3 | C    | 02/02/2008 00:00 |
|  4 | F    | 02/02/2008 00:00 |
|  5 | T    | 02/02/2010 00:00 |
+----+------+------------------+
default.view_updates
+---------+------------+------------------+
| schema  | table_name |    max_update    |
+---------+------------+------------------+
| default | test       | 02/02/2010 00:00 |
| other   | big_table  | 03/05/2020 05:00 |
+---------+------------+------------------+

到目前为止,我已经得到了表和模式,但不知道从哪里开始做日期。Redshift似乎更有局限性。

EDIT:

利用从网上偷来的一些代码,我希望用这个来创建额外列的表。

    select t.table_schema,
        t.table_name
    from information_schema.tables t
    inner join information_schema.columns c 
        on c.table_name = t.table_name 
        and c.table_schema = t.table_schema
    where c.column_name = 'updated'
        and t.table_schema not in ('information_schema', 'pg_catalog')
        and t.table_type = 'BASE TABLE'
    order by t.table_schema;

[资料来源: https: /dataedo: https:/dataedo.comkbqueryamazonredshiftfind-tables-with specific-column-name] 。

答案

你可以从每个表中选择最近的日期,并联合在一起(如果你喜欢的话,可以放在一个视图中)。

Select * from (select top 1 'test', updated from test order by updated desc)union allSelect * from (select top 1 'big_table', updated from big_table order by updated desc)。

你可以有一个长长的 "union all "列表,直到某个限制。 这是将表硬编码到视图中--我想这就是你要找的。

以上是关于Redshift。用一个共同的列来查询所有的表格的主要内容,如果未能解决你的问题,请参考以下文章

在 Redshift 中取消嵌套 json 会导致查询计划中出现嵌套循环

mysql使用sum的列来获取每个组的总金额

如何在单独的列中添加排序列名称,而不是在下拉列表中选择列来对表进行排序?

布尔记录的查询效率

SqlServer如何查询表的列数

获取用户会话列表 SQL Redshift