架构中所有表的Vertica Dynamic Max时间戳

时间:2016-05-17 16:51:59

标签: sql vertica

系统是HP VERTICA 7.1

我正在尝试创建一个SQL查询,该查询将动态查找特定架构中具有系统表中名为DWH_CREATE_TIMESTAMP的Timestamp列的所有特定表。 (我已成功完成此部分)

然后,将此表列表传递给外部查询或某种循环语句,该语句将从列表中的所有表(200+)中选择MAX(DWH_CREATE_TIMESTAMP)和TABLE_NAME,并将所有结果合并为一个列表

预期输出是一个2列表,其中所有表具有该TS字段和每个值的最大值。表格不断被创建和删除,所以关键是要使所有内容完全动态,而没有任何TABLE_NAME值被硬编码。

任何了解Vertica在没有UDF的情况下实现此目标的方法都将非常感激。

内部查询(工作):

select distinct(table_name)
from columns
where column_name = 'DWH_CREATE_TIMESTAMP'
and table_name in (select DISTINCT(table_name) from all_tables where schema_name = 'PTG_DWH')

外部查询(尝试 - 不工作):

SELECT Max(DWH_CREATE_DATE) from

WITH table_name AS (
                    select distinct(table_name)
                    from columns
                    where column_name = 'DWH_CREATE_DATE' and table_name in (select DISTINCT(table_name) from all_tables where schema_name = 'PTG_DWH'))
SELECT MAX(DWH_CREATE_DATE) 
FROM table_name

感谢!!!

1 个答案:

答案 0 :(得分:0)

无法在一个SQL中执行此操作。 您可以将以下方法用于节点最大时间戳列值

从vs_ros中选择projection.anchor_table_name,vs_ros.colname,max(max_value),vs_ros_min_max_values,storage_containers,投影,其中vs_ros.colname ilike' timestamp'               和vs_ros.salstorageid = storage_containers.sal_storage_id               和vs_ros_min_max_values.rosid = vs_ros.rosid               和storage_containers.projection_name = projections.projection_name               按projection.anchor_table_name,vs_ros.colname

分组