

# Conexión a Google Analytics 4
<a name="connecting-to-googleanalytics"></a>

 Google Analytics 4 es un servicio de análisis que rastrea e informa las métricas relativas a las interacciones de los visitantes con sus aplicaciones y sitios web. Estas métricas incluyen las visitas a la página, los usuarios activos y los eventos. Si es usuario de Google Analytics 4, puede conectar AWS Glue a la cuenta de Google Analytics 4. Puede utilizar Google Analytics 4 como origen de datos en los trabajos de ETL. Ejecute estos trabajos para transferir datos entre Google Analytics 4 y los servicios de AWS u otras aplicaciones compatibles. 

**Topics**
+ [Compatibilidad de AWS Glue con Google Analytics 4](googleanalytics-support.md)
+ [Políticas que contienen las operaciones de la API para crear y usar conexiones](googleanalytics-configuring-iam-permissions.md)
+ [Configuración de Google Analytics 4](googleanalytics-configuring.md)
+ [Configuración de las conexiones de Google Analytics 4](googleanalytics-configuring-connections.md)
+ [Lectura desde entidades de Google Analytics 4](googleanalytics-reading-from-entities.md)
+ [Opciones de conexión de Google Analytics 4](googleanalytics-connection-options.md)
+ [Creación de una cuenta de Google Analytics 4](googleanalytics-create-account.md)
+ [Pasos para crear una aplicación cliente y credenciales de OAuth 2.0](googleanalytics-client-app-oauth-credentials.md)
+ [Limitaciones y consideraciones](googleanalytics-connector-limitations.md)

# Compatibilidad de AWS Glue con Google Analytics 4
<a name="googleanalytics-support"></a>

AWS Glue es compatible con Google Analytics 4 de la siguiente manera:

**¿Es compatible como origen?**  
Sí. Puede usar los trabajos de ETL de AWS Glue para consultar datos de Google Analytics 4.

**¿Es compatible como destino?**  
No.

**Versiones de la API de Google Analytics 4 compatibles**  
 v1 Beta. 

# Políticas que contienen las operaciones de la API para crear y usar conexiones
<a name="googleanalytics-configuring-iam-permissions"></a>

 En el siguiente ejemplo de política se describen los permisos de AWS necesarios para crear y utilizar conexiones. Si va a crear un nuevo rol, cree una política que contenga lo siguiente: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

También puede usar las siguientes políticas de IAM administradas para permitir el acceso:
+  [AWSGlueServiceRole](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole): concede acceso a los recursos que necesitan diversos procesos de AWS Glue para ejecutarse en su nombre. Entre estos recursos se incluyen AWS Glue, Amazon S3, IAM, CloudWatch Logs y Amazon EC2. Si aplica la convención de nomenclatura en los recursos especificados en esta política, los procesos de AWS Glue tienen los permisos necesarios. Normalmente, esta política se asocia a los roles que se especifican a la hora de definir rastreadores, trabajos y puntos de conexión de desarrollo. 
+  [AWSGlueConsoleFullAccess](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess): concede acceso total a los recursos de AWS Glue cuando una identidad a la que está asociada la política utiliza la consola de administración de AWS. Si sigue la convención de nomenclatura para los recursos especificados en esta política, los usuarios dispondrán de todas las funciones de la consola. Esta política se suele adjuntar a los usuarios de la consola AWS Glue. 

# Configuración de Google Analytics 4
<a name="googleanalytics-configuring"></a>

Antes de poder utilizar AWS Glue para transferir desde Google Analytics 4, deberá cumplir los siguientes requisitos:

## Requisitos mínimos
<a name="googleanalytics-configuring-min-requirements"></a>
+  Tener una cuenta de Google Analytics con uno o más flujos de datos que recopilen los datos que desea transferir. 
+  Tener una cuenta de Google Cloud Platform y un proyecto de Google Cloud. 
+  Haber habilitado las siguientes API en el proyecto de Google Cloud: 
  +  API de Google Analytics 
  +  API de administración de Google Analytics 
  +  API de datos de Google Analytics 
