向外部表定义添加 pertition 对分区查询没有帮助。
Blob 路径示例
- /data/1234/2021/12/02/9483D.parquet
- /data/1235/2021/12/02/12345.parquet
分区(伪语法不是真正的):'/data/'uniqueid'/yyyy/MM/dd/'
所以存储路径中只有两个 uniqueids 值。路径中不同日期的文件总数约为 100 万
所以我将 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