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 会导致查询计划中出现嵌套循环