---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://www.yandex.com/support/metrica/en/pro/data-work.md
  - https://www.yandex.com/support/metrica/es/pro/data-work.md
  - https://www.yandex.com/support/metrica/pt/pro/data-work.md
  - https://www.yandex.com/support/metrica/ru/pro/data-work.md
  - https://www.yandex.com/support/metrica/tr/pro/data-work.md
  - https://www.yandex.com/support/metrica/zh/pro/data-work.md
  - href: es/pro/data-work.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
title: Cómo trabajar con datos
description: Esta función solo está disponible con el paquete Yandex Metrica Pro.
---
> **Documentation Index:** Fetch the complete configuration index at https://www.yandex.com/support/metrica/es/llms.txt


# Cómo trabajar con datos


{% note info %}

Esta función solo está disponible con el paquete Yandex Metrica Pro.

{% endnote %}


Puede recopilar datos no agregados de [Yandex Metrica](https://metrica.yandex.com/) en su clúster de ClickHouse desplegado en [Yandex Cloud](https://yandex.cloud/en-ru).

Este método de integración tiene las siguientes diferencias con [LogsAPI](https://yandex.ru/dev/metrika/doc/api2/logs/intro.html):

- 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 campo `XXX` en la atribución requerida `YYY`: `TrafficSource.XXX[indexOf(TrafficSource.Model, YYY)] como XXX`.

  [Cómo exportar sesiones correctamente](#visits)

- En las sesiones, `FirstPartyCookie` es equivalente a `clientid` en LogsAPI.


{% note alert %}

La integración detallada a continuación no es compatible con versiones anteriores del Logs API en términos de formato de datos.

{% endnote %}


## Scripts para analizar secuencias de fuentes de tráfico {#scripts}

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](https://github.com/zhdanchik/yandex_metrika_connector_cases).

## Cómo exportar sesiones correctamente {#visits}


{% note info %}

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.

{% endnote %}



{% cut "Ejemplo con múltiples campos" %}


```javascript
SELECT
    VisitID,
    CounterID,
    StartDate,
    CounterUserIDHash, -- el UserID interno que se usa en Yandex Metrica
    FirstPartyCookie, -- equivalente a ClientID en la API de registros
    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 lo siguiente: 
{-1: Tráfico interno. 0: Tráfico directo. 
1: Clics en los enlaces en sitios web. 2: Tráfico de motores de búsqueda.
3: Tráfico publicitario. 4: Tráfico de páginas en caché.
5: Sin definir. 6: Tráfico de enlaces externos. 7: Tráfico de correo electrónico.
8: Tráfico de redes sociales. 9: Tráfico de sistemas de recomendación. 
10: Tráfico de mensajería instantánea. 11: Tráfico procedente de códigos QR.}
    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 arreglo contiene el valor del propio TrafficSource.XXX.
    TrafficSource.ID[indexOf(TrafficSource.Model, 1)] as last_TraficSourceID, -- Fuente de tráfico basado en el atributo de "Último clic"
    TrafficSource.ID[indexOf(TrafficSource.Model, 2)] as last_significant_TraficSourceID, --  Fuente de tráfico por la atribución de "Último clic indirecto".
    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 indirecto de Yandex Direct"
    TrafficSource.ID[indexOf(TrafficSource.Model, 5)] as cd_last_significant_TraficSourceID, --  Fuente de tráfico por la atribución de  "Último clic indirecto (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 indirecto Yandex Direct (entre dispositivos)"
    
    -- Para el tráfico y promoción de anuncios puede ver la plataforma de anuncios de la que vino. 
Ejemplo con 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,
    -- 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 -- Se usa para enlazar WatchID desde hits_all. Visitas con IsParameter = 1 no se incluye en esta columna. Este arreglo tiene un límite de 500 visitas. Cualquier vistia que supere esa cantidad será excluido
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
```


{% endcut %}


- 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 bandera `Sign` (`VisitVersion = 1`, `Sign = -1`). Después de eso, se agrega la versión actualizada de la sesión con un `Sign` positivo (`VisitVersion = 2`, `Sign = 1`). Como resultado, cuando `agrupa por` los campos relevantes, `sum(Sign)` le da un conteo de sesiones preciso y válido al “colapsar” versiones desactualizadas (`Sign = 1` y `Sign = -1` serán cero).
    
    
    {% cut "Ejemplo de una sesión no colapsada en registros de sesión" %}
    
    
    ```javascript
    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
    ```
   ![](../_assets/pro-visits1.png)
    
    {% endcut %}
    
    {% cut "Ejemplo con colapso adecuado" %}
    
    
    ```javascript
    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
    ```
   ![](../_assets/pro-visits2.png)
    
    {% endcut %}
    
    {% cut "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 y `sum(Sign)`.
    
    ```javascript
    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
    ```
   ![](../_assets/pro-visits3.png)
    
    {% endcut %}

## Cómo exportar hits {#hits}

[Acerca de los hits](https://www.yandex.com/support/metrica/es/pro/price.md#hit)


{% note info %}

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](#visits). También se permite el uso de la cláusula `final`.

{% endnote %}



{% cut "Ejemplo" %}


```javascript
select CounterID,
        EventDate,
        CounterUserIDHash, -- el UserID se usa en 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, -- el UserID interno se usa en 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
```


{% endcut %}


## Cómo emparejar una sesión con sus hits {#visit-hit}

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.


{% cut "Ejemplo" %}


```javascript
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 ( -- este “select” contendrá sesiones, con una entrada separada para cada visita
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
```


{% endcut %}


## Informe de tráfico {#traffic}


{% cut "Gráfica " %}


```javascript
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
```


{% endcut %}

{% cut "Tabla" %}


```javascript
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
```


{% endcut %}


## Informe “Etiquetas UTM” {#utm}


{% cut "Ejemplo" %}


```javascript
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
```


{% endcut %}


## Informe “Populares” {#popular}


{% cut "Ejemplo" %}


```javascript
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
```


{% endcut %}


## Informe de “Conversión de metas” {#conversion}


{% cut "Ejemplo" %}


```javascript
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
```


{% endcut %}


## Informe “Fuentes, resumen” {#sources}


{% cut "Tabla" %}


```javascript
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
```


{% endcut %}

{% cut "Tabla, detallada" %}


```javascript
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.SearchEngineRootStrID`[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 -- 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) -- 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
```


{% endcut %}


## Informe “Sistemas de anuncios” {#advertisement}


{% cut "Tabla" %}


```javascript
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
```


{% endcut %}


## Informe de “Embudos de eventos de comercio electrónico” (no disponible en la interfaz de Yandex Metrica) {#ecom-total}

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` y `compra` 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 datos suficientes para secciones cruzadas, siempre que los use. Vea el informe sobre [embudos de eventos de comercio electrónico en diferentes secciones cruzadas](#ecom-slices).

{% cut "Informe de muestra " %}


```javascript
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, -- productos vistos y luego los agregó al carrito de compras
            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
```


{% endcut %}

{% cut "Visualización de muestra" %}

![](../_assets/pro-ecom1.png)

{% endcut %}


## Informe de “Embudos de eventos de comercio electrónico en diferentes secciones transversales” (no disponible en la interfaz de Yandex Metrica) {#ecom-slices}
También puede construir un embudo por varias secciones transversales: fuente de tráfico, sistema operativo, dispositivo.

{% cut "Ejemplo de construcción de un embudo en una sección transversal IsMobile " %}


```javascript
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
```


{% endcut %}

{% cut "Visualización de muestra " %}

![](../_assets/pro-ecom2.png)

{% endcut %}


## Informe de “Retención de nuevos usuarios” (no disponible en la interfaz de Yandex Metrica) {#retention}


{% cut "Ejemplo" %}


```javascript
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
```


{% endcut %}



{% cut "Visualización de muestra " %}

![](../_assets/pro-retention.png)

{% endcut %}


## Informe de “Retención de nuevos usuarios en diferentes secciones transversales” (no disponible en la interfaz de Yandex Metrica) {#retention-slices}
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.

{% cut "Aquí tiene un ejemplo de retención a través de diferentes fuentes de tráfico para la primera sesión de usuario" %}


```javascript
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
```

{% endcut %}


<!-- source: es/_includes/buttons/chat-button.md -->
[Chatee con nosotros](https://yandex.com/chat/#/user/036e6a02-3620-9cdc-4c5e-a34667a7379e?utm_source=spravka){.button}

<!-- source: es/_includes/styles/href-to-button.md -->

<!-- endsource: es/_includes/styles/href-to-button.md -->
<!-- endsource: es/_includes/buttons/chat-button.md -->

<!-- source: es/_includes/pro/support-button.md -->
<div class="cut-button">

{% cut "Escriba un correo electrónico" %}

<!-- source: es/_includes/popup/id-popup/wrong-sup.md -->
Tome en cuenta: Nuestro equipo de soporte nunca iniciará llamadas hacia usted. No siga las instrucciones de personas que le llamen y se presenten como el equipo de soporte de Yandex Metrica.
<!-- endsource: es/_includes/popup/id-popup/wrong-sup.md -->

<div style="padding: 15px;
     margin: 10px 0;
     background: #FFFFFF;
     border-radius: 10px;
     border: 1px solid var(--g-color-line-generic);">
  <iframe style="background: #FFFFFF;"
        height="700"
        width="100%"
        frameborder="0"
        src="https://forms.yandex.com/surveys/13470764.a1e88715348b88bbfc3fe42a9f189f1ebd4b220d/?&iframe=1&lang=en">
  </iframe>
</div>

{% endcut %}

</div>

<!-- source: es/_includes/styles/cut-button.md -->

<!-- endsource: es/_includes/styles/cut-button.md -->
<!-- endsource: es/_includes/pro/support-button.md -->

<!-- source: es/_includes/footer-links.md -->
- - -

<div class="borderless-table">

#|
||
Enlaces útiles

- [Etiqueta de demostración](https://metrica.yandex.com/r/dashboard?)
- [Agregar una etiqueta](https://metrica.yandex.com/add/)
- [Configuración gratuita de etiquetas](https://yandex.com/promo/freeservice/metrica?utm_source=help_metrica_en&utm_medium=cpc&utm_campaign=1)
- [Yandex Metrica API](https://tech.yandex.com/metrika/)
- [Sugiera su idea](https://yandex.com/support/metrica/troubleshooting/idea.html)
- [Discutir en Telegram](https://t.me/yandexmetrika)
|
Capacitación en línea

- [Obtener un certificado de Yandex Metrica](https://yandex.ru/adv/expert/exam/metrika/?utm_source=metrika_help&utm_medium=web&utm_campaign=static&utm_content=useful_links)


- [Tomar un curso de capacitación](https://yandex.com/adv/edu/online/metrika?utm_source=metrika_help&utm_medium=web&utm_campaign=static&utm_content=useful_links)

||
|#

</div>

<!-- source: es/_includes/styles/table-style.md -->

<!-- endsource: es/_includes/styles/table-style.md -->
<!-- endsource: es/_includes/footer-links.md -->
