You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何均等拆分Application Insights表数据以规避PowerBI API行限制?

均等拆分Application Insights数据集的KQL方案

核心思路

通过给数据生成连续行号的方式实现均等分片,无需硬编码日期,自动适配不同月份的数据量差异:

  • 按insertDate排序保证分片结果稳定,避免重复或遗漏
  • 动态计算总行数与单分片行数,确保各分片数据量接近均等
  • 基于行号范围过滤出无重叠的数据集

拆分4个数据集的查询

步骤1:先获取总行数(可选,也可在分片查询中动态计算)

// 替换为你的实际表名
your_table_name
| count

分片1(第1-25%数据)

let TotalRows = toscalar(your_table_name | count);
let BatchSize = round(TotalRows / 4);
your_table_name
| order by insertDate asc
| extend RowNumber = row_number()
| where RowNumber between (1 .. BatchSize)
| project-away RowNumber  // 移除行号,保留原数据结构

分片2(第25-50%数据)

let TotalRows = toscalar(your_table_name | count);
let BatchSize = round(TotalRows / 4);
your_table_name
| order by insertDate asc
| extend RowNumber = row_number()
| where RowNumber between (BatchSize + 1 .. BatchSize * 2)
| project-away RowNumber

分片3(第50-75%数据)

let TotalRows = toscalar(your_table_name | count);
let BatchSize = round(TotalRows / 4);
your_table_name
| order by insertDate asc
| extend RowNumber = row_number()
| where RowNumber between (BatchSize * 2 + 1 .. BatchSize * 3)
| project-away RowNumber

分片4(剩余数据)

let TotalRows = toscalar(your_table_name | count);
let BatchSize = round(TotalRows / 4);
your_table_name
| order by insertDate asc
| extend RowNumber = row_number()
| where RowNumber > BatchSize * 3
| project-away RowNumber

拆分5个数据集的查询

仅需调整BatchSize的计算逻辑,其余分片逻辑类似:

分片1示例

let TotalRows = toscalar(your_table_name | count);
let BatchSize = round(TotalRows / 5);
your_table_name
| order by insertDate asc
| extend RowNumber = row_number()
| where RowNumber between (1 .. BatchSize)
| project-away RowNumber

其余分片依次调整行号范围即可,最后一个分片取RowNumber > BatchSize * 4。


示例数据测试

将上述查询中的your_table_name替换为示例表T,即可直接验证分片效果:

let T = datatable(release:string, insertDate:datetime )  
[
"2205", datetime(2022-01-05),
"2205", datetime(2022-01-10),
"2205", datetime(2022-02-10),
"2204", datetime(2022-03-25),
"2203", datetime(2022-04-15),
"2205", datetime(2022-04-12),
"2205", datetime(2022-05-12),
"2206", datetime(2022-06-23),
"2207", datetime(2022-07-27),
"2209", datetime(2022-08-12),
"2201", datetime(2022-09-26),
"2201", datetime(2022-10-08),
];
let TotalRows = toscalar(T | count);
let BatchSize = round(TotalRows / 4);
T
| order by insertDate asc
| extend RowNumber = row_number()
| where RowNumber between (1 .. BatchSize)
| project-away RowNumber

注意事项

  • 排序字段选择insertDate是为了保证每次查询的分片结果一致,若有更合适的有序字段也可替换
  • 动态计算逻辑会自动适配数据量变化,无需手动调整分片范围
  • 在Power BI中,可将每个分片查询作为独立数据源,通过「追加查询」合并为完整数据集

内容的提问来源于stack exchange,提问作者novice8989

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:05:23