Вы можете использовать ITelemetryInitializer для этого.
Способ 1:
Вы можете определить пользовательское свойство, в котором вы можете определить пользовательскую метку времени, вместо того, чтобы напрямую изменять метку времени:
Если вы используете этот метод, в вашем пользовательском классе, который реализует ITelemetryInitializer, код, как показано ниже:
public class MyTelemetryInitializer : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
DateTimeOffset dateTimeOffset = new DateTimeOffset(new DateTime(2020, 1, 10));
//define a custom property, which is a date time
telemetry.Context.GlobalProperties["Custom_timestamp"] = dateTimeOffset.ToString();
}
}
После выполнения кода вы увидите, что это свойство добавляется к каждым данным телеметрии на портале Azure:
![введите здесь описание изображения](https://i.stack.imgur.com/MKioe.png)
Когда вы создаете свой запрос для создания графика, вы можете использовать это пользовательское свойство (Примечание: это свойство имеет строковый тип, поэтому вы можете использовать встроенную функцию todatetime()
для преобразования его в тип даты и времени) вместо использования метки времени.
Способ 2:
Этот метод пытается напрямую изменить метку времени. Я вижу, что временная метка изменяется локально, она не отправляется в аналитику приложений. Итак, в настоящее время я предлагаю вам использовать метод 1.
Код, как показано ниже:
public class MyTelemetryInitializer : ITelemetryInitializer
{
public void Initialize(ITelemetry telemetry)
{
//try to directly change the Timestamp, it changes successfully in local(in visual studio), but it does not send to application insights.
telemetry.Timestamp = new DateTimeOffset(new DateTime(2020, 1, 10));
}
}
person
Ivan Yang
schedule
23.01.2020