Forum Discussion
Categorizar comparando 2 columnas
Estimados todos,
En mi tabla de hechos, tengo 2 columnas de ID (columna A y columna B) que pueden tener 3 tipos de relación:
1. Uno a uno: 1 ID en la columna A está relacionado con 1 ID en la columna B
2. Uno a muchos: 1 ID en la columna A está relacionado con muchos ID en la columna B
3. Muchos a uno: Muchos ID en la columna A están relacionados con un ID en la columna B.
Necesito crear otra columna (en este caso necesito crear Measure ya que me conecté al conjunto de datos PBI en vivo) , y mi resultado esperado sería:
| Columna A | Columna B | Categoría |
| A1 | B1 | 1-1 |
| A2 | B2 | 1-M |
| A2 | B3 | 1-M |
| A3 | B4 | M-1 |
| A4 | B4 | M-1 |
¿Algún consejo/ayuda sobre cómo puedo lograr este objetivo? ¡Muchas gracias!
Hola
Si desea verificar la creación de una medida, consulte la imagen a continuación y el archivo pbix adjunto.
Category measure: = VAR currentA = MAX ( Data[Column A] ) VAR currentB = MAX ( Data[Column B] ) RETURN SWITCH ( TRUE (), COUNTROWS ( VALUES ( Data[Column A] ) ) = 1 && CALCULATE ( COUNTROWS ( VALUES ( Data[Column B] ) ), FILTER ( ALL ( Data ), Data[Column A] = currentA ) ) = 1 && CALCULATE ( COUNTROWS ( data ), FILTER ( ALL ( Data ), Data[Column B] = currentB ) ) = 1, "1-1", COUNTROWS ( VALUES ( Data[Column A] ) ) = 1 && CALCULATE ( COUNTROWS ( VALUES ( Data[Column B] ) ), FILTER ( ALL ( Data ), Data[Column A] = currentA ) ) > 1, "1-M", COUNTROWS ( VALUES ( Data[Column A] ) ) = 1 && CALCULATE ( COUNTROWS ( VALUES ( Data[Column B] ) ), FILTER ( ALL ( Data ), Data[Column A] = currentA ) ) = 1 && CALCULATE ( COUNTROWS ( data ), FILTER ( ALL ( Data ), Data[Column B] = currentB ) ) > 1, "M-1" )
4 Replies
- Syndicate_Admin
Administrator
@kilala , Intenta tener una nueva columna como
Nueva columna =
var _1 = countx(filter(Table, [Columna A] = anterior([Columna A]) ), [Columna B])
var _2 = countx(filter(Table, [Columna B] = anterior([Columna B]) ), [Columna A])
devolución
Switch(True() ,
_1 =1 && _2 =1, "1-1" ,
_1 =1 && _2 >1, "1-M" ,
_1 >1 && _2 =1, "M-1" ,
"M-M"
)- Syndicate_Admin
Administrator
¡Hola, tanques para la respuesta! Desafortunadamente, no puedo crear una nueva columna mientras me conecto a datos en vivo. Sólo soy capaz de crear medidas.
Sin embargo, probé su enfoque, pero un error se muestra aquí:
var _1 = countx(filter(Table, [Columna A] = anterior([Columna A]) ), [Columna B])
mensaje de error:
El parámetro no es el tipo correcto; No se puede encontrar el nombre [Columna A]
por favor ayuda!
- Syndicate_Admin
Administrator
Hola
Si desea verificar la creación de una medida, consulte la imagen a continuación y el archivo pbix adjunto.
Category measure: = VAR currentA = MAX ( Data[Column A] ) VAR currentB = MAX ( Data[Column B] ) RETURN SWITCH ( TRUE (), COUNTROWS ( VALUES ( Data[Column A] ) ) = 1 && CALCULATE ( COUNTROWS ( VALUES ( Data[Column B] ) ), FILTER ( ALL ( Data ), Data[Column A] = currentA ) ) = 1 && CALCULATE ( COUNTROWS ( data ), FILTER ( ALL ( Data ), Data[Column B] = currentB ) ) = 1, "1-1", COUNTROWS ( VALUES ( Data[Column A] ) ) = 1 && CALCULATE ( COUNTROWS ( VALUES ( Data[Column B] ) ), FILTER ( ALL ( Data ), Data[Column A] = currentA ) ) > 1, "1-M", COUNTROWS ( VALUES ( Data[Column A] ) ) = 1 && CALCULATE ( COUNTROWS ( VALUES ( Data[Column B] ) ), FILTER ( ALL ( Data ), Data[Column A] = currentA ) ) = 1 && CALCULATE ( COUNTROWS ( data ), FILTER ( ALL ( Data ), Data[Column B] = currentB ) ) > 1, "M-1" )- Syndicate_Admin
Administrator
Estimado @Jihwan_Kim ,
¡Muchas gracias! Funciona perfectamente bien.
Deseo agregar otra regla donde Columna A = "NA", luego la categoría = Blank().
Agregué esta lógica como 1ª regla:
CALCULAR (FILTRO ( TODO ( Datos ), Fecha[ColumnA] = currentA )) = "NA",Espacio en blanco()
Sin embargo, después de que ocurra un error, no estoy seguro de por qué.