Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
th3h0bb5
Resolver II
Resolver II

Powerquery- Múltiples acciones en la instrucción IF

He creado en una variable igual a 1. Quiero recorrer en iteración una columna y (si el valor es null) hacer dos cosas:

  • Reemplace el valor null por mi variable
  • Actualizar mi variable, aumentando en 1

Algo así:

cada uno si [Column] - null then variable AND variable-variable+1 else [Column]

¿Cuál es la sintaxis adecuada para reemplazar AND?

1 ACCEPTED SOLUTION

Hola @th3h0bb5 ,

Compruebe si funciona:

Capture.PNG

Dejar
Fuente: Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQyVorViVYyMTUD03mlOTmoDDHMLS6XYWAA-", BinaryEncoding.Base64), Compression.Deflate)), let _t á ((texto de tipo) [Serialized.Text ? true]) en la tabla de tipos [Column1 á _t])
"Tipo modificado" ? Table.TransformColumnTypes(Source,-"Column1", Int64.Type-),
"Índice añadido" - Tabla.Combinar(
"Tipo modificado", cada uno [Column1] <> null),
Table.AddIndexColumn(Table.SelectRows(?"Tipo cambiado", cada uno [Column1] - null), "Index", 1, 1)
}),
"Columna duplicada" á Table.DuplicateColumn('Added Index','Column1', "Column1 - Copy"),
"Columnas combinadas" ? Tabla.CombineColumns(Table.TransformColumnTypes(?"Columna duplicada", "Columna1 - Copiar", texto de tipo, "índice", texto de tipo, "pt-BR"), "Column1 - Copiar", "índice",Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Column2")
En
"Columnas combinadas"



Did I answer your question? Mark my post as a solution!

Proud to be a Super User!



View solution in original post

9 REPLIES 9
edhans
Super User
Super User

Power Query usa minúsculas y.

Aparte de eso, no entiendo tu fórmula. PQ utiliza if/then/else, y puede anidar instrucciones if.

each if [Column] = null then variable AND variable=variable+1 else [Column]

si la columna null, usted está diciendo "entonces variable y variable - variable +1" - que es una comparación de lógica booleana, que no puedo dar sentido. ¿Puede proporcionar un ejemplo real?



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

'AND' en mi ejemplo anterior es un marcador de posición, ya que en realidad no es lo correcto para poner allí. No estoy muy seguro de cómo volver a decir esto. Puede ver las columnas de entrada/salida de ejemplo que he proporcionado anteriormente si eso ayuda.


En inglés, quiero una línea de código que diga:

  1. Almacene una variable igual a 1.
  2. Vaya a través de cada fila de una columna.
  3. Si el valor actual es null, reemplace ese valor nulo por mi variable (que actualmente es 1). También agregue 1 a mi variable almacenada (por lo que es 2).
  4. De lo contrario, deje ese valor actual solo

Quiero que Powerquery realice 2 acciones si mis criterios son verdaderos. En code-lish sería "IF true THEN do 1 y 2 ELSE do 3."

En la mayoría de los lenguajes de programación, esto podría hacerse fácilmente almacenando una variable y luego iterando a través de una lista con un FOR LOOP.

Greg_Deckler
Super User
Super User

No está seguro si desea:

image.png

o "si entonces si entonces si entonces si no" ? No sé cuál es tu lógica por lo que publicaste.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

Lo que me gustaría es que las acciones x2 ocurran durante la parte 'THEN' de la declaración IF:

SI [columna] - nulo

ENTONCES DoThing1 y DoThing2

ELSE DoThing3

Probablemente voy a tener que salir de aquí y llamar a @ImkeF y @edhans . Tal vez es sólo porque no puedo ver el resto del código o cómo se usa en el contexto de una columna o una función o consulta, pero me parece que tendría que usar otra instrucción let.

si blah-blah entonces deja var blah, var2 en ...

https://bengribaudo.com/blog/2018/01/19/4321/power-query-m-primer-part4-variables-identifiers


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

@Greg_Deckler Exactamente lo que estaba buscando! Muy útil para recuperar datos solo si se cumple una determinada condición de parámetro.

¡Voy a ver el artículo!

Mi objetivo es crear un índice de incremento automático, pero solo para las filas donde mi clave es null (es una historia larga y desordenada). Si Column1 a continuación es lo que tenía, mi salida deseada es Column2.

Columna1Columna2
123123
456456
1
2
789789

Para ello, quiero crear una columna condicional de la siguiente manera:

Table.AddColumn(
Fuente

"Column2",

Cada

si [Column1] - nulo

a continuación indexVariable e indexVariable-indexVariable+1

[Columna2])

Hola @th3h0bb5 ,

Compruebe si funciona:

Capture.PNG

Dejar
Fuente: Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQyVorViVYyMTUD03mlOTmoDDHMLS6XYWAA-", BinaryEncoding.Base64), Compression.Deflate)), let _t á ((texto de tipo) [Serialized.Text ? true]) en la tabla de tipos [Column1 á _t])
"Tipo modificado" ? Table.TransformColumnTypes(Source,-"Column1", Int64.Type-),
"Índice añadido" - Tabla.Combinar(
"Tipo modificado", cada uno [Column1] <> null),
Table.AddIndexColumn(Table.SelectRows(?"Tipo cambiado", cada uno [Column1] - null), "Index", 1, 1)
}),
"Columna duplicada" á Table.DuplicateColumn('Added Index','Column1', "Column1 - Copy"),
"Columnas combinadas" ? Tabla.CombineColumns(Table.TransformColumnTypes(?"Columna duplicada", "Columna1 - Copiar", texto de tipo, "índice", texto de tipo, "pt-BR"), "Column1 - Copiar", "índice",Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Column2")
En
"Columnas combinadas"



Did I answer your question? Mark my post as a solution!

Proud to be a Super User!



@camargos88 ¡Gracias! Terminé haciendo algo muy similar a tu solución. Creé una columna de índice y la usé para reemplazar mis valores nulos en lugar de una variable de incremento.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Kudoed Authors