First Touch Attribution DAX Measure con filtro de usuario final

Un usuario Pregunto ✅

karlal

Tengo una base de datos con sesiones como esta:

Lead_id__c Session_Start_Time__c Tiempo de la sesión de conversión del primer cliente potencial ID de sesión Canal Tipo de trafico
x1 18/11/2019 18:32 26/11/2019 0:00 s100 Google No directo
x1 19/11/2019 19:26 26/11/2019 0:00 s101 Yahoo No directo
x1 25/11/2019 20:26 26/11/2019 0:00 s102 Directo Directo
x3 20/7/2019 6:11 15/1/2020 0:00 s108 Directo Directo
x3 21/11/2019 22:50 15/1/2020 0:00 s105 LinkedIn No directo
x3 15/5/2020 9:38 15/1/2020 0:00 s106 LinkedIn No directo
x3 19/7/2020 18:10 15/1/2020 0:00 s107 Yahoo No directo
x3 23/7/2020 6:24 15/1/2020 0:00 s109 Directo Directo
x3 23/7/2020 8:10 15/1/2020 0:00 s110 Directo Directo
x3 02/08/2020 15:46 15/1/2020 0:00 s111 Google No directo
x3 3/8/2020 7:18 15/1/2020 0:00 s112 Búsqueda No directo

Me gustaría tener una medida que cuente la primera sesión por «Canal» que fue antes o al mismo tiempo que el «Tiempo de la sesión de conversión del primer cliente potencial». También me gustaría tener un filtro de usuario en «tipo de tráfico», este filtro afectará el tiempo de la primera sesión, ya que algunas sesiones potenciales que fueron las primeras podrían filtrarse.

Esto es lo que he probado hasta ahora:

-Primero–

He creado una columna calculada en la tabla «rango de orden de sesión por ID de cliente potencial]«que clasifica las sesiones por fechas por ID de cliente potencial.

-Entonces-

