El filtro DateTime Json de Power BI Embedded se traduce a UTC + 10

Un usuario Pregunto ✅

speedyspeedstar

He importado algunas fechas y horas de SQL Server, por ejemplo

2016-12-07 00: 00: 00.000
2016-06-08 00: 00: 00.000
2016-01-20 00: 00: 00.000

La importación funciona bien y en Power BI Desktop / servicio puedo ver que los datos no están modificados.

He incrustado este informe en una aplicación MVC y paso un filtro construido como tal

[{
$schema:"http://powerbi.com/product/schema#advanced",
target:{table:"ReportingClientActivityReport",column:"InvoiceDate"},
logicalOperator:"And",
conditions:
[{operator:"LessThanOrEqual",value:"2017-10-22 00:00:00Z"},
{operator:"GreaterThanOrEqual",value:"2017-10-16 00:00:00Z"}]
}]

Pongo este filtro en un iframe incrustado y luego lo paso a Power BI y, en algún momento, Power BI ha considerado adecuado traducir mi filtro a UTC + 10 (obtengo 2017-10-22 10: 00: 00Z y 2017-10 -16 10: 00: 00Z) Es muy probable que esto se deba a que el servidor que está incrustando el informe está en Brisbane (UTC + 10)

¿Hay alguna manera de que Power BI reconozca mi fecha y hora como si ya se hubiera traducido a la zona horaria?

En respuesta a speedyspeedstar


@speedyspeedstar escribió:

Mis datos se importan de SQL con datos de fecha / hora, es decir

2016-12-07 00: 00: 00.000
2016-06-08 00: 00: 00.000
2016-01-20 00: 00: 00.000

y Power BI Desktop y el servicio lo interpretan correctamente.

Inserto el informe en una aplicación de aplicación MVC y construyo este filtro:

[
{$schema:"http://powerbi.com/product/schema#advanced",
target {table:"ReportingClientActivityReport",column:"InvoiceDate"},
logicalOperator:"And",
conditions:
[{operator:"LessThanOrEqual",value:"2017-10-22 00:00:00Z"},
{operator:"GreaterThanOrEqual",value:"2017-10-16 00:00:00Z"}]} ]

Puse este filtro en el objeto json para el iframe incrustado de Power BI, pero cuando mi informe incrustado regresa, se filtra a UTC + 10 (el servidor está en Brisbane)

¿Cómo me comunico en el filtro que quiero este DateTime en particular sin compensación?


@speedyspeedstar

El formato de fecha y hora seguido de «Z» indica un formato UTC, según mi prueba, para obtener la fecha y hora local del servidor, simplemente elimine la «Z» final.

[
{$schema:"http://powerbi.com/product/schema#advanced",
target {table:"ReportingClientActivityReport",column:"InvoiceDate"},
logicalOperator:"And",
conditions:
[{operator:"LessThanOrEqual",value:"2017-10-22 00:00:00"},
{operator:"GreaterThanOrEqual",value:"2017-10-16 00:00:00"}]}
]

Ver mi prueba sin VS con una «Z» final

Capture.PNG

speedyspeedstar

[Removed duplicate post]

En respuesta a speedyspeedstar


@speedyspeedstar escribió:

Mis datos se importan de SQL con datos de fecha / hora, es decir

2016-12-07 00: 00: 00.000
2016-06-08 00: 00: 00.000
2016-01-20 00: 00: 00.000

y Power BI Desktop y el servicio lo interpretan correctamente.

Inserto el informe en una aplicación de aplicación MVC y construyo este filtro:

[
{$schema:"http://powerbi.com/product/schema#advanced",
target {table:"ReportingClientActivityReport",column:"InvoiceDate"},
logicalOperator:"And",
conditions:
[{operator:"LessThanOrEqual",value:"2017-10-22 00:00:00Z"},
{operator:"GreaterThanOrEqual",value:"2017-10-16 00:00:00Z"}]} ]

Puse este filtro en el objeto json para el iframe incrustado de Power BI, pero cuando mi informe incrustado regresa, se filtra a UTC + 10 (el servidor está en Brisbane)

¿Cómo me comunico en el filtro que quiero este DateTime en particular sin compensación?


@speedyspeedstar

El formato de fecha y hora seguido de «Z» indica un formato UTC, según mi prueba, para obtener la fecha y hora local del servidor, simplemente elimine la «Z» final.

[
{$schema:"http://powerbi.com/product/schema#advanced",
target {table:"ReportingClientActivityReport",column:"InvoiceDate"},
logicalOperator:"And",
conditions:
[{operator:"LessThanOrEqual",value:"2017-10-22 00:00:00"},
{operator:"GreaterThanOrEqual",value:"2017-10-16 00:00:00"}]}
]

Ver mi prueba sin VS con una «Z» final

Capture.PNG

speedyspeedstar

En respuesta a Eric_Zhang

Impresionante, lo intentaré mañana y te haré saber cómo te va 🙂

editar: ¡Funciona muy bien! Para desarrolladores de C # con el mismo problema, puede usar

        public static string ToPowerBIDate(this DateTime src)
        {
            return src.ToString("s");
        }

como un método de extensión para obtener la hora local, si desea UTC, simplemente transforme src con ToUniversalTime () y luego ToString («u»)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *