Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
2 years ago

Power BI Visual

Hola

Estoy trabajando en un proyecto de venta cruzada de Power BI. Mis datos se organizan en este formato:

He creado un informe que consta de dos viusales de tabla y una segmentación. La segmentación consta de los siguientes servicios:

Podemos seleccionar los servicios de la segmentación y el objeto visual de la tabla mostrará la lista de clientes que compraron ese servicio (o servicios) específico como se muestra a continuación:

Ejemplo:

Clientes del plan10 = Cliente1, Cliente2, Cliente4, Cliente5, Cliente6, Cliente8, Cliente11 (este es el resultado del objeto visual Tabla1)

Clientes de Plan10 y Plan4 = Cliente1, Cliente5, Cliente6 (este es el resultado del objeto visual Tabla2)

**Clientes objetivo (que compraron el Plan10 pero no el Plan4) = Cliente2, Cliente4, Cliente8, Cliente11

(Necesito crear este objeto visual de Tabla3 restando los valores del objeto visual de Tabla2 de los valores del objeto visual de Tabla1)

Actualmente estoy haciendo este proceso manualmente exportando los valores de la tabla como csv y luego comparándola en Excel. ¿Es posible lograr esto en Power BI?

Gracias.

5 Replies

  • Una forma es que puede crear 8 páginas y usar el botón para navegar a una página diferente.

    Y en el filtro de página de cada página, debe seleccionar el cliente que está en ese ámbito del plan

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Hola @ryan_mayu

      Gracias, pero los datos que mostré son solo para entender. Tengo un conjunto de datos enorme, por lo que crear páginas por separado no será una solución práctica.

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        @alir22456

        O bien, puede crear una tabla de asignación y filtrar esta tabla para obtener la salida correspondiente.

        | Plan   | Customer   |
        | ------ | ---------- |
        | Plan 1 | Customer 1 |
        | Plan 1 | Customer 2 |
        | Plan 1 | Customer 3 |
        | Plan 1 | Customer 4 |
        | Plan 2 | Customer 3 |
        | Plan 2 | Customer 4 |
        | Plan 2 | Customer 5 |

  • Hola @alir22456 ,

    @ryan_mayu ¡Gracias por tu respuesta!

    Y @alir22456 puedes probar de esta manera:
    Aquí están mis datos de muestra:

    Use este DAX para crear dos tablas calculadas para las segmentaciones de datos (si solo una segmentación no hace lo que necesita que haga):

    Buy = VALUES('Table'[Services])
    Not Buy = VALUES('Table'[Services])

    Tenga en cuenta que no hay relación entre las tablas:

    Utilice este DAX para crear una medida para devolver a los clientes que solo han comprado los servicios seleccionados en la primera segmentación:

    Buy_single_Customers = 
    CONCATENATEX(
        FILTER(
            'Table',
            'Table'[Services] IN VALUES(Buy[Services])
        ),
        'Table'[Customers],
        ","
    )

    Siga usando este DAX para crear una medida que devuelva los clientes que compraron los servicios seleccionados en la primera segmentación y los servicios seleccionados en la segunda segmentación:

    Buy_both_Customers = 
    VAR _BUY = 
    CALCULATETABLE(
        DISTINCT('Table'[Customers]),
        FILTER(
            ALL('Table'),
            'Table'[Services] IN VALUES(Buy[Services])
        )
    )
    VAR _NOT_BUY = 
    CALCULATETABLE(
        DISTINCT('Table'[Customers]),
        FILTER(
            ALL('Table'),
            'Table'[Services] IN VALUES('Not Buy'[Services])
        )
    )
    VAR _Both = 
    INTERSECT(_BUY, _NOT_BUY)
    RETURN
    CONCATENATEX(
        _Both,
        'Table'[Customers],
        ","
    )

    Por último, este DAX se utiliza para crear una medida para devolver a los clientes que solo compraron los servicios seleccionados en la primera segmentación y no los servicios seleccionados en la segunda segmentación:

    Both - Single = 
    VAR _BUY = 
    CALCULATETABLE(
        DISTINCT('Table'[Customers]),
        FILTER(
            ALL('Table'),
            'Table'[Services] IN VALUES(Buy[Services])
        )
    )
    VAR _NOT_BUY = 
    CALCULATETABLE(
        DISTINCT('Table'[Customers]),
        FILTER(
            ALL('Table'),
            'Table'[Services] IN VALUES('Not Buy'[Services])
        )
    )
    VAR _Both = 
    EXCEPT(_BUY, _NOT_BUY)
    RETURN
    CONCATENATEX(
        _Both,
        'Table'[Customers],
        ","
    )

    Y el resultado final es el siguiente:


    Saludos
    Dino Tao
    Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.