Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and a 50 percent discount on exams.
Get startedEarn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
hola
Tengo el siguiente conjunto de datos: Fecha, Sistema, Valores de estado:
Necesito transformarlo en un conjunto de datos con las siguientes columnas: Día, Fecha de inicio, Fecha de finalización, Estado agregado.
¿Puede darme una pista sobre cómo lograrlo?
Tahnk usted,
Atentamente
Marta
Hay @PowerBI88 ,
Por favor, compruebe si esto es lo que desea:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("Xc1LCsAgDEXRrZSMBfOxHzJrtyHZ/zaqYNA4eKPD49YKjExZMh2ohJDgbSOwtAipuHAU1uIim8g8lZXYQ1/bGWWEulxRRqjLvYnM0wNmPw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t, System = _t, #"Health Values" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type datetime}, {"System", type text}, {"Health Values", Int64.Type}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Day", each Date.Day([Date])),
#"Grouped Rows" = Table.Group(#"Added Custom", {"Day", "System"}, {{"Date start", each List.Min([Date]), type nullable datetime}, {"Date end", each List.Max([Date]), type nullable datetime}, {"Health", each List.Sum([Health Values]), type nullable number}}),
#"Reordered Columns" = Table.ReorderColumns(#"Grouped Rows",{"Day", "Date start", "Date end", "System", "Health"})
in
#"Reordered Columns"
Saludos
Icey
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Por desgracia, no es exaclty lo que estoy buscando. Trato de explicarme mejor: en cuanto a la agrupación de las fechas no está bien calcular la fecha mínima y la fecha máxima en 1 día, porque dentro de un día estoy buscando agrupar todas las ocurrencias del rango de fechas donde la salud no es igual al 100%. Eg:
si tengo
1/1/2021 8:00 - 1/1/2021 9:30 Salud = 80%
1/1/2021 11:30 - 1/1/2021 12:00 salud = 90%
1/1/2021 12:00 - 1/1/2021 13:00 salud = 100%
1/1/2021 13:00 - 1/1(2021 13:30 salud = 70%
En mi tabla desidered necesitaré dos agrupaciones dentro del día 1/1/2021, respectivamente:
1/1/2021 11:30 - 1/1/2021 12:00 healt = promedio(80, 90)
1/1/2021 1/1/2021 13:00 - 1/1(2021 13:30 salud = 70%
Déjame saber si necesitas más aclaraciones
Gracias
Hay @PowerBI88 ,
Soy un poco confuso acerca de la lógica de cálculo aquí:
¿Quiere decir que todos los intervalos de fechas anteriores al 100% se calcularán como "valor promedio"? ¿Y solo mantener el último intervalo de fechas?
Además, ¿cómo juzgar un intervalo de fechas en su estructura de datos original, todos los registros datetime en una columna?
Saludos
Icey
Lo siento mi error, el primer intervalo de fechas comienza con la hora 8:00 hasta las 12:00.
¿Quiere decir que todos los intervalos de fechas anteriores al 100% se calcularán como "valor promedio"? Y sólo mantener el último rango de fechas?--> sí, th econdition para buscar es la salud no es igual a 100%
Además, ¿cómo juzgar un intervalo de fechas en su estructura de datos original, todos los registros datetime en una columna? --> sí están todos en una columna
Hay @PowerBI88 ,
Lo siento, no lo declaré. Para mi última pregunta, lo que quiero confirmar es que el valor de estado es para un intervalo de fechas, pero en su estructura de datos original, todos los registros datetime están en una columna. Entonces, ¿cómo se define un intervalo de fechas? ¿Y cómo se define el valor de salud?
Saludos
Icey
No se define directamente en los datos. Puede inferirlo iterando sobre la mesa hasta que cumpla con el valor de estado del 100%. Debe buscar la fecha de finalización antes de cumplir con la fila con el valor de estado del 100%.
Déjame saber si está claro.
Hay @PowerBI88 ,
Por favor, compruebe si esto podría satisfacer sus necesidades:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("fZBBCsQwCEWvUgKzK1QNdjLZ1WuU3v8a04Emism4cPXQ/33nmQgIt7zhghUgrem4h+CVrtUwqtQYe5Zrbqx4xhX5YQge7ho4LCIr/AywKPRn6e7a+7w9y/pH8az8TaQFzZNjoi076Hm0SqBVAq0SaJVI63SxNZVI6+xs1yqB1klk1zpJVK3zRFuWB2je3H/w+gI=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t, System = _t, Health = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type datetime}, {"System", type text}, {"Health", Percentage.Type}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Dates", each Date.From([Date])),
#"Sorted Rows" = Table.Sort(#"Added Custom",{{"System", Order.Ascending}, {"Date", Order.Ascending}}),
#"Added Index" = Table.AddIndexColumn(#"Sorted Rows", "Index", 0, 1, Int64.Type),
#"Added Custom1" = Table.AddColumn(#"Added Index", "Date End", each let System_ = [System], Date_ = [Dates] in let t_ = Table.SelectRows(#"Added Index",each [System]=System_ and [Dates] = Date_) in
if [System] = System_ and [Dates] = Date_ then if [Date]=List.Max(t_[Date]) then List.Max(t_[Date]) else if [Health]=1 then #"Added Index"[Date]{[Index]-1} else null else null),
#"Added Custom2" = Table.AddColumn(#"Added Custom1", "Date Start", each let System_ = [System], Date_ = [Dates] in let t_ = Table.SelectRows(#"Added Index",each [System]=System_ and [Dates] = Date_) in
if [System] = System_ and [Dates] = Date_ then if [Date]=List.Min(t_[Date]) then List.Min(t_[Date]) else if [Health]=1 then #"Added Index"[Date]{[Index]+1} else null else null),
#"Filled Up" = Table.FillUp(#"Added Custom2",{"Date End"}),
#"Filled Down" = Table.FillDown(#"Filled Up",{"Date Start"}),
#"Filtered Rows" = Table.SelectRows(#"Filled Down", each ([Health] <> 1)),
#"Grouped Rows" = Table.Group(#"Filtered Rows", {"System", "Dates", "Date Start", "Date End"}, {{"Average", each List.Average([Health]), type nullable number}}),
#"Changed Type1" = Table.TransformColumnTypes(#"Grouped Rows",{{"Average", Percentage.Type}})
in
#"Changed Type1"
Saludos
Icey
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Estoy reproduciendo sus pasos, pero parece que Power BI tiene problemas de memoria al realizar las iteraciones. Lo he lanzado hace 15 minutos 😞
¿Alguna actualización?
Hay @PowerBI88 ,
día | Fecha de inicio | Fin de la fecha | sistema | Salud |
1 | 3/1/2021 0:10 | 3/1/2021 23:30 | A | 80% |
2 | 3/2/2021 0:10 | 3/2/2021 23:30 | b | 90% |
¿Cuáles son los datos de muestra correspondientes del resultado deseado anterior? ¿Y cuál es la lógica para calcular las columnas Date start, Date end y Health?
Saludos
Icey
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
@PowerBI88
¿Puede proporcionar datos utilizables en Excel o CSV con los resultados esperados?
Adjuntar el vínculo a los archivos después de guardarlos en OneDrive o cualquier otra ubicación.