azure度量表中行键列中使用的“聚合周期”是什么?

azure度量表中行键列中使用的“聚合周期”是什么?,azure,azure-java-sdk,Azure,Azure Java Sdk,RowKey:采用以下格式:。递减时间刻度计算是最大时间刻度减去聚合周期开始的时间。例如,如果采样期开始于2015年11月10日和UTC 00:00小时,则计算结果将为:DateTime.MaxValue.Ticks-new DateTime2015,11,10,0,0,0,DateTimeKind.UTC.Ticks。对于内存可用字节性能计数器,行键看起来像:2519551871999999999\uuuuuuuuuuuuux0:005CMemory:005CAvailable:0020Byt

RowKey:采用以下格式:。递减时间刻度计算是最大时间刻度减去聚合周期开始的时间。例如,如果采样期开始于2015年11月10日和UTC 00:00小时,则计算结果将为:DateTime.MaxValue.Ticks-new DateTime2015,11,10,0,0,0,DateTimeKind.UTC.Ticks。对于内存可用字节性能计数器,行键看起来像:2519551871999999999\uuuuuuuuuuuuux0:005CMemory:005CAvailable:0020Bytes

所以我对如何生成这个rowkey值感到困惑,因为我不知道聚合周期是什么。尽管滴答声非常相似,但我在最后一分钟或最后一个小时都试过了,但没有成功。

1。聚合期 如果为VM启用诊断,则所有度量数据都将存储在存储帐户表中

聚合周期在表名中。例如:WADMetricsPT1HP10DV2S20190927

PT1H/PT1M:PT1M和PT1H的度量聚合值表示一分钟内的聚合和一小时内的聚合

P10D:这意味着它包含10天的数据

20190927:开始聚合期

2.行键值 正如官方文件中提到的,它遵循以下格式:递减时间刻度计算是最大时间刻度减去聚合期开始的时间

我将在我的表格中选取一条记录作为样本:

RowKey -> :2518363979999999999__:005CProcessor:0020Information:0028:005FTotal:0029:005C:0025:0020User:0020Time
TIMESTAMP -> 2019-08-15T21:00:00.000Z
首先,RowKey值包含一些

因此,可读的行键看起来像:

:2518363979999999999__:\Processor Information(-Total)\% User Time
那么,让我们来谈谈电话号码-2518363979999999999

由于记录来自表WADMetricsPT1HP10DV2S20190808,因此:

在C中,可以得到如下值:

DateTime.MaxValue.Ticks - (new DateTime(2019,08,08,0,0,0,DateTimeKind.Utc).Ticks)
在java中,您可以尝试以下代码:

public class TickTest {

    public static Instant MAX = Instant.parse("9999-12-31T23:59:59.999Z");

    public static long toTicks(Instant start)
    {
        return toTicks(start, MAX);
    }

    public static long toTicks(Instant start, Instant end)
    {
        return Duration.between(start, end).toMillis() * 10000;
    }

    // Test
    public static void main(String[] args) {
        System.out.println(toTicks(Instant.parse("2019-08-08T00:00:00.000Z")));
    }
}

如果这就是row键,那么为什么DB中RowKey的所有数字部分没有相同的值呢?他们都是从同一天开始计算的。同一天?抱歉,每个记录的时间戳与我的表中的其他记录不同。抱歉,澄清一下,您是说RowKey中的数字等于某个常量MaxTicks-表名中日期的刻度数?如果是这样,那么在该表中,每个记录的行键中都会有相同的数字,因为两个记号都是常量。表名WADMetricsPT1HP10DV2S20190927中的20190927是该表聚合周期的开始。但是记录聚合周期的开始是它的时间戳。很抱歉没有解释清楚。稍后将更新它。
public class TickTest {

    public static Instant MAX = Instant.parse("9999-12-31T23:59:59.999Z");

    public static long toTicks(Instant start)
    {
        return toTicks(start, MAX);
    }

    public static long toTicks(Instant start, Instant end)
    {
        return Duration.between(start, end).toMillis() * 10000;
    }

    // Test
    public static void main(String[] args) {
        System.out.println(toTicks(Instant.parse("2019-08-08T00:00:00.000Z")));
    }
}