0

向外部表定义添加 pertition 对分区查询没有帮助。

Blob 路径示例

  • /data/1234/2021/12/02/9483D.parquet
  • /data/1235/2021/12/02/12345.parquet

分区(伪语法不是真正的):'/data/'uniqueid'/yyyy/MM/dd/'

所以存储路径中只有两个 uniqueids 值。路径中不同日期的文件总数约为 100 万

所以我将 2 个分区定义为虚拟列:

  1. 唯一身份
  2. 约会时间

对 uniqueid 执行查询,例如: table | summarize by uniqueid 出于某种原因遍历 blob 存储中的所有文件。

由于 uniqueid 是一个分区并且作为虚拟列,查询不应该超级快,因为我们在路径中只有 2 个值吗?我完全错过了分区的意义吗?

编辑添加样本:

.create external table ['sensordata'] (['timestamp']:long,['value']:real)
    kind = adl
partition by (['uniqueid']:string ,['datecreated']:datetime )
pathformat = (['uniqueid']  '/' datetime_pattern("yyyy/MM/dd", ['daterecorded']))
    dataformat = parquet
    (
        h@'abfss://XXXXXX@YYYYYYYY.dfs.core.windows.net/histdata;impersonate'
    )
    with (FileExtension='.parquet')

查询样本:

sensordata
| summarize by uniqueid
4

1 回答 1

0

感谢您的意见,@user998888。

我们对分区外部表进行了许多优化,并且我们投入了大量精力来添加越来越多的优化。但是我们仍然没有像您提供的那样优化查询类型。它在我们的名单上。

于 2022-02-28T14:05:42.553 回答