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

The Power BI DataViz World Championships are on! With four chances to enter, you could win a spot in the LIVE Grand Finale in Las Vegas. Show off your skills.

Reply
gdecome
Helper III
Helper III

Estadísticas "ampliadas" de Table.Profile en Power M (o DAX)

En Power Query tenemos estadísticas interesantes sobre cada columna (Calidad de columna, Distribución de columnas, Perfil de columna). Desde El perfil de columna podemos obtener algunos números utilizando la función Table.Profile() ... pero no obtengo valores para crear el gráfico que vemos en Distribución de valor (recuento de cada valor en la columna).
Mi intención es crear una vista en PBI para proporcionar información sobre la calidad de los datos para los usuarios.
La pregunta es ... ¿cómo puedo obtener la lista y el recuento de valores en columnas? Podría esto usando un poco de código duro en M, pero me gustaría hacerlo flexible (puede ser una función) para ser utilizado en diferentes tablas / columnas. En la vista, el usuario podría seleccionar una columna, de una segmentación de datos, y ver estáticas/gráficos para esa columna específica. No está seguro de si una tabla virtual en DAX podría resolver el problema teniendo en cuenta que el nombre de columna es variable. Cualquier ayuda es muy bienvenida.

5 REPLIES 5
v-kelly-msft
Community Support
Community Support

Hola @gdecome,

Supongo que puede utilizar la función "distinto" o "valores" para obtener la lista de la columna. Pero ambas funciones eliminarán los valores duplicados.

Aquí está la referencia:

https://docs.microsoft.com/en-us/dax/distinct-function-dax

https://docs.microsoft.com/en-us/dax/values-function-dax

En cuanto al "recuento de valores en columnas", puede usar "count","distinctcount" o "countrows" por su solicitud.

Aquí está la referencia:

https://docs.microsoft.com/en-us/dax/count-function-dax

https://docs.microsoft.com/en-us/dax/distinctcount-function-dax

https://docs.microsoft.com/en-us/dax/countrows-function-dax

Si arriba no es lo que necesita, mejor proporcionar alguna muestra con su salida esperada, le aconsejaré cómo lograrlo.

Saludos
Kelly
¿Respondí a tu pregunta? ¡Marca mi puesto como solución!

Hola @v-kelly-msft , gracias por su sugerencia.
De hecho, estoy buscando algo más "flexible" donde no necesito codificar duro el nombre de la columna.

Hasta ahora, estoy usando el código de abajo que parece estar funcionando de la manera que necesito (todavía WIP)

Dejar

Perfil de la página de la ins
Table.Profile(
Mytable
"Valor", cada Tipo.Is(_, escriba any), List.Sort ?
)
En
Perfil

Con eso tengo una nueva columna en la tabla, además de los otros estados, con la lista de todos los valores en esa columna. Puedo expandir esta lista, contar cada valor y crear un gráfico similar a lo que vemos en la pantalla de Power Query. No pude encontrar mucha documentación sobre el segundo parámetro en Table.Profile, pero hay algunas opciones interesantes para mejorar la información. Todavía no estoy seguro de cómo utilizar otras funciones en eso cuando la función requiere más de un parámetro (por ejemplo, List.FirstN). Además, la única función List que encontré para devolver la lista completa de valores fue List.Sort. Si tiene más información o consejos al respecto, por favor, hágamelo saber. Gracias de nuevo

Por cierto... Descubrí mi problema al intentar entrar en una función con más de un parámetro:

En lugar de (que devuelve error)

"Valor", cada Tipo.Is(_, escriba any), List.FirstN(_,2) ?

Necesidad de incluir un "cada uno" adicional

"Valor", cada Tipo.Is(_, escriba cualquiera), cada List.FirstN(_,2)

Hola @gdecome ,

Prueba a continuación el código M:

let
  Profile = Table.AddColumn(Table.Profile(Table),"ColumnValue",each 
    let 
    cname = [Column],
    t = Table.RenameColumns(Table.Distinct(Table.SelectColumns(Table,[Column])),{[Column],"Value"})
    in Table.AddColumn(t, "ValueCount", each let v = [Value] in Table.RowCount(Table.SelectRows(Table.RenameColumns(Table.SelectColumns(Table,cname),{cname,"OriginValue"}),each [OriginValue] = v)))
  ),
    #"Expanded ColumnValue" = Table.ExpandTableColumn(Profile, "ColumnValue", {"Value", "ValueCount"}, {"ColumnValue.Value", "ColumnValue.ValueCount"})
in
    #"Expanded ColumnValue"

Saludos
Kelly
¿Respondí a tu pregunta? ¡Marca mi puesto como solución!

Excelente... Obtuve un resultado similar con algunos otros pasos, pero está tomando algún tiempo para procesar. Su técnica es bastante interesante y está funcionando bien. Haré algunas pruebas adicionales para mantener el proceso más eficiente en términos de tiempo.
Muchas gracias por su ayuda 🙂

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

Check out the February 2025 Power BI update to learn about new features.

Feb2025 NL Carousel

Fabric Community Update - February 2025

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

Top Solution Authors
Top Kudoed Authors