Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers!
Enter the sweepstakes now!Prepping for a Fabric certification exam? Join us for a live prep session with exam experts to learn how to pass the exam. Register now.
Hola
Estoy tratando de crear un análisis detallado en el que las columnas del objeto visual de la tabla se seleccionan dinámicamente, ¡y realmente agradecería su ayuda!
Básicamente, tengo una tabla de resumen que muestra una lista de reglas de negocio y un recuento de ubicaciones que lo activaron solo hoy. Al hacer clic en un recuento de ubicaciones, quiero crear una página de obtención de detalles que muestre la lista de ubicaciones y un montón de datos de ubicación relacionados con la regla de negocio. Hay más de 100 reglas de negocio y cada ubicación también tiene varias 100 columnas. El problema al que me enfrento es que solo quiero mostrar columnas que sean relevantes para cada regla de negocio, y el número de columnas variará en función de la regla de negocio. Habrá ocasiones en las que las columnas relevantes se superpondrán para diferentes reglas de negocio. Así es como se ve la tabla de resumen:
BusinessRuleID (BusinessRuleID) | LocationCount (Recuento de ubicaciones) |
1 | 1 |
2 | 2 |
3 | 2 |
¿Hay alguna manera de crear un objeto visual de tabla que elija dinámicamente las columnas que necesito en función de la regla de negocio en la que estoy explorando?
Estos son algunos ejemplos:
Si la regla de negocio #1 trata sobre la coherencia geográfica, en la obtención de detalles, me gustaría que el objeto visual de la tabla mostrara LocationID, Location, Country y City.
LocationID (Identificación de ubicación) | LocationName (Nombre de la ubicación) | País | Ciudad |
1 | Tienda A | Reino Unido | Múnich |
Si la regla de negocio #3 trata sobre si se completan todos los detalles del contacto 2, en la obtención de detalles, me gustaría que el objeto visual de la tabla mostrara LocationID, Ubicación, Nombre del contacto 2, Teléfono del contacto 2, Correo electrónico del contacto 2.
LocationID (Identificación de ubicación) | LocationName (Nombre de la ubicación) | Contacto 2 Nombre | Contacto 2 Teléfono | Contacto 2 Correo electrónico |
2 | Tienda B | Persona B | def@gmail.com | |
3 | Tienda C | Persona B | 456 |
Estos son los datos subyacentes que tengo en este momento:
RESULTADOS - Una tabla que contiene todas las ubicaciones, qué reglas de negocio activó y en qué fecha (la fecha de hoy es el 20 de octubre de 2023 para mí)
ResultsID (Identificación de resultados) | LocationID (Identificación de ubicación) | BusinessRuleID (BusinessRuleID) | Fecha |
1 | 1 | 1 | 18/10/23 |
2 | 1 | 1 | 19/10/23 |
3 | 1 | 1 | 20/10/23 |
4 | 1 | 2 | 20/10/23 |
5 | 2 | 2 | 20/10/23 |
6 | 2 | 3 | 20/10/23 |
7 | 3 | 3 | 20/10/23 |
REGLAS DE NEGOCIO: una tabla con una lista de reglas de negocio, así como su nombre y descripción.
BusinessRuleID (BusinessRuleID) | Nombre | Descripción |
1 | Geografía incoherente (nivel alto) | El país y la ciudad no coinciden |
2 | Detalles de contacto 1 incompletos | Hay espacios en blanco en el nombre, el correo electrónico o el teléfono del contacto 1, todos son obligatorios |
3 | Contacto incompleto 2 Detalles | Hay espacios en blanco en el nombre, el correo electrónico o el teléfono del contacto 2, todos son obligatorios |
Para los datos de UBICACIÓN, esta es la tabla original:
LocationID (Identificación de ubicación) | Ubicación | País | Ciudad | Municipio | Contacto 1 Nombre | Contacto 1 Teléfono | Contacto 1 Correo electrónico | Contacto 2 Nombre | Contacto 2 Teléfono | Contacto 2 Correo electrónico |
1 | Tienda A | Reino Unido | Múnich | Westminster | Persona A | abc@gmail.com | Persona B | 456 | def@gmail.com | |
2 | Tienda B | Reino Unido | Londres | Westminster | 123 | abc@gmail.com | Persona B | def@gmail.com | ||
3 | Tienda C | Reino Unido | Londres | Westminster | Persona A | 123 | abc@gmail.com | Persona B | 456 |
Por último, esto es a lo que lo convertí, pero me quedé atascado hasta ahora:
LocationID (Identificación de ubicación) | ColumnName (Nombre de columna) | ColumnType (Tipo de columna) | ColumnValue |
1 | Ubicación | Mensaje de texto | Tienda A |
1 | País | Mensaje de texto | Reino Unido |
1 | Ciudad | Mensaje de texto | Múnich |
1 | Municipio | Mensaje de texto | Westminster |
1 | Contacto 1 Nombre | Mensaje de texto | Persona A |
1 | Contacto 1 Teléfono | Número entero | |
1 | Contacto 1 Correo electrónico | Mensaje de texto | abc@gmail.com |
1 | Contacto 2 Nombre | Mensaje de texto | Persona B |
1 | Contacto 2 Teléfono | Número entero | 456 |
1 | Contacto 2 Correo electrónico | Mensaje de texto | def@gmail.com |
2 | Ubicación | Mensaje de texto | Tienda B |
2 | País | Mensaje de texto | Reino Unido |
2 | Ciudad | Mensaje de texto | Londres |
2 | Municipio | Mensaje de texto | Westminster |
2 | Contacto 1 Nombre | Mensaje de texto | |
2 | Contacto 1 Teléfono | Número entero | 123 |
2 | Contacto 1 Correo electrónico | Mensaje de texto | abc@gmail.com |
2 | Contacto 2 Nombre | Mensaje de texto | Persona B |
2 | Contacto 2 Teléfono | Número entero | |
2 | Contacto 2 Correo electrónico | Mensaje de texto | def@gmail.com |
3 | Ubicación | Mensaje de texto | Tienda C |
3 | País | Mensaje de texto | Reino Unido |
3 | Ciudad | Mensaje de texto | Londres |
3 | Municipio | Mensaje de texto | Westminster |
3 | Contacto 1 Nombre | Mensaje de texto | Persona A |
3 | Contacto 1 Teléfono | Número entero | 123 |
3 | Contacto 1 Correo electrónico | Mensaje de texto | abc@gmail.com |
3 | Contacto 2 Nombre | Mensaje de texto | Persona B |
3 | Contacto 2 Teléfono | Número entero | 456 |
3 | Contacto 2 Correo electrónico | Mensaje de texto |
¿Es posible lo que estoy tratando de hacer?
¡Muchas gracias!
Hola Liu Yan,
Gracias por su respuesta.
Tengo un problema en el que el objeto visual ha superado los recursos disponibles, lo que podría deberse al volumen de los datos.
¿Sería posible hacer algo similar si la Tabla A se pivotara como la tabla LOCATION original, de la siguiente manera:
LocationID (Identificación de ubicación) | Ubicación | País | Ciudad | Municipio | Contacto 1 Nombre | Contacto 1 Teléfono | Contacto 1 Correo electrónico | Contacto 2 Nombre | Contacto 2 Teléfono | Contacto 2 Correo electrónico |
1 | Tienda A | Reino Unido | Múnich | Westminster | Persona A | abc@gmail.com | Persona B | 456 | def@gmail.com | |
2 | Tienda B | Reino Unido | Londres | Westminster | 123 | abc@gmail.com | Persona B | def@gmail.com | ||
3 | Tienda C | Reino Unido | Londres | Westminster | Persona A | 123 | abc@gmail.com | Persona B | 456 |
Además, ¿sería posible automatizar la selección sin codificarla en el conmutador agregando una nueva tabla entre la tabla y la tabla A que se verá así:
BusinessRuleID (BusinessRuleID) | ColumnName (Nombre de columna) | ColumnOrder |
1 | País | 1 |
1 | Ciudad | 2 |
3 | Contacto 2 Correo electrónico | 1 |
3 | Contacto 2 Nombre | 2 |
3 | Contacto 2 Teléfono | 3 |
Gracias por su ayuda de nuevo, ¡realmente lo aprecio!
Estos son los pasos que puedes seguir:
1. Crear medida.
Measure =
var _select=SELECTEDVALUE('Table A'[BusinessRuleID])
var _column=SELECTCOLUMNS(FILTER(ALL('Table A'),'Table A'[BusinessRuleID] =_select),"LocationID",[LocationID])
return
SWITCH(
TRUE(),
_select = 1 &&MAX('Table'[ColumnName]) in {"Country","Location","City"},MAX('Table'[ColumnValue]),
_select =3 && MAX('Table'[ColumnName]) in {"Location","Contact 2 Name","Contact 2 Phone","Contact 2 Email"},MAX('Table'[ColumnValue]),BLANK())
2. Resultado:
Saludos
Liu Yang
Si esta publicación ayuda, considere aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente
Gracias por su respuesta 🙂
También pensé en usar parámetros de campo, pero no estoy exactamente seguro de cómo implementarlo. ¿Te importa elaborar un poco más?
¡Gracias!
Hola
Puede utilizar parámetros de campo para seleccionar dinámicamente las columnas.
https://learn.microsoft.com/en-us/power-bi/create-reports/power-bi-field-parameters
Check out the April 2025 Power BI update to learn about new features.
Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.