在 ADX 中对未分区的 table 进行分区

Partition an unpartitioned table in ADX

我有一个 table 我们没有分区策略。数据根据摄取时间排序。当我查看这个 blob post https://yonileibowitz.github.io/blog-posts/data-partitioning.html#backfill-or-unordered-ingestion 时,我意识到覆盖此策略将解决我现在面临的许多问题。在我的例子中,我有 table 让我们称之为 RAW_INOMING_DATA 它的字段是 T-> 数据包的时间戳,DATA -> 在时间 T 生成的原始数据。现在我需要覆盖分区这个 table 这样我就可以将 T 设为 Ingestion_Time。如何实现?

分区策略的 documentation 具有命令的确切语法。例如:

.alter table [table_name] policy partitioning ```
{
  "PartitionKeys": [
    {
      "ColumnName": "my_string_column",
      "Kind": "Hash",
      "Properties": {
        "Function": "XxHash64",
        "MaxPartitionCount": 128,
        "PartitionAssignmentMode": "Uniform"
      }
    }
  ]
}```

如果您仍然缺少一些信息,请告诉我们。

  • 您的方案的理想解决方案是按相关日期时间 属性 在源中预先分区数据(如果尚未预先分区),然后指定 creationTime 摄取 属性 当你摄取它时。

  • 如果数据已经被提取,您可以设置一个 uniform range datetime partition key,列名是您要作为分区依据的数据的 属性。这将提高在查询时对该日期时间列进行过滤的效率。

    • 如果您还希望根据该列中的值应用保留策略和缓存策略,请将分区键的 overrideCreationTime 属性设置为 true

    • 用于设置此类分区键的 运行 命令示例,如文档中所示:

    .alter table TableName policy partitioning ```{
      "ColumnName": "timestamp",
      "Kind": "UniformRange",
      "Properties": {
        "Reference": "2021-01-01T00:00:00",
        "RangeSize": "7.00:00:00",
        "OverrideCreationTime": false
      }
    }```