March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now
Hola
He recorrido los foros aquí, pero ninguna de las soluciones que he encontrado trabajo para mi caso. Realmente agradecería cualquier y toda la ayuda que puedo obtener, ya que soy bastante nuevo en PowerBI.
Me gustaría generar la tercera y cuarta columnas en la tabla siguiente (el nombre de la 4a columna es la fórmula de Excel que me gustaría implementar en PowerBI):
Fecha | NewObs | Obs7DaysPrior | LOG((NewObs/Obs7DaysPrior),2) | |||
5/6/2020 | 67 | |||||
5/7/2020 | 68 | |||||
5/8/2020 | 69 | |||||
5/9/2020 | 70 | |||||
5/10/2020 | 71 | |||||
5/11/2020 | 72 | |||||
5/12/2020 | 80 | 67 | 0.255838904 | |||
5/13/2020 | 87 | 68 | 0.355480655 | |||
5/14/2020 | 87 | 69 | 0.334419039 | |||
5/15/2020 | 87 | 70 | 0.313660479 | |||
5/16/2020 | 87 | 71 | 0.293196376 | |||
5/17/2020 | 90 | 72 | 0.321928095 | |||
5/18/2020 | 90 | 80 | 0.169925001 | |||
5/19/2020 | 93 | 87 | 0.096215315 | |||
5/20/2020 | 95 | 87 | 0.126912112 | |||
5/21/2020 | 95 | 87 | 0.126912112 | |||
5/22/2020 | 95 | 87 | 0.126912112 | |||
5/23/2020 | 97 | 90 | 0.108059746 |
En el cálculo anterior, la diferencia es de 7 días, pero podría ser 14 o 30 o 5, dependiendo de los requisitos en el futuro.
Muchas gracias,
Cobe.
Solved! Go to Solution.
Un par de comentarios:
Su ejemplo habla de 7 días antes, pero en realidad muestra 6 días antes.
¿Seguro que quieres logaritmo dualis?
¿Te referías a columnas cuando escribiste columnas?
Este es el enfoque según su ejemplo.
Tabla LogN en Power Query:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("lZFLDoMwDESvUrGuwJ/Y8ZwFcf9rNJUawEAWXVjK4j05nlnXyRZfhISm9/Rq4/X3OGZ7f6maqBhQkSgMKJypSgOKKWE8wjhhMsLkjMXtXprFLDRApRuajA7ut9OsZiXIzbpRng0chpbCIEU37NHYM2kGqzuVuhv+bPBxB5ThWr0bqTrckmo7hCFB2O+IRyOOX7EDYkTcjVQp9Po9mgkubMp9h6R22+qbweJgYZZu8N+G/G2kzlGvETSDggy1tHS3Dw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t, #" " = _t, NewObs = _t, #" .1" = _t, #" Obs7DaysPrior " = _t, #" .2" = _t, #"LOG((NewObs/Obs7DaysPrior),2)" = _t]),
#"Removed Other Columns" = Table.SelectColumns(Source,{"Date", "NewObs"}),
#"Changed Type" = Table.TransformColumnTypes(#"Removed Other Columns",{{"Date", type date}, {"NewObs", type number}})
in
#"Changed Type"
Columnas calculadas (!)
Obs7DaysPrior =
var d = LogN[Date]
return CALCULATE(sum(LogN[NewObs]),all(LogN),LogN[Date]=d-6)
LogN = LOG(divide(LogN[NewObs],LogN[Obs7DaysPrior]),2)
Y el resultado
Un par de comentarios:
Su ejemplo habla de 7 días antes, pero en realidad muestra 6 días antes.
¿Seguro que quieres logaritmo dualis?
¿Te referías a columnas cuando escribiste columnas?
Este es el enfoque según su ejemplo.
Tabla LogN en Power Query:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("lZFLDoMwDESvUrGuwJ/Y8ZwFcf9rNJUawEAWXVjK4j05nlnXyRZfhISm9/Rq4/X3OGZ7f6maqBhQkSgMKJypSgOKKWE8wjhhMsLkjMXtXprFLDRApRuajA7ut9OsZiXIzbpRng0chpbCIEU37NHYM2kGqzuVuhv+bPBxB5ThWr0bqTrckmo7hCFB2O+IRyOOX7EDYkTcjVQp9Po9mgkubMp9h6R22+qbweJgYZZu8N+G/G2kzlGvETSDggy1tHS3Dw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Date = _t, #" " = _t, NewObs = _t, #" .1" = _t, #" Obs7DaysPrior " = _t, #" .2" = _t, #"LOG((NewObs/Obs7DaysPrior),2)" = _t]),
#"Removed Other Columns" = Table.SelectColumns(Source,{"Date", "NewObs"}),
#"Changed Type" = Table.TransformColumnTypes(#"Removed Other Columns",{{"Date", type date}, {"NewObs", type number}})
in
#"Changed Type"
Columnas calculadas (!)
Obs7DaysPrior =
var d = LogN[Date]
return CALCULATE(sum(LogN[NewObs]),all(LogN),LogN[Date]=d-6)
LogN = LOG(divide(LogN[NewObs],LogN[Obs7DaysPrior]),2)
Y el resultado
¡Gracias por responder! Los 7 días es sólo un marcador de posición como he indicado en mi solicitud. Siéntase libre de usar 6 si lo desea.
Sí, me gustaría usar log(base 2) para los cálculos.
No estoy seguro de su pregunta: "¿Te referías a las columnas cuando escribiste columnas?", pero sí, las cuatro columnas presentadas en la tabla. Los dos primeros son los datos disponibles y los dos últimos son los que me gustaría calcular.
¿Podría ayudarme a recorrer su LogN PowerQuery? Es completamente nuevo para mí. Específicamente, me gustaría entender cómo puedo incorporar estos fragmentos de código en mi libro de trabajo:
Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("lZFLDoMwDESvUrGuwJ/Y8ZwFcf9rNJUawEAWXVjK4j05nl nyXyRZfhISm9/Rq4/X3OGZ7f6maqBhQkSgMKJypSgOKKWE8wjhhMsLkjMXtXprFLDRApRuajA7ut9OsZiXIzbpRng0chpbCIEU37NHYM2kGqzuVuhv+bPBxB5ThWr0bqTrckmo7hCFB2O+IRyOOX7EDYkTcjVQp9Po9mgkubMp9h6R22+qbweJgYZZu8N+G/G2kzlGvETSDggy1tHS3Dw", BinaryEncoding.Base64), Compression.Deflate)), let _t ((type nullable text) meta [Serialized.Text ? true])
Y:
en la tabla de tipos [Fecha , _t, " , _t, NewObs , _t, "LOG", .1" , _t, "Obs7DaysPrior", _t "_t" , ".2" , _t "LOG((NewObs/Obs7DaysPrior),2)"
Por último, ¿existe una función similar a "IFERROR" de Excel para deshacerse de los valores "infinitos"" ?
¡Gracias!
El código de Power Query debe tomarse tal cual y colocarlo en el editor avanzado de una consulta en blanco, reemplazando cualquier código reutilizable que haya.
Las dos primeras líneas de que son básicamente los datos y el esquema de la tabla de ejemplo.
Power BI tiene un concepto de "columnas calculadas" y "medidas": son dos cosas muy diferentes con cálculos diferentes. Elegiste columnas, eso es lo que sirven las fórmulas.
El código DIVIDE() permite resultados alternativos para evitar dividir por cero, y DAX también tiene patrones IF(ISBLANK()) para ayudarle a decidir qué hacer en caso de que no se devuelva nada.
Gracias. Por lo tanto, PowerQuery ha creado una tabla denominada "LogN" con una sola columna denominada "LogN", que almacena solo un valor de texto, que es el propio código PowerQuery.
No estoy seguro de si esto era intencionado.
No. No así.
Cree una consulta en blanco. Haga clic con el botón derecho. Seleccione Editor avanzado. Reemplace el código existente por el de mi publicación.
Sólo un seguimiento rápido. Me doy cuenta de que los datos están codificados de forma rígida desde el json. ¿Cómo puedo apuntar NewsObs a la columna real de la tabla de datos que va más allá de estas fechas en mi ejemplo?
Cambie la línea "Origen " para que apunte a sus datos reales.
¡Muchas gracias! Eso funcionó.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.
Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.