+  Haber configurado en el proyecto de Google Cloud una pantalla de consentimiento OAuth para usuarios externos. Para obtener información acerca de la pantalla de consentimiento de OAuth, consulte [Configuración de la pantalla de consentimiento de OAuth](https://support.google.com/cloud/answer/10311615#) en la Ayuda de la Consola de Google Cloud Platform. 
+  Haber configurado un ID de cliente OAuth 2.0 en el proyecto de Google Cloud. Para obtener más información, consulte [Configuración de OAuth 2.0](https://support.google.com/cloud/answer/6158849?hl=en#zippy=). 

 Si cumple estos requisitos, estará listo para conectar AWS Glue a la cuenta de Google Analytics 4. 

# Configuración de las conexiones de Google Analytics 4
<a name="googleanalytics-configuring-connections"></a>

Para configurar una conexión a Google Sheets:

1.  En AWS Secrets Manager, cree un secreto con los siguientes detalles. Es necesario crear un secreto para cada conexión en AWS Glue. 

   1.  Para el tipo de concesión AuthorizationCode: 
      +  En el caso de una aplicación conectada administrada por el cliente, el secreto debe contener el secreto del consumidor de la aplicación conectada con la clave `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET`. 

1. En AWS Glue Glue Studio, cree una conexión en **Conexiones de datos** según los pasos que se indican a continuación: 

   1. Al seleccionar un **Tipo de conexión**, elija Google Analytics 4.

   1. Proporcione la `INSTANCE_URL` de Google Analytics 4 a la que se desea conectar.

   1.  Seleccione el rol de IAM que AWS Glue pueda asumir y que tenga permisos para las siguientes acciones: 

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1.  Seleccione el `secretName` que desee usar para esta conexión en AWS Glue para colocar los tokens. 

   1.  Seleccione las opciones de red si quiere usar su red. 

1.  Conceda el rol de IAM asociado a su permiso de trabajo de AWS Glue para leer `secretName`. 

 Tipo de concesión `AUTHORIZATION_CODE`. 

 Este tipo de concesión se considera un OAuth “de tres vías”, ya que se basa en redirigir a los usuarios al servidor de autorización externo para autenticar al usuario. Se utiliza para crear conexiones a través de la consola de AWS Glue. La consola de AWS Glue redirigirá al usuario a Google Analytics 4, donde deberá iniciar sesión y conceder a AWS Glue los permisos solicitados para acceder a la instancia de Google Analytics 4. 

 Los usuarios aún pueden optar por crear su propia aplicación conectada en Google Analytics 4 y proporcionar su propio ID y secreto de cliente al crear conexiones a través de la consola de AWS Glue. En este escenario, aún se abrirá Google Analytics 4 para iniciar sesión y autorizar a AWS Glue para que acceda a sus recursos. 

 Este tipo de concesión da como resultado un token de actualización y un token de acceso. El token de acceso es de corta duración y se puede actualizar automáticamente sin la interacción del usuario mediante el token de actualización. 

 Para obtener más información, consulte [Uso de Auth 2.0 para acceder a las API de Google](https://developers.google.com/identity/protocols/oauth2). 

# Lectura desde entidades de Google Analytics 4
<a name="googleanalytics-reading-from-entities"></a>

 **Requisitos previos** 
+  Un objeto de Google Analytics 4 desde el cual le gustaría leer. Consulte la tabla de entidades compatibles que aparece a continuación para comprobar las entidades disponibles. 

 **Entidades compatibles** 


| Entidad | Se puede filtrar | Admite límite | Admite Ordenar por | Admite Seleccionar \$1 | Admite Partición | 
| --- | --- | --- | --- | --- | --- | 
| Informe en tiempo real | Sí | Sí | Sí | Sí | No | 
| Informe principal | Sí | Sí | Sí | Sí | Sí | 

 **Ejemplo** 

```
googleAnalytics4_read = glueContext.create_dynamic_frame.from_options(
    connection_type="GoogleAnalytics4",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "entityName",
        "API_VERSION": "v1beta"
    }
```

 **Detalles de entidades y campos de Google Analytics 4** 


| Entidad | Campo | Tipo de datos | Operadores admitidos | 
| --- | --- | --- | --- | 
| Informe principal | Campos dinámicos |  |  | 
| Informe principal | Campos de dimensiones | Cadena | LIKE, = | 
| Informe principal | Campos de dimensiones | Date | LIKE, = | 
| Informe principal | Campos métricos | Cadena | >, <, >=, <=, = BETWEEN | 
| Informe principal | Dimensiones personalizadas y campos métricos personalizados | Cadena | N/D | 
| Informe en tiempo real | AppVersion | Cadena | LIKE, = | 
| Informe en tiempo real | audienceId | Cadena | LIKE, = | 
| Informe en tiempo real | audienceName | Cadena | LIKE, = | 
| Informe en tiempo real | ciudad | Cadena | LIKE, = | 
| Informe en tiempo real | cityId | Cadena | LIKE, = | 
| Informe en tiempo real | país | Cadena | LIKE, = | 
| Informe en tiempo real | countryId | Cadena | LIKE, = | 
| Informe en tiempo real | deviceCategory | Cadena | LIKE, = | 
| Informe en tiempo real | eventName | Cadena | LIKE, = | 
| Informe en tiempo real | minutesAgo | Cadena | LIKE, = | 
| Informe en tiempo real | platform | Cadena | LIKE, = | 
| Informe en tiempo real | streamId | Cadena | LIKE, = | 
| Informe en tiempo real | streamName | Cadena | LIKE, = | 
| Informe en tiempo real | unifiedScreenName | Cadena | LIKE, = | 
| Informe en tiempo real | activeUsers | Cadena | >, <, >=, <=, = BETWEEN | 
| Informe en tiempo real | conversions | Cadena | >, <, >=, <=, = BETWEEN | 
| Informe en tiempo real | eventCount | Cadena | >, <, >=, <=, = BETWEEN | 
| Informe en tiempo real | screenPageViews | Cadena | >, <, >=, <=, = BETWEEN | 

 **Consultas de partición** 

1.  **Partición basada en filtros** 

    Puede proporcionar las opciones adicionales de Spark `PARTITION_FIELD`, `LOWER_BOUND`, `UPPER_BOUND` y `NUM_PARTITIONS` si quiere usar la simultaneidad en Spark. Con estos parámetros, la consulta original se dividiría en un número `NUM_PARTITIONS` de subconsultas que las tareas de Spark pueden ejecutar simultáneamente. 
   +  `PARTITION_FIELD`: el nombre del campo que se usará para particionar la consulta. 
   +  `LOWER_BOUND`: un valor de límite inferior inclusivo del campo de partición elegido. 

      Para la fecha, aceptamos el formato de fecha de Spark que se usa en las consultas de Spark SQL. Ejemplos de valores válidos: `"2024-02-06"`. 
   +  `UPPER_BOUND`: un valor límite superior exclusivo del campo de partición elegido. 
   +  `NUM_PARTITIONS`: el número de particiones. 

    **Ejemplo** 

   ```
   googleAnalytics4_read = glueContext.create_dynamic_frame.from_options(
       connection_type="GoogleAnalytics4",
       connection_options={
           "connectionName": "connectionName",
           "ENTITY_NAME": "entityName",
           "API_VERSION": "v1beta",
           "PARTITION_FIELD": "date"
           "LOWER_BOUND": "2022-01-01"
           "UPPER_BOUND": "2024-01-02"
           "NUM_PARTITIONS": "10"
       }
   ```

1.  **Partición basada en registros** 

    Puede proporcionar las opciones adicionales de Spark `NUM_PARTITIONS` si quiere usar la simultaneidad en Spark. Con estos parámetros, la consulta original se dividiría en un número `NUM_PARTITIONS` de subconsultas que las tareas de Spark pueden ejecutar simultáneamente. 
   +  `NUM_PARTITIONS`: el número de particiones. 

    **Ejemplo** 

   ```
   googleAnalytics4_read = glueContext.create_dynamic_frame.from_options(
       connection_type="GoogleAnalytics4",
       connection_options={
           "connectionName": "connectionName",
           "ENTITY_NAME": "entityName",
           "API_VERSION": "v1beta",
           "NUM_PARTITIONS": "10"
       }
   ```

# Opciones de conexión de Google Analytics 4
<a name="googleanalytics-connection-options"></a>

Las siguientes son opciones de conexión para Google Analytics 4:
+  `ENTITY_NAME`(cadena): (obligatorio) se usa para lectura. El nombre del objeto en Google Analytics 4. 
+  `API_VERSION`(cadena): (obligatorio) se usa para lectura. Versión de la API de Rest de Google Analytics 4 que desea utilizar. 
+  `SELECTED_FIELDS`(lista<Cadena>): predeterminado: empty(SELECT \$1). Se usa para leer. Columnas que desee seleccionar para el objeto. 
+  `FILTER_PREDICATE`(cadena): predeterminado: vacío. Se usa para leer. Debe estar en el formato de Spark SQL. 
+  `QUERY`(cadena): predeterminado: vacío. Se usa para leer. Consulta completa de Spark SQL. 
+  `PARTITION_FIELD`(cadena): se usa para leer. Campo que se utilizará para particionar la consulta. 
+  `LOWER_BOUND`(cadena): se usa para leer. Un valor de límite inferior inclusivo del campo de partición elegido. 
+  `UPPER_BOUND`(cadena): se usa para leer. Un valor límite superior exclusivo del campo de partición elegido. 
+  `NUM_PARTITIONS`(entero): predeterminado: 1. Se usa para leer. Número de particiones para leer. 
+  `INSTANCE_URL`(Entero): se utiliza para la lectura. (Opcional) 

# Creación de una cuenta de Google Analytics 4
<a name="googleanalytics-create-account"></a>

 Siga los pasos para crear una cuenta de Google Analytics 4: [https://support.google.com/analytics/answer/9304153?hl=en](https://support.google.com/analytics/answer/9304153?hl=en) 

# Pasos para crear una aplicación cliente y credenciales de OAuth 2.0
<a name="googleanalytics-client-app-oauth-credentials"></a>

 Para obtener más información, consulte la [documentación de la API de Google Analytics4](https://developers.google.com/analytics/devguides/reporting/data/v1). 

1.  Cree y configure su cuenta; para ello, inicie sesión en la cuenta de [Google Analytics](https://analytics.google.com/) con sus credenciales. A continuación, vaya a **Administración** > **Crear cuenta**. 

1.  Cree una propiedad para la cuenta que ha creado; para ello, elija **Crear propiedad**. Configure la propiedad con los detalles necesarios. Una vez proporcionados todos los detalles, se generará el identificador de propiedad correspondiente. 

1.  Agregue un flujo de datos para la propiedad creada al seleccionar **Flujos de datos** > **Agregar flujo** > **Web** en el menú desplegable. Proporcione los detalles del sitio web, como la URL y otros campos obligatorios. Después de proporcionar todos los detalles, se generarán el **ID de flujo** y el **ID de medición** correspondientes. 

1.  Configure Google Analytics en su sitio web al copiar el ID de medición y agregarlo a la configuración de su sitio web. 

1.  Para crear un informe desde Google Analytics, diríjase a **Informes** y genere el informe correspondiente. 

1.  Para autorizar su aplicación, diríjase a [console.cloud.google.com]( https://console.cloud.google.com), busque la API de datos de Google Analytics y, a continuación, active la API. 

   1.  Vaya a la página de API y servicios y seleccione **Credenciales** > **Configurar los ID de cliente de OAuth 2.0**. 

   1.  Proporcione la URL de redireccionamiento; para ello, agregue la URL de redireccionamiento de AWS Glue. 

1.  Copie el ID y el secreto del cliente, que necesitará para crear la conexión. 

# Limitaciones y consideraciones
<a name="googleanalytics-connector-limitations"></a>

A continuación, se indican las limitaciones del conector de Google Analytics 4:
+  Para la entidad Informe principal, solo se permite enviar una solicitud con 9 campos de dimensiones y 10 campos de métricas. Si se supera el número de campos permitido, la solicitud fallará y el conector mostrará un mensaje de error. 
+  Para la entidad Informe en tiempo real, solo se permite enviar una solicitud con 4 campos de dimensiones. Si se supera el número de campos permitido, la solicitud fallará y el conector mostrará un mensaje de error. 
+  Google Analytics 4 es una herramienta gratuita en versión beta, por lo que habrá actualizaciones periódicas sobre nuevas características, mejoras de entidades, adición de nuevos campos y eliminación de campos existentes. 
+  Los campos del Informe principal se completan dinámicamente, por lo que se pueden agregar, eliminar y cambiar el nombre de los campos. Además, se pueden imponer nuevos límites a los campos en cualquier momento. 
+  La fecha de inicio predeterminada es de 30 días y la fecha de finalización es ayer (un día antes de la fecha actual). Estas fechas se anularán en el código de expresión del filtro si el usuario ha establecido el valor o si el flujo es incremental. 
+  Según la documentación, la entidad Informe en tiempo real devuelve 10 000 registros si no se establece un límite en la solicitud; de lo contrario, la API devuelve un máximo de 250 000 filas por solicitud, independientemente del número que solicite. Para obtener más información, consulte [Método: properties.runRealtimeReport](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runRealtimeReport) en la documentación de Google Analytics. 
+  La entidad Informe en tiempo real no admite la partición basada en registros, ya que no admite la paginación. Además, no admite la partición basada en campos, ya que ninguno de los campos cumple con los criterios definidos. 
+  Debido a la limitación del número de campos que se pueden enviar en una solicitud. Estamos configurando los campos de dimensiones y métricas predeterminados dentro de los límites designados. Si elige “seleccionar todo”, solo se recuperarán los datos de esos campos predeterminados. 
  +  Informe principal 
    +  Según la limitación del SAAS, se permiten solicitudes de hasta 9 dimensiones y solo hasta 10 métricas; es decir, una solicitud puede contener un máximo de 19 campos (métricas \$1 dimensión). 
    +  Según la implementación, si el usuario utiliza SELECT\$1ALL o selecciona más de 25 campos, se enviarán los campos predeterminados en la solicitud. 
    +  Los siguientes campos se consideran campos predeterminados para el Informe principal: “country”, “city”, “eventName”, “cityId”, “browser”, “date”, “currencyCode”, “deviceCategory”, “transactionId”, “active1DayUsers”, “active28DayUsers”, “active7DayUsers”, “activeUsers”, “averagePurchaseRevenue”, “averageRevenuePerUser”, “averageSessionDuration”, “engagedSessions”, “eventCount”, “engagementRate”. 
  +  Informe en tiempo real 
    +  Según la limitación del SAAS, se permiten solicitudes de hasta 4 dimensiones. 
    +  Si el usuario pasa SELECT\$1ALL o selecciona más de 15 campos, los campos predeterminados se enviarán en la solicitud. 
    +  Los siguientes campos se consideran campos predeterminados para el Informe en tiempo real: “country”, “deviceCategory”, “city”, “cityId”, “activeUsers”, “conversions”, “eventCount”, “screenPageViews”. 
+  En la entidad Informe principal, si la partición en el campo de fecha y el filtro en startDate están presentes simultáneamente. En ese caso, el valor dateRange se reemplaza por el valor del filtro startDate, pero, dado que la partición siempre debe ser la prioridad, se descarta el filtro startDate si la partición en el campo de fecha ya está presente. 
+  Como ahora cohortSpecs también forma parte del cuerpo de la solicitud del informe principal, hemos mejorado la entidad del informe principal actual para incluir la compatibilidad con el atributo cohortSpec. En el cuerpo de la solicitud de cohortSpecs, casi todos los campos requieren la entrada del usuario. Para solucionar este problema, hemos establecido valores predeterminados para esos atributos/campos y hemos previsto que el usuario anule estos valores si es necesario.     
<a name="google-analytics-connector-limitations-table"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/googleanalytics-connector-limitations.html)
+  También puede enviar todos estos filtros a la vez o con otros filtros. 
  +  Ejemplo 1: filterPredicate: startDate between "2023-05-09" and "2023-05-10" AND startOffset=1 AND endOffset=2 AND granularity="WEEKLY" 
  +  Ejemplo 2: filterPredicate: city=“xyz” AND startOffset=1 AND endOffset=2 AND granularity="WEEKLY" 
+  En la solicitud de cohorte: 
  +  Si se incluye “cohortNthMonth” en la solicitud, el valor de granularidad interno se establecerá como “MONTHLY” 
  +  Del mismo modo, si se pasa “cohortNthWeek”, el valor de granularidad se establecerá como “WEEKLY” 
  +  Y, para “cohortNthDay”, el valor de granularidad se establecerá como “DAILY”. Para obtener más información, consulte: 
    +  [ https://developers.google.com/analytics/devguides/reporting/data/v1/advanced ](https://developers.google.com/analytics/devguides/reporting/data/v1/advanced) 
    +  [ https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/CohortSpec ](https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/CohortSpec) 
  +  Se prevé que el usuario anule el valor predeterminado de dateRange y de granularidad. Consulte la tabla anterior. 