Learn from the best! Meet the four finalists headed to the FINALS of the Power BI Dataviz World Championships! Register now
Hola a todos
Tengo 3 tablas de dimensiones, estas 3 tablas no tienen ninguna relación entre ellas. No hay una columna común para realizar la combinación.
1. Tabla DimMU con columna "mu"
2. Tabla DimRB con columna RB
3. Tabla DimClient con columna de cline
Tengo 2 medidas, rev, rev% (los cálculos se realizan en tiempo de ejecución). Los valores se han calculado sobre tablas de hechos.
Necesito obtener Mu, RB, nombres de clientes de las respectivas tablas de dimensiones donde rev>10 y rev%>0.06.
He escrito un dax, que funciona correctamente para MU. Pero también tengo que incluir a RB y Client.
DAX:
rev>10_rev%>5AcrossMUs =
CONCATENATEX.
FILTRO(
VALORES(DimMU[MU]),
[Rev] > 10 y [Rev%] > 0.06)
),
DimMU[MU],
", "
)
Los datos de la tabla son como:
DIm MU
| Nosotros | En |
| 123 | India |
| 124 | América |
| 125 | Australia |
| 126 | Canadá |
| 127 | África |
Tabla RB
| Reid | Rb |
| 1 | hierro |
| 2 | acero |
| 3 | plástico |
| 4 | textil |
Tabla de clientes
| ID de cliente | Nombre del cliente |
| 501 | manzana |
| 502 | mango |
| 503 | plátano |
| 504 | Strwberry |
| 505 | guayaba |
| 506 | piña |
| 507 | granada |
Solved! Go to Solution.
Hola a todos, Bueno, tengo una solución.
En primer lugar, la medida "rev" se calculaba sobre Fact_A tabla y la medida "rev%" se calculaba sobre Fact_B tabla. Estas 2 tablas de datos no tenían relación entre sí. Y no había una tabla de dimensiones común conectada con estas 2 tablas de hechos. No hay conexión común.
En segundo lugar, estaba tratando de obtener MU de DimMU y RB de las tablas de DimRB. Las 2 columnas provenían de 2 tablas de dimensiones diferentes y quería filtrarlas juntas.
Así que lo que tuve que hacer es...
- Tuve que crear una nueva tabla de dimensiones en la pestaña de modelado de Power BI usando el siguiente DAX-
CrossJoinTable =
COMBINACIÓN CRUZADA(
DimMU,
DimRB
)
La función CROSSJOIN de DAX genera un producto cruzado de dos tablas, combinando cada fila de la primera tabla con cada fila de la segunda tabla.
Administrar relaciones (opcional): después de crear la tabla de combinación cruzada, es posible que desee deshabilitar las relaciones entre Tabla1 y Tabla2 para evitar comportamientos no deseados en los informes. Para ello, vaya al cuadro de diálogo Administrar relaciones.
- Ahora, en esta tabla calculada recién creada, creo una columna con DAX para concatar MU y RB
Dax:
-Concatatenate(CrossJoinTable[MU],concatenate("-",CrossJoinTable[RB]))=> que devolvía datos en combinación de india-textil, india-hierro, etc.
Próximo
- En Fact_A tabla, escribió la función de búsqueda para obtener el nombre de MU, el nombre de RB y, a continuación, cree una columna calculada que concatene los nombres de mu+Rb igual que los anteriores.
- En Fact_B tabla, escriba la función de búsqueda para obtener el nombre de MU, el nombre de RB y, a continuación, cree una columna calculada que concatene los nombres de mu + Rb igual que los anteriores
Dax:
MU_Name = LOOKUPVALUE(DimMU[MU],DimMU[MUid],Fact_A[MUid])
rb_Name = LOOKUPVALUE(Dimrb[rb],Dimrb[rbid],Fact_A[rbid])
MU_RB = CONCATENAR(Fact_A[MU_Name], CONCATENAR("-",Fact_A[RB_Name]))
Un dax similar para Fact_B tabla.
-Ahora tenemos una columna común en las 3 tablas con una combinación de columna MU+RB.
Ahora creé relaciones:
- relación entre Fact_A y CrossJoinTable - muchos a 1, unir la condición MU+RB columna.
-relación entre Fact_B y CrossJoinTable - muchos a 1, unir la condición MU+RB columna.
Ahora escribí Dax de la siguiente manera:
rev_greaterThan_10_revPercent_greaterThan_5_Across_MU_RB =
CONCATENATEX(
FILTRO(
VALORES(articulable cruzada[MU_RB]),
[Rev] >10 &&
[Rev%] > 0.06
),
articulable transversal[MU_RB],
", "
)
Hola a todos, Bueno, tengo una solución.
En primer lugar, la medida "rev" se calculaba sobre Fact_A tabla y la medida "rev%" se calculaba sobre Fact_B tabla. Estas 2 tablas de datos no tenían relación entre sí. Y no había una tabla de dimensiones común conectada con estas 2 tablas de hechos. No hay conexión común.
En segundo lugar, estaba tratando de obtener MU de DimMU y RB de las tablas de DimRB. Las 2 columnas provenían de 2 tablas de dimensiones diferentes y quería filtrarlas juntas.
Así que lo que tuve que hacer es...
- Tuve que crear una nueva tabla de dimensiones en la pestaña de modelado de Power BI usando el siguiente DAX-
CrossJoinTable =
COMBINACIÓN CRUZADA(
DimMU,
DimRB
)
La función CROSSJOIN de DAX genera un producto cruzado de dos tablas, combinando cada fila de la primera tabla con cada fila de la segunda tabla.
Administrar relaciones (opcional): después de crear la tabla de combinación cruzada, es posible que desee deshabilitar las relaciones entre Tabla1 y Tabla2 para evitar comportamientos no deseados en los informes. Para ello, vaya al cuadro de diálogo Administrar relaciones.
- Ahora, en esta tabla calculada recién creada, creo una columna con DAX para concatar MU y RB
Dax:
-Concatatenate(CrossJoinTable[MU],concatenate("-",CrossJoinTable[RB]))=> que devolvía datos en combinación de india-textil, india-hierro, etc.
Próximo
- En Fact_A tabla, escribió la función de búsqueda para obtener el nombre de MU, el nombre de RB y, a continuación, cree una columna calculada que concatene los nombres de mu+Rb igual que los anteriores.
- En Fact_B tabla, escriba la función de búsqueda para obtener el nombre de MU, el nombre de RB y, a continuación, cree una columna calculada que concatene los nombres de mu + Rb igual que los anteriores
Dax:
MU_Name = LOOKUPVALUE(DimMU[MU],DimMU[MUid],Fact_A[MUid])
rb_Name = LOOKUPVALUE(Dimrb[rb],Dimrb[rbid],Fact_A[rbid])
MU_RB = CONCATENAR(Fact_A[MU_Name], CONCATENAR("-",Fact_A[RB_Name]))
Un dax similar para Fact_B tabla.
-Ahora tenemos una columna común en las 3 tablas con una combinación de columna MU+RB.
Ahora creé relaciones:
- relación entre Fact_A y CrossJoinTable - muchos a 1, unir la condición MU+RB columna.
-relación entre Fact_B y CrossJoinTable - muchos a 1, unir la condición MU+RB columna.
Ahora escribí Dax de la siguiente manera:
rev_greaterThan_10_revPercent_greaterThan_5_Across_MU_RB =
CONCATENATEX(
FILTRO(
VALORES(articulable cruzada[MU_RB]),
[Rev] >10 &&
[Rev%] > 0.06
),
articulable transversal[MU_RB],
", "
)
@Sania-F , para el cliente necesita tener una medida como
rev>10_rev%>5AcrossClients =
CONCATENATEX(
FILTRO(
VALUES(DimClient[nombre del cliente]),
[Rev] > 10 & [Rev%] > 0.06
),
DimClient[nombre del cliente],
", "
)
Hola @amitchandak , necesito filtrar y mostrar el nombre de MU, el nombre de RB juntos.
ejemplo: para MU India, hierro Rb la revolucion es >10 y el % de revoluciones es >0.06
Los datos son los siguientes:
si veo rev y rev% solo para MU, a continuación se muestra cómo se ven los datos:
Cuando filtro en dax basado en MU, para rev>10 , 3 MU satisfacen la condición. Pero el % de revoluciones nada satisface la condición >0.06. Así que mi dax está devolviendo en blanco.
En | Rev | % de revoluciones |
India | 36 | 0.045 |
Australia | 23 | 0.03 |
América | 19 | 0.01 |
Canadá | 10 | 0.02 |
África | 10 | 0.03 |
Cuando aplico el filtro en el nivel MU y RB juntos, la condición rev> 10 y rev% >6 se satisface en mi Excel. Pero necesito la fórmula DAX para obtener los mismos resultados en mi Power BI. ¿Cómo puedo hacer eso?
En | RB | Rev | % de revoluciones |
India | hierro | 12 | 0.08 |
| acero | 10 | 0.03 |
| plástico | 9 | 0.05 |
| textil | 5 | 0.02 |
Australia | hierro | 1 | 0.03 |
| acero | 4 | 0.01 |
| Platic | 7 | 0.03 |
| textil | 11 | 0.04 |
América | Hierro | 3 | 0.01 |
| acero | 1 | 0.06 |
| plástico | 8 | 0.02 |
| textil | 7 | 0.04 |
Canadá | Igual que las 4 categorías anteriores | 10 | … |
África | Igual que abov 4 categorías | 10 | … |
Gracias de antemano por su ayuda.