Medida de atribución del primer toque principal =
var TB =
CALCULATABLE (
‘Atribución de clientes potenciales’,
ALLSELECTED (‘Atribución de clientes potenciales'[Lead_id__c])
FILTRAR(
‘Atribución de clientes potenciales’, ‘Atribución de clientes potenciales'[Session_Start_Time__c]<= 'Atribución de clientes potenciales'[First Lead Conversion Session Time]),
TOPN (1, ‘Atribución de clientes potenciales’, ‘Atribución de clientes potenciales'[session order rank by Lead ID], ASC)
)
var calc =
sumx
TUBERCULOSIS,
CALCULAR(
DISTINCTCOUNT (
‘Atribución de clientes potenciales'[Session ID])
)
)
VUELTA calc

Esto me da esto:

2020-11-18 15_07_42-Datos ficticios: Power BI Desktop.png

Esperaba esto:

Filtro = No directo
Etiquetas de fila Primer toque
Google 1
LinkedIn 1
Gran total 2
Filtro = Directo
Etiquetas de fila Primer toque
Directo 2
Gran total 2
Sin filtro
Etiquetas de fila Primer toque
Directo 1
Google 1
Gran total 2

¿Alguna sugerencia? Archivo PBX: https://www.dropbox.com/t/dNHdObA0HFUjVDwB

MFelix

En respuesta a karlal

Hola @karlal,

Eso tiene que ver con el contexto reemplaza tu medida por:

Counts Lead IDs FirstLead = 
VAR MinimumDatesTable =
    ADDCOLUMNS (
        SUMMARIZE ( 'DIm Channel', 'DIm Channel'[Channel] ),
        "@DateMin", MIN ( 'Lead Attribution'[First Lead Conversion Session Time] )
    )
VAR MinStarDateSelection =
    MINX( MinimumDatesTable, [@DateMin] )

VAR MinStarSessionStartTime =
    CALCULATE(MIN('Lead Attribution'[Session_Start_Time__c]),ALLEXCEPT('Lead Attribution','Lead Attribution'[Lead_id__c],'Lead Attribution'[Traffic Type]))
VAR AttributionFiltered =
    FILTER (
        'Lead Attribution',
        'Lead Attribution'[Session_Start_Time__c] = MinStarSessionStartTime&&'Lead Attribution'[Session_Start_Time__c]<=MinStarDateSelection
    )

VAr CountAXX =COUNTAX(
        AttributionFiltered
        ,DISTINCTCOUNT('Lead Attribution'[Lead_id__c])
    )
Return 
IF(HASONEVALUE('DIm Channel'[Channel]),CountAXX,SUMX(ALLSELECTED('Lead Attribution'[Lead_id__c]),CountAXX))

Esto puede necesitar algunos cambios en la parte SUMX.

MFelix

Hola @karlal,

No estoy seguro de entender la lógica basada en tus datos porque no puedo llegar al resultado que presentas al final de tu publicación.

He creado la siguiente medida:

Counts Value FirstLead = 
VAR MinimumDatesTable =
    ADDCOLUMNS (
        SUMMARIZE ( 'DIm Channel'; 'DIm Channel'[Channel] );
        "@DateMin"; MIN ( 'Lead Attribution'[First Lead Conversion Session Time] )
    )
VAR MinStarDateSelection =
    MINX ( MinimumDatesTable; [@DateMin] )
VAR AttributionFiltered =
    FILTER (
        'Lead Attribution';
        'Lead Attribution'[Session_Start_Time__c] <= MinStarDateSelection
    )
RETURN
    COUNTROWS ( AttributionFiltered )

El resultado está en el archivo adjunto.

Si este no es el resultado esperado, puede compartir cuáles son las líneas que cuentan para cada uno de los cálculos que presenta y cómo selecciona esa línea.

Lo que supongo en mi cálculo es que recoges para cada canal cuál es el primer cliente potencial más bajo y luego todas las fechas que son más bajas que eso.

para el filtro No he recogido las siguientes líneas:

Lead_id__c Session_Start_Time__c Tiempo de la sesión de conversión del primer cliente potencial ID de sesión Canal Tipo de trafico
x1 18/11/2019 18:32 26/11/2019 00:00 s100 Google No directo
x1 19/11/2019 19:26 26/11/2019 00:00 s101 Yahoo No directo
x1 25/11/2019 20:26 26/11/2019 00:00 s102 Directo Directo
x3 20/07/2019 06:11 15/01/2020 00:00 s108 Directo Directo
x3 21/11/2019 22:50 15/01/2020 00:00 s105 LinkedIn No directo

karlal

En respuesta a MFelix

@MFelix Estás en algo. Así es como termino con mis resultados filtrados esperados. Supongo que la inclusión del «Tiempo de la sesión de conversión del primer cliente potencial» es superflua en este cálculo, pero es importante cuando haré lo mismo para el último toque antes o en el «Tiempo de la sesión de conversión del primer cliente potencial». 2020-11-20 17_55_36-Datos de ejemplo - Excel.png

MFelix

En respuesta a karlal

Hola @karlal,

Lo siento, pero aún no entiendo cuáles son las fechas que desea comparar y con qué valores.

Al observar sus datos, cuál es la fecha mínima con la que se compara y por qué considera una fecha o no en su cálculo.

Solo estoy confundido acerca de por qué considera algunas fechas, por ejemplo, cuando no tiene filtro, ¿por qué el valor considera el 18 de noviembre y no el 20 de julio? ¿Es porque la Sesseion es menor o porque la primera derivación es menor?

karlal

En respuesta a MFelix

@MFelix Lo siento si no he sido claro. Quizás si empiezo desde el principio. Necesito atribuir una campaña a cada ID de cliente potencial y luego, en mi suma visual, los ID de cliente potencial a la campaña «Primer contacto» que se atribuyeron al filtro. Su pregunta sobre por qué el 18 de noviembre sobre el 20 de julio se debe a que el ID del cliente potencial es diferente.

MFelix

En respuesta a karlal

Hola @karlal,

Entonces, ¿la primera información que establece la fecha es el número de identificación del cliente potencial? entonces, ¿el ID de cliente potencial más bajo es el que se considera la fecha?

karlal

En respuesta a MFelix

@MFelix No, es por ID de cliente potencial. Quiero encontrar la primera sesión por ID de cliente potencial. En el caso de que no se apliquen filtros al tipo de tráfico, este es S100 para el ID de cliente potencial x1 y s108 para el cliente potencial x3. S100 tiene «Google» como canal y s108 tiene «Directo», por lo tanto:

karlal_0-1606134985659.png

Me he acercado un poco más a lo inspirado por su respuesta inicial.

Counts Lead IDs FirstLead = 
VAR MinimumDatesTable =
    ADDCOLUMNS (
        SUMMARIZE ( 'DIm Channel', 'DIm Channel'[Channel] ),
        "@DateMin", MIN ( 'Lead Attribution'[First Lead Conversion Session Time] )
    )
VAR MinStarDateSelection =
    MINX( MinimumDatesTable, [@DateMin] )

VAR MinStarSessionStartTime =
    CALCULATE(MIN('Lead Attribution'[Session_Start_Time__c]),ALLEXCEPT('Lead Attribution','Lead Attribution'[Lead_id__c],'Lead Attribution'[Traffic Type]))
VAR AttributionFiltered =
    FILTER (
        'Lead Attribution',
        'Lead Attribution'[Session_Start_Time__c] = MinStarSessionStartTime&&'Lead Attribution'[Session_Start_Time__c]<=MinStarDateSelection
    )

VAr CountAXX =COUNTAX(
        AttributionFiltered
        ,DISTINCTCOUNT('Lead Attribution'[Lead_id__c])
    )
Return CountAXX

Esto me lleva al filtrado correcto, pero el total es incorrecto.

karlal_0-1606216444074.png

MFelix

En respuesta a karlal

Hola @karlal,

Eso tiene que ver con el contexto reemplaza tu medida por:

Counts Lead IDs FirstLead = 
VAR MinimumDatesTable =
    ADDCOLUMNS (
        SUMMARIZE ( 'DIm Channel', 'DIm Channel'[Channel] ),
        "@DateMin", MIN ( 'Lead Attribution'[First Lead Conversion Session Time] )
    )
VAR MinStarDateSelection =
    MINX( MinimumDatesTable, [@DateMin] )

VAR MinStarSessionStartTime =
    CALCULATE(MIN('Lead Attribution'[Session_Start_Time__c]),ALLEXCEPT('Lead Attribution','Lead Attribution'[Lead_id__c],'Lead Attribution'[Traffic Type]))
VAR AttributionFiltered =
    FILTER (
        'Lead Attribution',
        'Lead Attribution'[Session_Start_Time__c] = MinStarSessionStartTime&&'Lead Attribution'[Session_Start_Time__c]<=MinStarDateSelection
    )

VAr CountAXX =COUNTAX(
        AttributionFiltered
        ,DISTINCTCOUNT('Lead Attribution'[Lead_id__c])
    )
Return 
IF(HASONEVALUE('DIm Channel'[Channel]),CountAXX,SUMX(ALLSELECTED('Lead Attribution'[Lead_id__c]),CountAXX))

Esto puede necesitar algunos cambios en la parte SUMX.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *