Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
4 years ago
Solved

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 AColumna BCategoría
A1B11-1
A2B21-M
A2B31-M
A3B4M-1
A4B4M-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

  • @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's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      ¡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!

  • 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's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      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é.
      kilala_0-1648056050374.png