Cómo trabajar con datos
- Scripts para analizar secuencias de fuentes de tráfico
- Cómo exportar sesiones correctamente
- Cómo exportar hits
- Cómo emparejar una sesión con sus hits
- Informe de tráfico
- Informe “Etiquetas UTM”
- Informe “Populares”
- Informe de “Conversión de metas”
- Informe “Fuentes, resumen”
- Informe “Sistemas de anuncios”
- Informe de “Embudos de eventos de comercio electrónico” (no disponible en la interfaz de Yandex Metrica)
- Informe de “Embudos de eventos de comercio electrónico en diferentes secciones transversales” (no disponible en la interfaz de Yandex Metrica)
- Informe de “Retención de nuevos usuarios” (no disponible en la interfaz de Yandex Metrica)
- Informe de “Retención de nuevos usuarios en diferentes secciones transversales” (no disponible en la interfaz de Yandex Metrica)
Nota
Esta función solo está disponible con el paquete Yandex Metrica Pro.
Puede recopilar datos no agregados de Yandex Metrica en su clúster de ClickHouse desplegado en Yandex Cloud.
Este método de integración tiene las siguientes diferencias con LogsAPI:
- La integración incluye un conjunto ampliado de campos.
- A diferencia de LogsAPI, en las sesiones, los datos de atribución se almacenan en matrices. Todas las matrices
TrafficSource.XXX
están interrelacionadas según su tipo de atribución. El campoXXX
en la atribución requeridaYYY
:TrafficSource.XXX[indexOf(TrafficSource.Model, YYY)] as XXX
(ver ejemplos de Cómo exportar sesiones). - En las sesiones,
FirstPartyCookie
es equivalente aclientid
en LogsAPI.
Alerta
La integración detallada a continuación no es compatible con versiones anteriores del Logs API en términos de formato de datos.
Scripts para analizar secuencias de fuentes de tráfico
Los scripts generan cadenas de transición para cada usuario. Como resultado, usted recibe:
- Un informe sobre conversiones asociadas de todas las fuentes.
- Informes en diferentes modelos de atribución, incluidos aquellos no disponibles en la interfaz de Yandex Metrica (por ejemplo, modelo de atribución lineal).
Con base en estos datos, puede contar de manera independiente las secuencias de fuentes de tráfico más populares que resultan en una conversión.
Los scripts se publican en GitHub.
Cómo exportar sesiones correctamente
Nota
Los datos de la sesión se actualizan a medida que se dispone de nueva información. En promedio, el 99 % de las sesiones concluyen dentro de los 3 días de su inicio.
Ejemplo con múltiples campos
SELECT
VisitID,
CounterID,
StartDate,
CounterUserIDHash, -- el UserID interno que se usa en Yandex Metrica
FirstPartyCookie, -- equivalente a ClientID en LogsAPI
Duration,
EAction.Type,
EndURL,
Goals.ID,
IsBounce,
IsMobile,
OS,
OSFamily,
OSName,
PageViews,
Referer,
RegionID,
StartURL,
TrafficSource.ID, -- Los valores en el campo TrafficSource.ID representan:
{-1: Internal traffic. 0: Direct traffic.
1: Site link traffic. 2: Search engine traffic.
3: Ad traffic. 4: Cached page traffic.
5: Not defined. 6: External link traffic. 7: Mailing traffic.
8: Social network traffic. 9: Recommendation system traffic.
10: Messenger traffic. 11: Traffic from QR codes.}
TrafficSource.StrID, -- fuentes de tráfico legibles para las personas
TrafficSource.Model, -- todos los arreglos de TrafficSource.XXX están correlacionados.
El orden de los elementos dentro de ellos refleja el modelo de atribución de TrafficSource.Model usado para determinar el valor del campo TrafficSource.XXX. El valor del campo TrafficSource.XXX se localiza dentro del arreglo.
TrafficSource.ID[indexOf(TrafficSource.Model, 1)] as last_TraficSourceID, -- Fuente de tráfico por la atribución de "Último clic"
TrafficSource.ID[indexOf(TrafficSource.Model, 2)] as last_significant_TraficSourceID, -- Fuente de tráfico por la atribución de "Último clic no directo"
TrafficSource.ID[indexOf(TrafficSource.Model, 3)] as first_TraficSourceID, -- Fuente de tráfico por la atribución de "Primer clic"
TrafficSource.ID[indexOf(TrafficSource.Model, 4)] as last_yandex_direct_TraficSourceID, -- Fuente de tráfico por la atribución de "Último clic no directo Yandex Direct"
TrafficSource.ID[indexOf(TrafficSource.Model, 5)] as cd_last_significant_TraficSourceID, -- Fuente de tráfico por la atribución de "Último clic no directo (entre dispositivos)"
TrafficSource.ID[indexOf(TrafficSource.Model, 6)] as cd_first_TraficSourceID, -- Fuente de tráfico por la atribución de "Primer clic (entre dispositivos)"
TrafficSource.ID[indexOf(TrafficSource.Model, 7)] as cd_last_yandex_direct_TraficSourceID, -- Fuente de tráfico por la atribución de "Último clic no directo Yandex Direct (entre dispositivos)"
-- Para el tráfico de anuncios puede ver la plataforma de anuncios de la que vino.
Por ejemplo, respecto a la última fuente de tráfico significativa:
If(last_significant_TraficSourceID = 3, TrafficSource.AdvEnginePlaceStrID[indexOf(TrafficSource.Model, 2)], 'not_ad') as last_significant_adv_engine_id,
-- Para el tráfico de motor puede ver el motor de búsqueda del que vino.
Por ejemplo, respecto a la última fuente de tráfico significativa:
If(last_significant_TraficSourceID = 2, TrafficSource.SearchEngineStrID[indexOf(TrafficSource.Model, 2)], 'not_search') as last_significant_search_engine_id,
-- Lo mismo aplica para el tráfico de redes sociales, tráfico de los sistemas de recomendaciones y otras fuentes de tráfico.
UserAgent,
WatchIDs -- para enlazar WatchID desde hits_all. Hits IsParameter = 1 no se incluye en esta columna. Este arreglo tiene un límite de 500 hits y los hits que superen esa cantidad serán excluidos
FROM yandex_data_transfer_test.visits_dttql4la13mb206q472r -- inserte su base de datos y tabla de sesión aquí
WHERE StartDate = today() - 1 --inserte cualquier fecha, por ejemplo StartDate = toDate('2022-02-01') or StartDate = '2022-02-01'
AND CounterID = toUInt32(24226447)
GROUP BY
VisitID,
CounterID,
StartDate,
CounterUserIDHash,
FirstPartyCookie,
Duration,
EAction.Type,
EndURL,
Goals.ID,
IsBounce,
IsMobile,
OS,
OSFamily,
OSName,
PageViews,
Referer,
RegionID,
StartURL,
TrafficSource.Model,
TrafficSource.ID,
TrafficSource.StrID,
last_TraficSourceID,
last_significant_TraficSourceID,
first_TraficSourceID,
last_yandex_direct_TraficSourceID,
cd_last_significant_TraficSourceID,
cd_first_TraficSourceID,
cd_last_yandex_direct_TraficSourceID,
last_significant_adv_engine_id,
last_significant_search_engine_id,
UserAgent,
WatchIDs
HAVING sum(Sign) = 1
limit 1000
- Las sesiones pueden actualizarse retrospectivamente, por ejemplo, al coincidir conversiones sin conexión.
- Al habilitar la integración para las primeras sesiones,
sum(Sign)
puede ser inconsistente.
Qué sucede si no usa sum(Sign)
-
Los registros del conector almacenan versiones de sesión no colapsadas (es decir, múltiples versiones de la misma sesión). Si no las colapsa, los datos serán inconsistentes y la misma sesión (sus versiones más antiguas) se contará más de una vez.
Esto sucede porque cuando se actualiza una sesión, la versión antigua (
VisitVersion = 1
,Sign = 1
) no se elimina. En su lugar, se agrega una fila casi idéntica a la versión antigua, con la única diferencia siendo la banderaSign
(VisitVersion = 1
,Sign = -1
). Después de eso, se agrega la versión actualizada de la sesión con unSign
positivo (VisitVersion = 2
,Sign = 1
). Como resultado, cuandoagrupa por
los campos relevantes,sum(Sign)
le da un conteo de sesiones preciso y válido al “colapsar” versiones desactualizadas (Sign = 1
ySign = -1
serán cero).Ejemplo de una sesión no colapsada en registros de sesión
select VisitID, VisitVersion, Sign FROM yandex_data_transfer_test.visits_dttql4la13mb206q472r -- añada su base de datos y tabla de sesión aquí where StartDate = today()-3 -- especifique cualquier fecha aquí AND (CounterID = toUInt32(24226447)) -- añada su ID de etiqueta aquí and VisitID in (select VisitID from yandex_data_transfer_test.visits_dttql4la13mb206q472r -- añada su base de datos y tabla de sesión aquí where StartDate = today()-3 -- especifique cualquier fecha aquí group by VisitID having count(distinct VisitVersion) > 3 -- por ejemplo, tenemos una sesión que se modificó más de tres veces (o cualquier otra cantidad de veces) order by VisitID desc limit 1 -- por ejemplo, tenemos una sesión (o más) ) order by VisitID, VisitVersion, Sign
Ejemplo con colapso adecuado
select VisitID, sum(Sign) as visits FROM yandex_data_transfer_test.visits_dttql4la13mb206q472r -- añada su base de datos y tabla de sesión aquí where StartDate = today()-3 -- especifique cualquier fecha aquí AND (CounterID = toUInt32(24226447)) -- escriba su ID de etiqueta aquí and VisitID = 1243431264677003301 group by VisitID
Ejemplo de colapso usando la cláusula final después del nombre de la tabla
final
maneja la tabla de tal manera que las versiones ya están colapsadas. Elimina versiones de sesión redundantes por sí mismo. Este método corre mucho más lento que calcular usando dimensiones ysum(Sign)
.select VisitID, VisitVersion, Sign FROM yandex_data_transfer_test.visits_dttql4la13mb206q472r final -- añada su base de datos y tabla de sesión aquí where StartDate = today()-3 -- especifique cualquier fecha aquí AND (CounterID = toUInt32(24226447)) and VisitID = 1243431264677003301 order by VisitID, VisitVersion, Sign
Cómo exportar hits
Nota
Al trabajar con hits, también es necesario considerar su versionado. Similar a las sesiones, un solo hit (WatchID
) puede tener múltiples HitVersion
, que pueden ser colapsadas usando el campo Sign
. Es importante exportar hits siguiendo los mismos principios descritos en la sección Cómo exportar sesiones correctamente. También se permite el uso de la cláusula final
.
Ejemplo
select CounterID,
EventDate,
CounterUserIDHash, -- the UserID used in Yandex Metrica
FirstPartyCookie, -- equivalente a ClientID en LogsAPI
UTCEventTime,
WatchID,
Referer,
OriginalURL, -- la URL, a diferencia de OriginalURL, puede truncarse
URL,
UTMSource,
IsMobile,
OS,
OSFamily,
OSName,
FirstPartyCookie,
IsArtifical,
IsDownload,
IsLink,
IsNotBounce,
IsPageView,
IsParameter
from yandex_data_transfer_test.hits_dttql4la13mb206q472r -- inserte su base de datos y tabla de sesión aquí
where EventDate = today()-1 -- inserte cualquier fecha aquí
and CounterID = 24226447 -- inserte el ID de su etiqueta aquí
group by CounterID,
EventDate,
CounterUserIDHash, -- the internal UserID used in Yandex Metrica
FirstPartyCookie, -- equivalente al ClientID en LogsAPI
UTCEventTime,
WatchID,
Referer,
OriginalURL, -- la URL, a diferencia de OriginalURL, puede truncarse
URL,
UTMSource,
IsMobile,
OS,
OSFamily,
OSName,
FirstPartyCookie,
IsArtifical,
IsDownload,
IsLink,
IsNotBounce,
IsPageView,
IsParameter
having sum(Sign) = 1
Cómo emparejar una sesión con sus hits
Para emparejar un VisitID
con sus hits (WatchID
), la columna WatchIDs
por sí sola puede no ser suficiente. Esto se debe a que el campo WatchID
no incluye los hits de parámetros de las sesiones. Puedes compilar una lista de hits dentro de la sesión manualmente. Para esto, necesita la fecha de inicio de la sesión, la fecha de finalización y el ID de usuario.
Ejemplo
select VisitID, -- este "select" contendrán sesiones con el arreglo de clics obtenido
CounterUserIDHash,
UTCStartTime,
Duration,
UTCEndTime,
groupArray(WatchID) as `watchids.id`,
groupArray(IsPageView) as `watchids.is_page_view`,
groupArray(IsParameter) as `watchids.is_parameter`,
groupArray(UTCEventTime) as `watchids.is_utc_event_time`
from ( -- this "select" will contain sessions, with a separate entry for each hit
select VisitID,
a.CounterUserIDHash as CounterUserIDHash,
UTCStartTime,
Duration,
UTCEndTime,
WatchID,
IsPageView,
IsParameter,
UTCEventTime
from
(select -- necesitamos sesiones, el usuario y las fechas de inicio y fin de la sesión. ¡Pude que la sesión se actualice de forma retroactiva!
VisitID,
CounterUserIDHash,
UTCStartTime,
Duration,
toDateTime(UTCStartTime) + Duration as UTCEndTime
from yandex_data_transfer_test.visits_dttql4la13mb206q472r final
where StartDate = '2023-04-01'
) as a
left join
(select -- necesitamos clics, usuario, y la fecha y hora del clic. Los datos de clic históricos pueden cambiar.
WatchID,
CounterUserIDHash,
IsPageView,
IsParameter,
UTCEventTime
from yandex_data_transfer_test.hits_dttql4la13mb206q472r final
where EventDate >= '2023-04-01'
and EventDate <= toDate('2023-04-01')+5
) as b
on a.CounterUserIDHash = b.CounterUserIDHash -- use this user ID specifically
where UTCEventTime >= UTCStartTime and -- clics con una hora que no sea anterior al inicio de la sesión
UTCEventTime <= UTCEndTime -- clics con una hora que no sea posterior al final de la sesión
order by CounterUserIDHash, UTCEventTime
)
group by VisitID,
CounterUserIDHash,
UTCStartTime,
Duration,
UTCEndTime
limit 100
Informe de tráfico
Gráfica
SELECT StartDate AS `ym:s:date`,
sum(Sign) AS `ym:s:visits` -- colapsa adecuadamente múltiples versiones de sesión en las últimas y más relevantes y cuenta el número de sesiones
from yandex_data_transfer_test.visits_dttql4la13mb206q472r -- añada su base de datos y tabla de sesión aquí
as `default.visits_all`
WHERE `ym:s:date` >= toDate('2023-01-31') -- esta versión no es compatible con los datos históricos del periodo anterior a la creación del conector
and `ym:s:date` <= toDate('2023-02-06') -- dos para "hoy" (y actualizaciones lentas para los días más recientes, como las conversiones fuera de línea) pueden llegar más tarde en relación con la interface
and CounterID = 24226447 -- reemplace con su ID de etiqueta
GROUP BY `ym:s:date`
WITH TOTALS
HAVING `ym:s:visits` >= 0.0
ORDER BY `ym:s:date` ASC
limit 0.7
Tabla
SELECT
toDate(StartDate) AS `ym:s:datePeriodday`,
sum(Sign) AS `ym:s:visits`,
uniqExact(CounterUserIDHash) AS `ym:s:users`,
sum(PageViews * Sign) AS `ym:s:pageviews`,
uniqExactIf(CounterUserIDHash, (`TrafficSource.StartTime`[indexOf(`TrafficSource.Model`, 3)]) = (`TrafficSource.StartTime`[indexOf(`TrafficSource.Model`, 1)])) / uniqExact(CounterUserIDHash) * 100. AS `ym:s:percentNewVisitors`, -- la atribución 3 representa la atribución "Primera sesión" y la atribución 1 representa la "Última sesión"
100. * (sum(IsBounce * Sign) / `ym:s:visits`) AS `ym:s:bounceRate`,
`ym:s:pageviews` / `ym:s:visits` AS `ym:s:pageDepth`,
sum(Duration * Sign) / `ym:s:visits` AS `ym:s:avgVisitDurationSeconds`
-- este conector no es compatible con "Porcentaje de robots" y las métricas de "Usuarios entre dispositivos"
FROM yandex_data_transfer_test.visits_dttql4la13mb206q472r -- inserte su base de datos y tabla de sesión aquí
AS `default.visits_all`
WHERE (StartDate >= toDate('2023-03-10'))
AND (StartDate <= toDate('2023-03-16'))
AND (CounterID = toUInt32(24226447)) -- cambie al ID de su etiqueta
GROUP BY `ym:s:datePeriodday`
WITH TOTALS
HAVING (`ym:s:visits` > 0.) OR (`ym:s:users` > 0.) OR (`ym:s:pageviews` > 0.)
ORDER BY `ym:s:datePeriodday` DESC
LIMIT 0, 50
Informe “Etiquetas UTM”
Ejemplo
SELECT
`TrafficSource.UTMSource`[indexOf(`TrafficSource.Model`, 2)] AS `ym:s:lastSignUTMSource`,
sum(Sign) AS `ym:s:visits`,
least(uniqExact(CounterUserIDHash), `ym:s:visits`) AS `ym:s:users`,
100. * (sum(IsBounce * Sign) / `ym:s:visits`) AS `ym:s:bounceRate`,
sum(PageViews * Sign) / `ym:s:visits` AS `ym:s:pageDepth`,
sum(Duration * Sign) / `ym:s:visits` AS `ym:s:avgVisitDurationSeconds`,
sumArray(arrayMap(x → (if(isFinite(x), x, 0) * Sign), arrayMap(x_0 → toInt64(notEmpty(x_0)), `EPurchase.ID`))) AS `ym:s:ecommercePurchases`
FROM yandex_data_transfer_test.visits_dttql4la13mb206q472r -- inserte su base de datos y tabla de sesión aquí
WHERE (StartDate >= toDate('2023-03-10'))
AND (StartDate <= toDate('2023-03-16'))
AND (CounterID = 24226447) -- inserte el ID de su etiqueta aquí
AND (`ym:s:lastSignUTMSource` != '')
GROUP BY `ym:s:lastSignUTMSource`
HAVING (`ym:s:visits` > 0.) OR (`ym:s:users` > 0.) OR (`ym:s:ecommercePurchases` > 0.)
ORDER BY
`ym:s:visits` DESC,
`ym:s:lastSignUTMSource` ASC
LIMIT 0, 50
Informe “Populares”
Ejemplo
SELECT
URLHash(URL, toInt8(0)) AS `ym:pv:URLPathLevel1Hash`,
anyHeavyIf(domain(URL), domain(URL) != '') AS `ym:pv:URLPathLevel1HashFavicon`,
max(URLHierarchy(ifNull(URL, ''))[1]) AS `ym:pv:URLPathLevel1`,
sum(Sign * W) AS `ym:pv:pageviews`,
least(uniq(CounterUserIDHash), `ym:pv:pageviews`) AS `ym:pv:users`
FROM yandex_data_transfer_test.hits_dttql4la13mb206q472r AS `default.hits_all`
WHERE (EventDate >= toDate('2023-03-10'))
AND (EventDate <= toDate('2023-03-16'))
and CounterID = 24226447 -- inserte el ID de su etiqueta aquí
and IsPageView
GROUP BY `ym:pv:URLPathLevel1Hash`
HAVING `ym:pv:pageviews` > 0.0 AND (`ym:pv:pageviews` > 0.0 OR `ym:pv:users` > 0.0)
WITH TOTALS
ORDER BY
`ym:pv:pageviews` DESC,
`ym:pv:URLPathLevel1` ASC,
`ym:pv:URLPathLevel1Hash` ASC
LIMIT 0, 50
Informe de “Conversión de metas”
Ejemplo
WITH 1. AS W, 17069575 as my_goal_id -- cambie el ID de su meta
SELECT
toDate(StartDate) AS `ym:s:datePeriodday`,
100. * (sum(has(`Goals.ID`, my_goal_id) * (Sign * W)) / sum(Sign * W)) AS `ym:s:goal17069575conversionRate`,
sum(arrayCount(x → (my_goal_id = x), `Goals.ID`) * (Sign * W)) AS `ym:s:goal17069575reaches`,
sumIf(Sign * W, arrayExists(x_0 → (x_0 = my_goal_id), `Goals.ID`)) AS `ym:s:goal17069575visits`,
least(toFloat64(uniqIf(CounterUserIDHash, arrayExists(x_0 → (x_0 = my_goal_id), `Goals.ID`))), `ym:s:goal17069575visits`) AS `ym:s:goal17069575users`,
sumIf(PageViews * (Sign * W), arrayExists(x_0 → (x_0 = my_goal_id), `Goals.ID`)) AS `ym:s:goal17069575pageviews`,
(least(uniqIf(CounterUserIDHash, ((`TrafficSource.StartTime`[indexOf(`TrafficSource.Model`, 3)]) = (`TrafficSource.StartTime`[indexOf(`TrafficSource.Model`, 1)])) AND arrayExists(x_0 → (x_0 = my_goal_id), `Goals.ID`)), uniqIf(CounterUserIDHash, arrayExists(x_0 → (x_0 = my_goal_id), `Goals.ID`))) / uniqIf(CounterUserIDHash, arrayExists(x_0 → (x_0 = my_goal_id), `Goals.ID`))) * 100. AS `ym:s:goal17069575percentNewVisitors`,
100. * (sumIf(IsBounce * (Sign * W), arrayExists(x_0 → (x_0 = my_goal_id), `Goals.ID`)) / `ym:s:goal17069575visits`) AS `ym:s:goal17069575bounceRate`,
`ym:s:goal17069575pageviews` / `ym:s:goal17069575visits` AS `ym:s:goal17069575pageDepth`,
sumIf(Duration * (Sign * W), arrayExists(x_0 → (x_0 = my_goal_id), `Goals.ID`)) / `ym:s:goal17069575visits` AS `ym:s:goal17069575avgVisitDurationSeconds`
FROM yandex_data_transfer_test.visits_dttql4la13mb206q472r -- inserte su base de datos y su tabla de sesión aquí
WHERE (StartDate >= toDate('2023-02-18'))
AND (StartDate <= toDate('2023-03-17'))
AND (CounterID = 24226447) -- cambie al ID de su etiqueta
GROUP BY `ym:s:datePeriodday`
HAVING (`ym:s:goal17069575reaches` > 0.) AND ((`ym:s:goal17069575reaches` > 0.) OR (`ym:s:goal17069575visits` > 0.) OR (`ym:s:goal17069575users` > 0.) OR (`ym:s:goal17069575pageviews` > 0.))
ORDER BY `ym:s:datePeriodday` DESC
LIMIT 0, 50
Informe “Fuentes, resumen”
Tabla
WITH 1. AS W
SELECT
`TrafficSource.ID`[indexOf(`TrafficSource.Model`, 2)] AS `ym:s:lastSignTrafficSource`,
sum(Sign * W) AS `ym:s:visits`,
least(toFloat64(uniq(CounterUserIDHash)), `ym:s:visits`) AS `ym:s:users`,
100. * (sum(IsBounce * (Sign * W)) / `ym:s:visits`) AS `ym:s:bounceRate`,
sum(PageViews * (Sign * W)) / `ym:s:visits` AS `ym:s:pageDepth`,
sum(Duration * (Sign * W)) / `ym:s:visits` AS `ym:s:avgVisitDurationSeconds`
from yandex_data_transfer_test.visits_dttql4la13mb206q472r -- inserte su base de datos y su tabla de sesión aquí
WHERE (StartDate >= toDate('2023-03-10'))
AND (StartDate <= toDate('2023-03-16'))
AND (CounterID = 24226447) -- cambie al ID de su etiqueta
GROUP BY `ym:s:lastSignTrafficSource`
WITH TOTALS
HAVING (`ym:s:visits` > 0.) OR (`ym:s:users` > 0.)
ORDER BY
`ym:s:visits` DESC,
`ym:s:lastSignTrafficSource` ASC
LIMIT 0, 50
Tabla, detallada
WITH 1. AS W
SELECT
`TrafficSource.ID`[indexOf(`TrafficSource.Model`, 2)] AS `ym:s:lastSignTrafficSource`,
`TrafficSource.StrID`[indexOf(`TrafficSource.Model`, 2)] AS `ym:s:lastSignTrafficSourceName`,
if(
((`TrafficSource.Domain`[indexOf(`TrafficSource.Model`, 2)]) != '') AND
(`ym:s:lastSignTrafficSource` IN (-1, toInt8(1))),
`TrafficSource.Domain`[indexOf(`TrafficSource.Model`, 2)],
if(`ym:s:lastSignTrafficSource` = toInt8(2),
`TrafficSource.SearchEngineStrID`[indexOf(`TrafficSource.Model`, 2)],
if(`ym:s:lastSignTrafficSource` = toInt8(3), `TrafficSource.AdvEnginePlaceStrID`[indexOf(`TrafficSource.Model`, 2)],
if(`ym:s:lastSignTrafficSource` = toInt8(8), toString(`TrafficSource.SocialSourceNetworkStrID`[indexOf(`TrafficSource.Model`, 2)]),
if(`ym:s:lastSignTrafficSource` = toInt8(9), toString(if((`TrafficSource.RecommendationSystemID`[indexOf(`TrafficSource.Model`, 2)]) = 0, '1', `TrafficSource.RecommendationSystemStrID`[indexOf(`TrafficSource.Model`, 2)])),
if(`ym:s:lastSignTrafficSource` = toInt8(10), toString(if((`TrafficSource.MessengerID`[indexOf(`TrafficSource.Model`, 2)]) = 0, '1', `TrafficSource.MessengerStrID`[indexOf(`TrafficSource.Model`, 2)])),
if(`ym:s:lastSignTrafficSource` = toInt8(11), toString(`TrafficSource.QRCodeProviderStrID`[indexOf(`TrafficSource.Model`, 2)]),
''
)
)
)
)
)
)
) AS `ym:s:lastSignSourceEngine`,
anyHeavy(if(`ym:s:lastSignTrafficSource` IN (-1, toInt8(1)), concatAssumeInjective('http://', `TrafficSource.Domain`[indexOf(`TrafficSource.Model`, 2)]), '')) AS `ym:s:lastSignSourceEngineURL`,
sum(Sign * W) AS `ym:s:visits`,
least(toFloat64(uniqExact(CounterUserIDHash)), `ym:s:visits`) AS `ym:s:users`,
100. * (sum(IsBounce * (Sign * W)) / `ym:s:visits`) AS `ym:s:bounceRate`,
sum(PageViews * (Sign * W)) / `ym:s:visits` AS `ym:s:pageDepth`,
sum(Duration * (Sign * W)) / `ym:s:visits` AS `ym:s:avgVisitDurationSeconds`
FROM yandex_data_transfer_test.visits_dttql4la13mb206q472r -- insert your database and session table here
WHERE (StartDate >= toDate('2023-03-10'))
and (StartDate >= toDate('2023-03-16'))
AND (CounterID = 24226447) -- cambie al ID de su etiqueta
GROUP BY
`ym:s:lastSignTrafficSource`,
`ym:s:lastSignTrafficSourceName`,
`ym:s:lastSignSourceEngine`
WITH TOTALS
HAVING (`ym:s:visits` > 0.) OR (`ym:s:users` > 0.)
ORDER BY
`ym:s:visits` DESC,
`ym:s:lastSignTrafficSource` ASC,
`ym:s:lastSignSourceEngine` ASC
LIMIT 0, 50
Informe “Sistemas de anuncios”
Tabla
WITH 1. AS W
SELECT
`TrafficSource.AdvEnginePlaceStrID`[indexOf(`TrafficSource.Model`, 2)] as `ym:s:lastSignAdvEngine`, -- Añada la plataforma por la atribución de "Último clic no directo"
sum(Sign * W) AS `ym:s:visits`,
least(toFloat64(uniqExact(CounterUserIDHash)), `ym:s:visits`) AS `ym:s:users`,
100. * (sum(IsBounce * (Sign * W)) / `ym:s:visits`) AS `ym:s:bounceRate`,
sum(PageViews * (Sign * W)) / `ym:s:visits` AS `ym:s:pageDepth`,
sum(Duration * (Sign * W)) / `ym:s:visits` AS `ym:s:avgVisitDurationSeconds`
from yandex_data_transfer_test.visits_dttql4la13mb206q472r -- inserte su base de datos y su tabla de sesión aquí
WHERE (StartDate = toDate('2023-03-15'))
AND (CounterID = 24226447) -- cambie al ID de su etiqueta
AND (`ym:s:lastSignAdvEngine` != '')
AND ((`TrafficSource.ID`[indexOf(`TrafficSource.Model`, 2)]) = toInt8(3)) -- fuente de tráfico "Añadir tráfico" por la atribución "Último clic no directo"
GROUP BY `ym:s:lastSignAdvEngine`
WITH TOTALS
HAVING (`ym:s:visits` > 0.) OR (`ym:s:users` > 0.)
ORDER BY
`ym:s:visits` DESC,
`ym:s:lastSignAdvEngine` ASC
LIMIT 0, 50
Informe de “Embudos de eventos de comercio electrónico” (no disponible en la interfaz de Yandex Metrica)
La integración le permite construir informes más sofisticados que no están disponibles en Yandex Metrica. Por ejemplo, puede construir un embudo de eventos de comercio electrónico.
Recomendamos que cumpla con las siguientes condiciones para este informe:
- Los eventos de
detalle
,agregar
ycompra
estén configurados y pasados correctamente. - Tiene al menos 10 usuarios por sección transversal.
- La tasa de conversión para el primer paso es más del 1 %.
- Tiene suficientes datos para secciones transversales, siempre que los use (ver el informe sobre embudos de eventos de comercio electrónico en diferentes secciones transversales).
Informe de muestra
select counter_id,
step0_users, -- cantidad total de usuarios
step1_users, -- usuarios que vieron los productos
step2_users, -- usuarios que vieron productos, y luego los añadieron a su carrito de compra
step3_users, -- usuarios que vieron productos y luego los añadieron a su carrito de compra,
y luego concretaron la compra
round(step0_users/step0_users*100, 4) as perc_step0, -- % cantidad total de usuarios
round(step1_users/step0_users*100, 4) as perc_step1, -- % usuarios que vieron productos
round(step2_users/step0_users*100, 4) as perc_step2, -- % usuarios que vieron productos, y luego los añadieron al carrito de compra
round(step3_users/step0_users*100, 4) as perc_step3 -- % usuarios que vieron productos, luego los añadieron al carrito de compra y luego hicieron una compra
from
(select
counter_id,
sum(step_1) as step1_users,
sum(step_2) as step2_users,
sum(step_3) as step3_users
from
(select
CounterID as counter_id,
CounterUserIDHash as user_id,
max(e.Type = 1) as step_1, -- solo los productos vistos
sequenceMatch('(?1)(?2)')(e.EventTime, (e.Type = 1), (e.Type = 4)) as step_2, -- viewed products, then added them to the shopping cart
sequenceMatch('(?1)(?2)(?3)')(e.EventTime, (e.Type = 1), (e.Type = 4), (e.Type = 3)) as step_3 -- productos vistos, luego se añadieron al carrito de compra y luego se hizo una compra
from
(select
CounterUserIDHash,
CounterID,
e.Type, -- tipos de eventos de (1 — detalle, 2 — estado del carrito de compra, 3 — hizo una compra, 4 — se añadió un producto al carrito de compra, 5 — se eliminó un producto del carrito de compra)
e.EventTime
from yandex_data_transfer_test.visits_dttql4la13mb206q472r final -- inserte su base de datos y tablas de sesión aquí
array join EAction as e --arrayJoin arrayJoin crea filas separadas para los eventos de comercio electrónico en el arreglo
where (StartDate >= '2023-02-01')
and (StartDate <= '2023-02-28')
and CounterID = 24226447 -- cambie al ID de su etiqueta
)
group by counter_id, user_id
)
group by counter_id) as a
inner join (select
CounterID as counter_id,
uniqExact(CounterUserIDHash) as step0_users
from yandex_data_transfer_test.visits_dttql4la13mb206q472r final -- inserte su base de datos y su tabla de sesión aquí
where (StartDate >= '2023-02-01')
and (StartDate <= '2023-02-28')
and CounterID = 24226447 -- cambie al ID de su etiqueta
group by counter_id) as b
on a.counter_id = b.counter_id
Visualización de muestra
Informe de “Embudos de eventos de comercio electrónico en diferentes secciones transversales” (no disponible en la interfaz de Yandex Metrica)
También puede construir un embudo por varias secciones transversales: fuente de tráfico, sistema operativo, dispositivo.
Ejemplo de construcción de un embudo en una sección transversal IsMobile
select counter_id,
is_mobile,
step0_users, -- cantidad total de usuarios
step1_users, -- usuarios que vieron los productos
step2_users, -- usuarios que vieron productos, y luego los añadieron al carrito de compra
step3_users, -- usuarios que vieron productos y luego los añadieron al carrito de compra y luego hicieron una compra
round(step0_users/step0_users*100, 4) as perc_step0, -- % cantidad total de usuarios
round(step1_users/step0_users*100, 4) as perc_step1, -- % usuarios que vieron productos
round(step2_users/step0_users*100, 4) as perc_step2, -- % usuarios que vieron los productos, y luego los añadieron al carrito de compra
round(step3_users/step0_users*100, 4) as perc_step3 -- % usuarios que vieron productos, luego los añadieron al carrito de compra e hicieron una compra
from
(select
counter_id,
is_mobile,
sum(step_1) as step1_users,
sum(step_2) as step2_users,
sum(step_3) as step3_users
from
(select
CounterID as counter_id,
CounterUserIDHash as user_id,
is_mobile,
max(e.Type = 1) as step_1, -- solo productos vistos
sequenceMatch('(?1)(?2)')(e.EventTime, (e.Type = 1), (e.Type = 4)) as step_2, -- productos vistos, y luego los añadieron al carrito de compra
sequenceMatch('(?1)(?2)(?3)')(e.EventTime, (e.Type = 1), (e.Type = 4), (e.Type = 3)) as step_3 -- productos vistos, y luego añadidos al carrito de compra, y luego hicieron una compra
from
(select
CounterUserIDHash,
CounterID,
IsMobile as is_mobile,
e.Type, -- tipos de eventos de comercio electrónico (1 — detalle, 2 — el estado del carrito de compra, 3 — se hizo una compra, 4 — se añadió un producto al carrito de compra, 5 — se eliminó un producto del carrito de compra)
e.EventTime
from yandex_data_transfer_test.visits_dttql4la13mb206q472r final -- inserta su base de datos y tabla de sesión aquí
array join EAction as e --arrayJoin crea filas separadas para los eventos de comercio electrónico en el arreglo
where (StartDate >= '2023-02-01')
and (StartDate <= '2023-02-28')
and CounterID = 24226447 -- cambie al ID de su etiqueta
)
group by counter_id, user_id, is_mobile
)
group by counter_id, is_mobile) as a
inner join (select
CounterID as counter_id,
IsMobile as is_mobile,
uniqExact(CounterUserIDHash) as step0_users
from yandex_data_transfer_test.visits_dttql4la13mb206q472r final -- inserte su base de datos y tabla de sesión aquí
where (StartDate >= '2023-02-01')
and (StartDate <= '2023-02-28')
and CounterID = 24226447 -- cambio al ID de su tabla
group by counter_id, is_mobile) as b
on a.counter_id = b.counter_id and a.is_mobile = b.is_mobile
Visualización de muestra
Informe de “Retención de nuevos usuarios” (no disponible en la interfaz de Yandex Metrica)
Ejemplo
with main as
(select
counter_id,
num_week,
uniq(user_id) as users
from
(select
CounterUserIDHash as user_id,
CounterID as counter_id,
toDate(FirstVisit) as first_date, -- la primera sesión del usuario en su sitio
StartDate as event_date,
(toMonday(event_date) - toMonday(first_date))/7 as num_week
from yandex_data_transfer_test.visits_dttql4la13mb206q472r final -- inserte su base de datos y tabla de sesión aquí
where event_date >= '2022-12-01' -- 15-week period
and event_date <= toDate('2022-12-31') + 92 -- 15-week period
and first_date >= '2022-12-01' -- solo consideramos usuarios nuevos que llegaron en diciembre
and first_date <= '2022-12-31' -- solo consideramos a los usuarios nuevos que llegaron en diciembre
and counter_id = 24226447 -- cambie al ID de su etiqueta
)
group by
counter_id,
num_week
order by num_week)
select counter_id,
a.users as users,
b.users as users_first_week,
round(a.users/b.users*100, 4) as perc_retention
from main as a
inner join (select * from main where num_week = 0) as b
on a.counter_id = b.counter_id
Visualización de muestra
Informe de “Retención de nuevos usuarios en diferentes secciones transversales” (no disponible en la interfaz de Yandex Metrica)
También puede agregar una sección transversal y comparar la retención de usuarios en diferentes secciones transversales. Recomendamos que la sección transversal incluya al menos 30 usuarios y represente al menos el 5 % del total de la base de usuarios.
Aquí tiene un ejemplo de retención a través de diferentes fuentes de tráfico para la primera sesión de usuario
with main as
(select
counter_id,
param,
num_week,
uniq(user_id) as users
from
(select
CounterUserIDHash as user_id,
CounterID as counter_id,
toDate(FirstVisit) as first_date, -- la primera sesión del usuario en el sitio
StartDate as event_date,
(toMonday(event_date) - toMonday(first_date))/7 as num_week,
TrafficSource.ID[indexOf(TrafficSource.Model, 3)] as param
from yandex_data_transfer_test.visits_dttql4la13mb206q472r -- inserte su base de datos y tabla de sesión aquí
where event_date >= '2022-12-01' -- 15-week period
and event_date <= toDate('2022-12-31') + 92 -- 15-week period
and first_date >= '2022-12-01' -- solo consideramos usuarios nuevos
que llegaron en diciembre
and first_date <= '2022-12-31' -- solo consideramos usuarios nuevos,
que llegaron en diciembre
and counter_id = 24226447 -- cambie al ID de su etiqueta
)
group by
counter_id,
param,
num_week,
param
order by param, num_week)
select counter_id,
param,
a.users as users,
b.users as users_first_week,
round(a.users/b.users*100, 4) as perc_retention
from main as a
inner join (select * from main where num_week = 0) as b
on a.counter_id = b.counter_id and a.param = b.param
Enlaces útiles |
Capacitación en línea |