Promedio de la pregunta
Hola, mi fuente de datos es una tabla SQL que contiene la columna DateTimeOffset, necesito que la fecha y hora almacenada allí se muestre en el informe como una fecha y hora convertida utilizando el desplazamiento de la zona horaria almacenado en la columna de otra tabla, ¿cómo lo hago? ¿ese? O, para simplificar la pregunta: ¿cómo aplico cualquier conversión de fecha y hora a la fecha y hora almacenada en la columna de una tabla mientras se muestra en el informe?
Soy un novato completo en Power BI, por favor dame una dirección.
ImkeF
Eche un vistazo a DateTime.AddZone.
O las otras funciones Date.Time en M.
Si esto no ayuda, publique imágenes / ejemplos de sus datos, ya que no me queda tan claro cuál es su requisito exacto.
Promedio de la pregunta
En respuesta a ImkeF
Gracias, ¿qué / dónde hago para insertar ese código? Actualmente estoy usando Power BI Desktop, hice clic en Obtener datos y luego especifiqué SQL Server, luego proporcioné información de conexión e importé la tabla que me interesaba. El usuario de mi tabla consta de pocas columnas:
- CreatedDate (los datos de esta columna almacenados en UTC).
- InternalIdentifier (cadena – valor único por fila)
- Tipo (contiene pocos valores posibles de tipo TINYINT)
Quiero ver un gráfico que muestre la distribución de los usuarios en el tiempo (teniendo en cuenta el tipo) donde el tiempo se convertirá en un cierto desplazamiento.
En mi Power BI Desktop vi la tabla (Usuario) que importé y sus campos, así que hice clic derecho sobre CreatedDate pero no pude encontrar nada que me permitiera poner cualquier código / script que cambiara el formato.
Haga clic derecho sobre la columna CreatedDate
¿Puede explicarme brevemente y / o señalarme la documentación que mostraría dónde está ese punto de «conexión» que me permite agregar código / script para que esté asociado con las columnas de la base de datos que se muestran en el informe?
Una pregunta más relacionada: ¿se supone que debo usar solo Power Query o también es posible usar lenguajes .NET?
ImkeF
En respuesta a Promedio de la pregunta
Entonces solo tenemos una tabla: usuario. ¿Derecha?
¿De dónde viene ese valor de compensación?
¿Otra columna o es un valor fijo o algunos valores condicionales?
¡Las imágenes de datos o el modelo de datos ayudarían!
Antes: …
Después: …
Promedio de la pregunta
En respuesta a ImkeF
La tabla User contiene varias filas que deben mostrarse en un gráfico.
El desplazamiento se almacena en otra tabla [Settings] en la columna TimeZoneOffset
Lo que me gustaría saber es el lugar donde podría insertar Power Query para transformar mis datos, ¿pueden ayudarme con eso?
ImkeF
En respuesta a Promedio de la pregunta
En el editor de consultas.
Edite su primera tabla y «busque» los datos de su tabla de configuración fusionándola.
Luego agregue una columna personalizada que sume / reste los valores.
Promedio de la pregunta
En respuesta a ImkeF
Gracias, ¿qué es Power Query equivalente a .NET TimeZoneInfo?.FindSystemTimeZoneById? Mi tabla de configuración almacena información de zona horaria mediante el uso de ID estándar, como la hora estándar del Pacífico y necesito convertir los valores en mi columna DateTimeOffset a la zona horaria almacenada en la tabla de configuración, así es como lo hago en C #:
TimeSpan timeZoneOffsetSpan = TimeZoneInfo.FindSystemTimeZoneById(settings.TimeZone).GetUtcOffset(UserCreatedDateTime);
Esto me da una diferencia entre la hora en la zona horaria almacenada en mi tabla de Configuración y UTC para UserCreatedDateTime. Y estoy ejecutando esa línea del código solo una vez para todas las filas en mi tabla de Usuario porque el propósito del código anterior es averiguar el desplazamiento actual teniendo en cuenta las características de la zona horaria como DayLightSaving.
Y ahora puedo simplemente agregar ese desplazamiento (que podría ser positivo o negativo) contra cada valor en mi columna User.CreateDateTime, en C # lo estoy haciendo usando DateTimeOffset.Para compensar:
DateTimeOffset convertedOffset = UserCreatedDateTime.ToOffset(timeZoneOffsetSpan)
Así que necesito poder hacer las mismas conversiones en mi informe de Power BI, pero no pude encontrar ninguna función de Power Query que pueda hacer lo mismo que TimeZoneInfo.FindSystemTimeZoneById lo hace, si esa función existiera cubriría mi primera línea de código C # y luego necesitaría encontrar un equivalente a TimeZoneInfo.FindSystemTimeZoneById. DateTimeZone.SwitchZone es probablemente lo que necesito, pero primero necesito saber el desplazamiento correspondiente a mi zona horaria y luego podría proporcionar ese desplazamiento como segundo y tercer parámetro para esa función.
Entonces, para finalizar, necesito Power BI analógico para TimeZoneInfo.FindSystemTimeZoneById
ImkeF
En respuesta a Promedio de la pregunta
Sí, DateTime.SwitchZone hace ese desplazamiento.
Tampoco puede detectar nada similar a la otra función. Parece que toma un texto que representa la zona horaria y luego lo convierte en un valor de zona horaria. Pero eso en realidad no es lo que necesita al final: ya que ese es solo el valor de compensación.
Entonces, ¿qué tal crear una tabla de búsqueda en su lugar donde se almacenan los valores de compensación para todos sus posibles valores de texto (zonas horarias)? Como esto no cambiaría, simplemente obtenga su valor de compensación desde allí.
Promedio de la pregunta
En respuesta a ImkeF
En el peor de los casos, probablemente haría algo similar, pero no querría hacer eso porque no serán solo pares clave-valor, tiene que ser algo más inteligente que tenga en cuenta el horario de verano para una zona horaria específica que eventualmente significa que hay múltiples compensaciones por cada zona horaria, por lo tanto, eso suena no solo a una búsqueda, sino a una búsqueda + lógica y si no implemento esa lógica, mis informes serían incorrectos al menos 2 veces al año.
No podía creer que dicha funcionalidad básica no esté disponible en Power BI, estos son solo los fundamentos para que cualquier informe en vivo (que Power BI afirma ser) tenga un verdadero soporte para las zonas horarias (la compensación se puede determinar conociendo una zona horaria, pero pero La zona horaria no se puede determinar si solo se conoce el desplazamiento porque hay varios desplazamientos por cada zona horaria).
¿Es posible usar el lenguaje .NET al dar forma a datos para Power BI?
ImkeF
En respuesta a Promedio de la pregunta
No que yo sepa, pero puede usar R en Power BI.
Pero definitivamente te recomiendo que publiques esta pregunta en stackoverflow. Allí, los chicos de MS están respondiendo a las preguntas de PQ. Es posible que sepan más al respecto.
Promedio de la pregunta
En respuesta a ImkeF
Publiqué en ese foro pero no hay respuestas.
Entonces, para cerrar con esto: terminé haciendo mis conversaciones en SQL debido a las limitaciones de las consultas «Power» BI / «Power»
ImkeF
En respuesta a Promedio de la pregunta
Eso es una lástima.
Pero como Microsoft está agregando nuevas funciones mes a mes, a menudo provienen de las solicitudes de los usuarios: ¿Qué tal publicar las funciones que faltan en la sección Ideas aquí: https://ideas.powerbi.com/forums/265200-power-bi?