Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 基于分区表创建动态视图_Sql_Amazon Redshift - Fatal编程技术网

Sql 基于分区表创建动态视图

Sql 基于分区表创建动态视图,sql,amazon-redshift,Sql,Amazon Redshift,我们有一个每月分区表的大型数据库。我需要每月汇总这些表的选择,但我不想每月更新union来添加新的月度表 CREATE VIEW dynamic_view AS SELECT timestamp, traffic FROM traffic_table_m_2017_01 UNION ALL SELECT timestamp, traffic FROM traffic_table_m_2017_02 这是我使用存储过程的地方吗?我对他们不是很熟悉 我认为它还可以

我们有一个每月分区表的大型数据库。我需要每月汇总这些表的选择,但我不想每月更新union来添加新的月度表

CREATE VIEW dynamic_view AS
SELECT timestamp, 
       traffic
FROM traffic_table_m_2017_01
UNION ALL 
SELECT timestamp, 
       traffic
FROM traffic_table_m_2017_02
这是我使用存储过程的地方吗?我对他们不是很熟悉

我认为它还可以起到以下作用:

SELECT timestamp, 
       traffic
FROM REPLACE(REPLACE('traffic_table_m_yyyy_mm', 
                     yyyy, FORMAT(GETDATE(),'yyyy', 'en-us')),
                     mm, FORMAT(GETDATE(),'mm', 'en-us'));

这可能适用于本月,但我需要保存过去几个月的数据,这也是一个问题

您应该在每个表到达一个较大的表时将其追加,然后针对该表运行查询。有很多方法可以做到这一点,但可能最快和最优雅的是使用。 ALTER TABLE APPEND
此处的说明

您的第一个调用端口应该是使用aws红移功能,如分发和排序键,而不是表分区,您尝试过吗。Redshift不支持/处理分区,并且不适合使用视图对分区结构进行黑客攻击。您可能会发现您没有获得预期的性能。谢谢@JonScott,我不熟悉分发和排序键。我会调查的。这是一项仅每周或每月运行的作业,因此性能并不重要。将相同的数据移动到一个新的数据库将需要一个广泛的etl过程,我正试图避免这个过程。您使用的是红移,对吗?在红移范围内每月移动一次数据将非常快。是的,它是红移。出于某种原因,我们只有这个特定用例所需的汇总表。通常,我会使用聚合表,这将解决这个问题。如果您知道月数的范围,那么您可以生成一个动态SQL并执行它