Вы можете использовать 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:
При создании запроса для создания графика вы можете использовать это пользовательское свойство ( Примечание : это свойство является строковым типом, поэтому вы можете использовать встроенную функцию 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));
}
}