【问题标题】:How to find the range values for a partition in Azure Synapse dedicated SQL pool如何在 Azure Synapse 专用 SQL 池中查找分区的范围值
【发布时间】:2022-01-11 20:30:17
【问题描述】:

我在 Azure Synapse 专用 SQL 池中有一个 dbo.Test_Partitioned 表,该表在 TEST_SEQ 列上进行范围右分区。

我正在尝试为将来的数据自动执行分区创建过程。如果最后一个分区超过 2 亿条记录,我们将其拆分。为此,我计划使用 CTAS 创建一个新表来保存数据(以清空分区),然后拆分,最后将数据切换回。

我能够找到最后一个分区号,但是有没有办法找到使用查询创建最后一个分区的范围值。我需要在之前的范围拆分值中添加一个区间值来进行拆分。

提前致谢。

【问题讨论】:

    标签: sql-server azure partitioning azure-synapse


    【解决方案1】:

    经过进一步研究,我得到了结果。

    SELECT 
    t.name AS TableName, 
    i.name AS IndexName, 
    p.partition_number,
    p.partition_id,
    f.type_desc,
    c.name AS PartitioningColumnName,
    CONVERT(nvarchar(255), r.value) as boundary
    FROM sys.tables AS t
    JOIN sys.indexes AS i
        ON t.object_id = i.object_id
    JOIN sys.partitions AS p
        ON i.object_id = p.object_id AND i.index_id = p.index_id
    JOIN  sys.partition_schemes AS s
        ON i.data_space_id = s.data_space_id
    JOIN sys.partition_functions AS f
        ON s.function_id = f.function_id
    LEFT JOIN sys.partition_range_values AS r
        ON f.function_id = r.function_id and r.boundary_id = p.partition_number
    JOIN sys.index_columns AS ic
        ON ic.object_id = i.object_id
        AND ic.index_id = i.index_id AND ic.partition_ordinal > 0
    JOIN sys.columns AS c
        ON t.object_id = c.object_id
    WHERE t.name = @table
        AND c.column_id = ic.column_id
    ORDER BY p.partition_number;
    

    【讨论】:

      猜你喜欢
      • 2021-12-27
      • 2021-10-11
      • 2021-12-25
      • 2021-10-13
      • 2022-10-04
      • 2021-06-06
      • 2021-12-01
      • 2021-10-19
      • 2022-06-28
      相关资源
      最近更新 更多