我正试图从这些WADMETRIC表之一中提取数据,但是即使我设置了一个查询来简单地查询数据的最后一分钟,也需要花费数小时才能运行!
无论我使用Java sdk还是从门户网站上的logviewer查询,都会发生这种情况。
我在做什么错?我应该等待这么长时间吗?
任何帮助将不胜感激。
这是我的Java代码。
String connectionString = String.format("DefaultEndpointsProtocol=https;AccountName=%s;AccountKey=%s", "imgoriginalblobs", "lAHAdJcjUcak48lvNwOoC2UztAcqD+hLX/YMdXq/qppQOgeuzQXTDMtYL3jx/oT+a0hxURqlF2Nv9Fza686s8g==");
CloudStorageAccount account = CloudStorageAccount.parse(connectionString);
CloudTableClient cloudTableClient = account.createCloudTableClient();
Calendar myCal = Calendar.getInstance();
Date now = myCal.getTime();
myCal.set(Calendar.MINUTE, Calendar.getInstance().get(Calendar.HOUR) - 1);
Date theDate = myCal.getTime();
String queryString = TableQuery.combineFilters(
TableQuery.combineFilters(TableQuery.generateFilterCondition("Timestamp", TableQuery.QueryComparisons.GREATER_THAN_OR_EQUAL, theDate),
TableQuery.Operators.AND,
TableQuery.generateFilterCondition("CounterName", TableQuery.QueryComparisons.EQUAL, "/builtin/filesystem/freespace")),
TableQuery.Operators.AND,
TableQuery.generateFilterCondition("Timestamp", TableQuery.QueryComparisons.LESS_THAN_OR_EQUAL, now));
TableQuery<TableMetric> query = TableQuery.from(TableMetric.class).where(queryString);
CloudTable table = cloudTableClient.getTableReference("WADMetricsPT1MP10DV2S20191017");
System.out.println(table.exists());
System.out.println(table.getName());
for (TableMetric entity : table.execute(query)) {
extractPartitionKey(entity.getPartitionKey(), entity.getLast(), entity.getCounterName());
}
还有我尝试在最近5分钟内查询数据的屏幕快照,该屏幕截图已经暂停了一个多小时。
答案 0 :(得分:1)
我认为问题是因为您未指定分区密钥。因此,它将对可能存储在多个区域中的所有分区执行查询,这就是花很长时间才能为您提供所需输出的原因。
答案 1 :(得分:0)
通常,在Azure表存储中存储和检索指标存在很多限制。查看Azure Monitor中的自定义指标,看看是否可以满足您的方案和要求。
https://docs.microsoft.com/en-us/azure/azure-monitor/platform/metrics-custom-overview