Forum Discussion

MarcosPerena's avatar
MarcosPerena
Regular Visitor
4 years ago
Solved

Contar en varias variables

Mi modelo de datos genera una única tabla ("DATOS"), que contiene una serie de variables de texto con información de personas:

 

Identificador numéricoPersona1Persona2Persona3Persona4
58654393JuanFranFran 
39085030MaríaMaríaJuanFran
48593403AnaGemaGema 
38974340FranJuanMaríaMaría

 

Necesito saber cómo podría hacer un recuento de los identificadores numéricos en función de la persona con independencia de si está almacenado en la variable persona1, persona2, persona3, persona4. Es decir, necesito obtener esto:

 

Juan: 3

Fran: 4

María: 4

Ana: 1

Gema: 2

 

Espero que alguien me pueda orientar, soy nuevo en PowerBI. Gracias de antemano. 

  • Hola. Pude encontrar una solución, pero podría no ser la mejor manera de hacerlo, ya que todavía estoy aprendiendo también.

    1. Cree una tabla de dimenstion para Persona. (Dejé la fila en blanco en la tabla para las relaciones).

    DimPerson =
    SELECTCOLUMNS(
    DISTINTO(
    UNIÓN(
    VALORES( 'Tabla'[Persona1] ),
    VALORES( 'Tabla'[Persona2] ),
    VALORES( 'Tabla'[Persona3] ),
    VALORES( 'Tabla'[Persona4] )
    )
    ),
    "Persona", [Persona1]
    )

    2. Cree realizaciones de muchos a uno entre las columnas Table[PersonaX] y DimPerson[Person].

    3. Cree una medida para contar las filas de 'Tabla'.

    Recuento de ID =
    VAR _CurrentPerson = SELECTEDVALUE(DimPerson[Persona])
    VAR _C1 =
    CUENTAS(
    FILTRO(
    «Tabla»,
    'Tabla'[Persona1] = _CurrentPerson
    )
    )
    DONDE _C2 =
    CALCULAR(
    CUENTAS(
    FILTRO(
    «Tabla»,
    'Tabla'[Persona2] = _CurrentPerson
    )
    ),
    USERELATIONSHIP('Tabla'[Persona2], 'DimPerson'[Persona])
    )
    DONDE _C3 =
    CALCULAR(
    CUENTAS(
    FILTRO(
    «Tabla»,
    'Tabla'[Persona3] = _CurrentPerson
    )
    ),
    USERELATIONSHIP('Tabla'[Persona3], 'DimPerson'[Persona])
    )
    DONDE _C4 =
    CALCULAR(
    CUENTAS(
    FILTRO(
    «Tabla»,
    'Tabla'[Persona4] = _CurrentPerson
    )
    ),
    USERELATIONSHIP('Tabla'[Persona4], 'DimPerson'[Persona])
    )
    DEVOLUCIÓN
    _C1 + _C2 + _C3 + _C4

    (Lo siento por el formato)

    Obtengo los resultados deseados cuando pongo DimPerson[Person] y [ID Count] en una tabla.

    Como dije anteriormente, probablemente hay muchas maneras que son mejores.

    PBIX: https://1drv.ms/u/s!AnF6rI36HAVkhPEwPhfdqLLaMLwOsg?e=agIbfy

4 Replies

  • Hola. Pude encontrar una solución, pero podría no ser la mejor manera de hacerlo, ya que todavía estoy aprendiendo también.

    1. Cree una tabla de dimenstion para Persona. (Dejé la fila en blanco en la tabla para las relaciones).

    DimPerson =
    SELECTCOLUMNS(
    DISTINTO(
    UNIÓN(
    VALORES( 'Tabla'[Persona1] ),
    VALORES( 'Tabla'[Persona2] ),
    VALORES( 'Tabla'[Persona3] ),
    VALORES( 'Tabla'[Persona4] )
    )
    ),
    "Persona", [Persona1]
    )

    2. Cree realizaciones de muchos a uno entre las columnas Table[PersonaX] y DimPerson[Person].

    3. Cree una medida para contar las filas de 'Tabla'.

    Recuento de ID =
    VAR _CurrentPerson = SELECTEDVALUE(DimPerson[Persona])
    VAR _C1 =
    CUENTAS(
    FILTRO(
    «Tabla»,
    'Tabla'[Persona1] = _CurrentPerson
    )
    )
    DONDE _C2 =
    CALCULAR(
    CUENTAS(
    FILTRO(
    «Tabla»,
    'Tabla'[Persona2] = _CurrentPerson
    )
    ),
    USERELATIONSHIP('Tabla'[Persona2], 'DimPerson'[Persona])
    )
    DONDE _C3 =
    CALCULAR(
    CUENTAS(
    FILTRO(
    «Tabla»,
    'Tabla'[Persona3] = _CurrentPerson
    )
    ),
    USERELATIONSHIP('Tabla'[Persona3], 'DimPerson'[Persona])
    )
    DONDE _C4 =
    CALCULAR(
    CUENTAS(
    FILTRO(
    «Tabla»,
    'Tabla'[Persona4] = _CurrentPerson
    )
    ),
    USERELATIONSHIP('Tabla'[Persona4], 'DimPerson'[Persona])
    )
    DEVOLUCIÓN
    _C1 + _C2 + _C3 + _C4

    (Lo siento por el formato)

    Obtengo los resultados deseados cuando pongo DimPerson[Person] y [ID Count] en una tabla.

    Como dije anteriormente, probablemente hay muchas maneras que son mejores.

    PBIX: https://1drv.ms/u/s!AnF6rI36HAVkhPEwPhfdqLLaMLwOsg?e=agIbfy

  • Muchas gracias, 

    Me da error en la relación varios a uno, no me permite tener todas activas simultáneamente 

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Solo la relación que usa 'Tabla'[Persona1] está activa. Para las otras relaciones, utilizo USERELATIONSHIP en la medida.