Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Syndicate_Admin
Administrator
Administrator

Número único de clientes - 12 meses continuos

Hola

Tengo un poco de uno extraño. Tengo una tabla de ventas con información del cliente. Estoy contando el # de clientes únicos durante 12 meses para rastrear cómo cambia la base de clientes con el tiempo. Dentro de mi tabla de ventas, hay diferentes canales de venta en los que un cliente puede realizar transacciones. Cada canal de ventas tiene criterios diferentes, además del período de tiempo de 12 meses, para calificar a ese cliente como un cliente único válido.

Para hacerlo un poco más complicado, los clientes también pueden gastar en todos los canales. Así que estoy rastreando clientes únicos a través de 3 canales diferentes y clientes únicos en conjunto. Tengo una solución jnaky, pero los clientes agregados únicos que verifican contra 3 verificaciones de criterios diferentes se están quedando sin memoria cuando intento usar la medida para cualquier tipo de visual que no sea una tarjeta.

Aquí está una de las medidas que analiza un canal de ventas específico:

CALCULATE(
    countrows(
    FILTER(
        SUMMARIZE(
            CALCULATETABLE(
                VALUES('Sales Table'[Customer ID]),
                DATESBETWEEN(
                    'Date'[Date],
                    EDATE(MIN('Date'[Date]),-11),
                    MAX('Date'[Date])
                )
            ),
            'Sales Table'[Customer ID],
            "Condition",
                CALCULATE(
                    SUM('Sales Table'[Sales Amount]),
                    DATESBETWEEN(
                    'Date'[Date],
                    EDATE(MIN('Date'[Date]),-11),
                    MAX('Date'[Date])
                    )
                )

        ),
        [Condition] >1
    )
    ),
    'Sales Table'[Salse Channel] ="Sales Channel A",
    'Sales Table'[Product Type] = "Product Type A"
    
)

Estas medidas parecen funcionar bien y funcionan en varios elementos visuales. Aquí es donde está mi verdadero desafío... Encontrar una medida eficiente que logre lo mismo para mi base de clientes en conjunto con los criterios únicos se aplica al canal de ventas apropiado.
Nota: [Importe de ventas] es solo la suma de 'Tabla de ventas' [Importe de ventas].

Test Measure = 
var table_grouped =
    SUMMARIZE(
        'Sales Table',
        'Sales Table'[Customer ID],
        "R12 Sales Channel A", 
         CALCULATE(
            [Sales Amount],
                 DATESBETWEEN(
                'Date'[Date], 
                EDATE(MIN('Date'[Date]),-11),
                MAX('Date'[Date])),
                'Sales Table'[Sales Channel] = "Sales Channel A",
                'Sales Table'[Product Type] = "Product A"),
        "R12 Sales Channel B",
        CALCULATE(
            [Sales Amount],
                DATESBETWEEN(
                'Date'[Date], 
                EDATE(MIN('Date'[Date]),-11),
                MAX('Date'[Date])),
                'Sales Table'[Sales Channel] = "Sales Channel B"),
        "R12 Sales Channel C",
        CALCULATE(
            [Sales Amount],
                DATESBETWEEN(
                'Date'[Date], 
                EDATE(MIN('Date'[Date]),-11),
                MAX('Date'[Date])),
                'Sales Table'[Sales Channel] = "Salse Channel C"))

Return 
    COUNTROWS(
        FILTER(
            table_grouped,
            [R12 Sales Channel A]>10000 ||
            [R12 Sales Channel B] >1 ||
            [R12 Sales Channel C] > 1))


Quiero decir, funciona. Pero parece tan terriblemente ineficiente y no he podido descifrar cómo limpiarlo.

Cualquier ayuda o consejo sería extremadamente apreciado.

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Hola - apolgies por perder esta respuesta, supongo que mis notificaciones de correo electrónico no están habilitadas.

Intenté que la solución anterior recibiera este error:
Las expresiones escalares de la función 'GROUPBY' tienen que ser funciones de agregación sobre CurrentGroup(). La expresión de cada agregación tiene que ser un costant o hacer referencia directa a las columnas de CurrentGroup().

Traté de arreglar esto creando esta fórmula:

GROUPBY ( sales_table_filtered,'Sales Table'[Customer ID],
        "R12 Sales Channel A",
            CALCULATE (
             SUMX(CURRENTGROUP(),
            'Sales Table'[Sales Amount]),
             date_range,
            'Sales Table'[Sales Channel] = "Sales Channel A"
         ),continued

Probé algunas otras iteraciones de sumar ingresos (por ejemplo, agregar CURRENTGROUP() como una de las condiciones de filtro de cálculo), para evitar el error y jugar con la primera variable para ver si eso podría haber estado causando problemas.

No es el fin del mundo, ya que espero que el equipo interno de BI con el que trabajo pueda resolver esto a largo plazo. Solo una frustración que no puedo resolverlo jaja. Aprecio mucho el esfuerzo en tratar de ayudar.


Syndicate_Admin
Administrator
Administrator

Hi, @ryanraff37

Por favor, pruebe esta fórmula optimizada.

Test Measure =
VAR sales_table_filtered =
    FILTER ('Sales Table',
        'Sales Table'[Sales Channel]
            IN { "Sales Channel A", "Sales Channel B", "Sales Channel C" }
            && 'Sales Table'[Product Type] = "Product A" )
VAR date_range =
    DATESBETWEEN ('Date'[Date],
        EDATE ( MIN ( 'Date'[Date] ), -11 ),
        MAX ( 'Date'[Date] ) )
VAR table_grouped =
    GROUPBY ( sales_table_filtered,'Sales Table'[Customer ID],
        "R12 Sales Channel A",
            CALCULATE ([Sales Amount],date_range,
                'Sales Table'[Sales Channel] = "Sales Channel A"
            ),
        "R12 Sales Channel B",
            CALCULATE ([Sales Amount]date_range,
                'Sales Table'[Sales Channel] = "Sales Channel B"
            ),
        "R12 Sales Channel C",
            CALCULATE ([Sales Amount],date_range,
                'Sales Table'[Sales Channel] = "Sales Channel C"
            )
    )
RETURN
    COUNTROWS ( FILTER ( table_grouped,
            [R12 Sales Channel A] > 10000
                || [R12 Sales Channel B] > 1
                || [R12 Sales Channel C] > 1
        )
    )

Espero que esto ayude.

Saludos

Equipo de apoyo comunitario _Charlotte

Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors