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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Anonymous
Not applicable

Reducción del tamaño de la tabla filtrando

Hola

Tengo una mesa, llamémosla Tabla A. ¿Cómo puedo reducir la tabla a solo filas donde ID-Number es 1, por lo que solo le quedan filas (la primera y la última)? Importante: la tabla ya está llena de columnas adicionales que agregué después de la importación de los datos.

Número de identificaciónProducto AProducto BProducto C

Producto D

11,5279
05831

-1

2318

1

7562

¿Alguna idea de cómo podría obtener el resultado deseado?

Gracias de antemano,

Felix

1 ACCEPTED SOLUTION
AlB
Super User
Super User

@FelixLe

@mahoneypat ya ha proporcionado una solución y una explicación completa. Aquí hay otro en caso de que sea más fácil de seguir (aunque no estoy seguro de que lo hará en la primera columna personalizada). Primero crea una columna personalizada con una lista de los valores de número de identificador para el número de contrato en esa fila. A continuación, crea otra columna personalizada que comprueba si esos valores contienen 1 y -1. Finalmente filtra los Contratos con 1 y -1

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("NYzBDQAhCAR74Y3JoadgLYT+27hFuccQyO7gTtIHMUnCE7MDBZuCndQ29gdkZuC2M7tmk5L+N3bCd666teR1ehEf", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Contract-number" = _t, #"ID-Number" = _t, #"Product A" = _t, #"Product B" = _t, #"Product C" = _t, #"Product D" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Contract-number", Int64.Type}, {"ID-Number", Int64.Type}, {"Product A", Int64.Type}, {"Product B", Int64.Type}, {"Product C", Int64.Type}, {"Product D", Int64.Type}}),

    #"Added Custom" = Table.AddColumn(#"Changed Type", "IDNumbers in contract", each Table.SelectRows(#"Changed Type", (inner)=>(inner)[#"Contract-number"] = [#"Contract-number"])[#"ID-Number"]),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Has 1 and -1", each List.Contains([IDNumbers in contract],1) and List.Contains([IDNumbers in contract],-1)),
    #"Filtered Rows" = Table.SelectRows(#"Added Custom1", each ([#"Has 1 and -1"] = false))
in
    #"Filtered Rows"

View solution in original post

9 REPLIES 9
v-shex-msft
Community Support
Community Support

Hola @FelixLe,

¿Estas respuestas ayudaron a su escenario? Si este es un caso, puede considerar la aceptación del adecuado para ayudar a otros usuarios que se enfrentaron al mismo requisito para encontrarlo rápidamente. Si no, por favor no dude en post libre aquí con información detallada,
saludos
Xiaoxin Sheng

Community Support Team _ Xiaoxin
If this post helps, please consider accept as solution to help other members find it more quickly.
AlB
Super User
Super User

@FelixLe

@mahoneypat ya ha proporcionado una solución y una explicación completa. Aquí hay otro en caso de que sea más fácil de seguir (aunque no estoy seguro de que lo hará en la primera columna personalizada). Primero crea una columna personalizada con una lista de los valores de número de identificador para el número de contrato en esa fila. A continuación, crea otra columna personalizada que comprueba si esos valores contienen 1 y -1. Finalmente filtra los Contratos con 1 y -1

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("NYzBDQAhCAR74Y3JoadgLYT+27hFuccQyO7gTtIHMUnCE7MDBZuCndQ29gdkZuC2M7tmk5L+N3bCd666teR1ehEf", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Contract-number" = _t, #"ID-Number" = _t, #"Product A" = _t, #"Product B" = _t, #"Product C" = _t, #"Product D" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Contract-number", Int64.Type}, {"ID-Number", Int64.Type}, {"Product A", Int64.Type}, {"Product B", Int64.Type}, {"Product C", Int64.Type}, {"Product D", Int64.Type}}),

    #"Added Custom" = Table.AddColumn(#"Changed Type", "IDNumbers in contract", each Table.SelectRows(#"Changed Type", (inner)=>(inner)[#"Contract-number"] = [#"Contract-number"])[#"ID-Number"]),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Has 1 and -1", each List.Contains([IDNumbers in contract],1) and List.Contains([IDNumbers in contract],-1)),
    #"Filtered Rows" = Table.SelectRows(#"Added Custom1", each ([#"Has 1 and -1"] = false))
in
    #"Filtered Rows"

amitchandak
Super User
Super User

@FelixLe, origen y destino no está claro

¿Puede compartir datos de ejemplo y salida de ejemplo en formato de tabla? O una muestra de pbix después de eliminar datos confidenciales.

Anonymous
Not applicable

@amitchandak: Tal vez las tablas a continuación lo hacen más claro para usted? Estoy en la "vista de datos" de PowerBI y quiero eliminar las dos filas en el medio referigiendo el ID-Número 0 y -1. ¿Qué opciones tengo para recibir la tabla modificada?

Tabkle original

Número de identificaciónProducto AProducto BProducto C

Producto D

11,5279
05831

-1

2318

1

7562

Tabla modificada:

Número de identificaciónProducto AProducto BProducto C

Producto D

11,5279
17562

En el editor de consultas, solo tiene que agregar un paso para filtrar la columna Número de ID a los valores > 1.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Anonymous
Not applicable

@mahoneypat Gracias por su respuesta!

¿Puedes decirme cómo se hizo? ¿Qué fórmula usar y cómo se vería?

Y una pregunta más que es un poco más compleja. Quiero eliminar cada par de un número de contrato que tiene el ID-Número 1 y -1. Sin embargo, un solo número de contrato con -1 todavía debe estar en la tabla. Sólo para el caso de un número de contrato con ambos argumentos (1 y -1), se eliminarán las filas. Así que para el ejemplo quiero eliminar las líneas 1 y 3. ¿Cómo se ve la fórmula?

Número de contrato

Número de identificación

Producto A

Producto B

Producto C

Producto D

123

1

1,5

2

7

9

789

0

5

8

3

1

123

-1

2

3

1

8

456

1

7

5

6

2

Lo siento por preguntar en detalle cómo se hace, pero en realidad I've tiene sólo poca experiencia hasta ahora.

saludos

Felix

Esta es una manera de hacerlo en el editor de consultas. Para ver cómo funciona, simplemente cree una consulta en blanco, vaya a Editor avanzado y reemplace el texto allí con el código M a continuación. Tenga en cuenta que también le recomiendo que despope las columnas de producto para configurar los datos para una visualización de análisis más fácil o mejor. Puede eliminar ese paso de la consulta si lo desea. Todos los pasos se pueden hacer desde los botones de la cinta de opciones, espere el "Añadido personalizado" que tiene algún código M personalizado, pero esperemos que pueda replicar en su consulta real.

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("NYzBDQAhCAR74Y3JoadgLYT+27hFuccQyO7gTtIHMUnCE7MDBZuCndQ29gdkZuC2M7tmk5L+N3bCd666teR1ehEf", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Contract-number" = _t, #"ID-Number" = _t, #"Product A" = _t, #"Product B" = _t, #"Product C" = _t, #"Product D" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Contract-number", Int64.Type}, {"ID-Number", Int64.Type}, {"Product A", Int64.Type}, {"Product B", Int64.Type}, {"Product C", Int64.Type}, {"Product D", Int64.Type}}),
    #"Grouped Rows1" = Table.Group(#"Changed Type", {"Contract-number"}, {{"AllRows", each _, type table [#"Contract-number"=nullable number, #"ID-Number"=nullable number, Product A=nullable number, Product B=nullable number, Product C=nullable number, Product D=nullable number]}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows1", "FilterOut", each if List.ContainsAll([AllRows][#"ID-Number"], {-1, 1}) then "Y" else "N"),
    #"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([FilterOut] = "N")),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"FilterOut"}),
    #"Expanded AllRows" = Table.ExpandTableColumn(#"Removed Columns", "AllRows", {"ID-Number", "Product A", "Product B", "Product C", "Product D"}, {"ID-Number", "Product A", "Product B", "Product C", "Product D"}),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Expanded AllRows", {"Contract-number", "ID-Number"}, "Attribute", "Value"),
    #"Renamed Columns" = Table.RenameColumns(#"Unpivoted Other Columns",{{"Attribute", "Project"}})

in
    #"Renamed Columns"

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Anonymous
Not applicable

@mahoneypat Apreciamos su respuesta y apoyo, pero para ser honesto la explicación y el código me deja más confundido que antes. ¿Lo explicaría basándose en mi pequeña tabla de ejemplo? Eso sería genial.

saludos

Felix

El código M proporcionado es solo un ejemplo de cómo transformar los datos de ejemplo. Tenga en cuenta que quita esas filas de los datos. Si solo desea excluirlos temporalmente para un cálculo determinado, eso se puede hacer con una expresión DAX.

Si observa la consulta existente en el editor de consultas (pulse Transformar datos en la cinta de opciones) y haga clic en Editor avanzado en la cinta de opciones, verá código similar. Debe crear una consulta en blanco (haga clic en Nuevo origen y Consulta en blanco), abra su Editor avanzado y reemplace el código predeterminado allí con lo que proporcioné. A continuación, verá los pasos para transformar los datos. Si ese es el resultado que desea, debe replicar esos pasos en la consulta original.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors