

# Administración del Catálogo de datos
<a name="manage-catalog"></a>

 El AWS Glue Data Catalog es un repositorio central de metadatos que almacena los metadatos estructurales y operativos para sus conjuntos de datos de Amazon S3. La administración eficaz del Catálogo de datos es crucial para mantener la calidad, el rendimiento, la seguridad y la gobernanza de los datos.

 Si comprende y aplica estas prácticas de administración del Catálogo de datos, puede asegurarse de que sus metadatos sigan siendo precisos, eficaces y seguros, y de que estén bien gestionados a medida que el panorama de sus datos evoluciona. 

En esta sección se tratan los siguientes aspectos de la administración del Catálogo de datos:
+ *Actualización del esquema y las particiones de la tabla:* A medida que evolucionan los datos, es posible que deba actualizar el esquema de la tabla o la estructura de particiones definidos en el Catálogo de datos. Para obtener más información sobre cómo realizar estas actualizaciones mediante programación con la ETL de AWS Glue, consulte [Cómo actualizar el esquema y añadir nuevas particiones al Catálogo de datos mediante trabajos de ETL de AWS Glue](update-from-job.md).
+ *Administración de las estadísticas de columnas:* Las estadísticas de columnas precisas ayudan a optimizar los planes de las consultas y a mejorar el rendimiento. Para obtener más información sobre cómo generar, actualizar y administrar las estadísticas de columnas, consulte [Cómo optimizar el rendimiento de las consultas con las estadísticas de columnas](column-statistics.md). 
+  *Cifrado del Catálogo de datos:* Para proteger los metadatos confidenciales, puede cifrar el Catálogo de datos mediante el uso de AWS Key Management Service (AWS KMS). En esta sección se explica cómo activar y administrar el cifrado del Catálogo de datos. 
+ *Protección del Catálogo de datos con AWS Lake Formation:* Lake Formation proporciona un enfoque integral para abordar la seguridad de los lagos de datos y el control del acceso a estos. Puede usar Lake Formation para proteger y controlar el acceso a su Catálogo de datos y a los datos subyacentes. 

**Topics**
+ [Cómo actualizar el esquema y añadir nuevas particiones al Catálogo de datos mediante trabajos de ETL de AWS Glue](update-from-job.md)
+ [Cómo optimizar el rendimiento de las consultas con las estadísticas de columnas](column-statistics.md)
+ [Cifrado del Catálogo de datos](catalog-encryption.md)
+ [Cómo proteger su Catálogo de datos con Lake Formation](secure-catalog.md)
+ [Trabajar con vistas AWS Glue Data Catalog en AWS Glue](catalog-views.md)

# Cómo actualizar el esquema y añadir nuevas particiones al Catálogo de datos mediante trabajos de ETL de AWS Glue
<a name="update-from-job"></a>

Un trabajo de extracción, transformación y carga (ETL) podría crear nuevas particiones de la tabla en el almacén de datos de destino. El esquema del conjunto de datos puede evolucionar y ser cada vez más diferente del esquema del AWS Glue Data Catalog. AWS Glue Los trabajos de ETL ahora cuentan con varias características que se pueden utilizar dentro del script de ETL para actualizar el esquema y las particiones del Data Catalog. Estas características permiten ver los resultados del trabajo de ETL en el Data Catalog sin necesidad de volver a ejecutar el rastreador.

## Nuevas particiones
<a name="update-from-job-partitions"></a>

Si desea ver las nuevas particiones del AWS Glue Data Catalog, puede realizar una de las siguientes acciones:
+ Cuando el trabajo termine, vuelva a ejecutar el rastreador y, una vez que finalice, consulte las nuevas particiones en la consola.
+ Cuando el trabajo termine, podrá ver las nuevas particiones en la consola de inmediato sin necesidad de volver a ejecutar el rastreador. Puede habilitar esta característica agregando algunas líneas de código al script ETL, tal y como se muestra en los siguientes ejemplos. El código utiliza el argumento `enableUpdateCatalog` para indicar que el Data Catalog se va a actualizar durante la ejecución del trabajo a medida que se creen las nuevas particiones.

**Método 1**  
Pase `enableUpdateCatalog` y `partitionKeys` en un argumento de opciones.  

```
additionalOptions = {"enableUpdateCatalog": True}
additionalOptions["partitionKeys"] = ["region", "year", "month", "day"]


sink = glueContext.write_dynamic_frame_from_catalog(frame=last_transform, database=<target_db_name>,
                                                    table_name=<target_table_name>, transformation_ctx="write_sink",
                                                    additional_options=additionalOptions)
```

```
val options = JsonOptions(Map(
    "path" -> <S3_output_path>, 
    "partitionKeys" -> Seq("region", "year", "month", "day"), 
    "enableUpdateCatalog" -> true))
val sink = glueContext.getCatalogSink(
    database = <target_db_name>, 
    tableName = <target_table_name>, 
    additionalOptions = options)sink.writeDynamicFrame(df)
```

**Método 2**  
Pase `enableUpdateCatalog` y `partitionKeys` en `getSink()` y llame a `setCatalogInfo()` en el objeto `DataSink`.  

```
sink = glueContext.getSink(
    connection_type="s3", 
    path="<S3_output_path>",
    enableUpdateCatalog=True,
    partitionKeys=["region", "year", "month", "day"])
sink.setFormat("json")
sink.setCatalogInfo(catalogDatabase=<target_db_name>, catalogTableName=<target_table_name>)
sink.writeFrame(last_transform)
```

```
val options = JsonOptions(
   Map("path" -> <S3_output_path>, 
       "partitionKeys" -> Seq("region", "year", "month", "day"), 
       "enableUpdateCatalog" -> true))
val sink = glueContext.getSink("s3", options).withFormat("json")
sink.setCatalogInfo(<target_db_name>, <target_table_name>)
sink.writeDynamicFrame(df)
```

Ahora, puede crear nuevas tablas de catálogo, actualizar las tablas existentes con un esquema modificado y agregar nuevas particiones de tabla en el Data Catalog utilizando únicamente un trabajo de ETL de AWS Glue, sin necesidad de volver a ejecutar los rastreadores.

## Actualización del esquema de la tabla
<a name="update-from-job-updating-table-schema"></a>

Si desea sobrescribir el esquema de la tabla del Data Catalog, puede realizar una de las siguientes acciones:
+ Cuando termine el trabajo, vuelva a ejecutar el rastreador y asegúrese de que esté configurado para actualizar también la definición de la tabla. Cuando el rastreador finalice, consulte las nuevas particiones en la consola junto con las actualizaciones del esquema. Para obtener más información, consulte [Configuración de un rastreador con la API](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-configure-changes-api).
+ Cuando el trabajo termine, podrá ver de inmediato el esquema modificado en la consola sin necesidad de volver a ejecutar el rastreador. Puede habilitar esta característica agregando algunas líneas de código al script ETL, tal y como se muestra en los siguientes ejemplos. El código utiliza el valor `enableUpdateCatalog` establecido en verdadero y también el valor `updateBehavior` establecido en `UPDATE_IN_DATABASE`, lo que indica que el esquema debe sobrescribirse y deben agregarse nuevas particiones en el Data Catalog durante la ejecución del trabajo.

------
#### [ Python ]

```
additionalOptions = {
    "enableUpdateCatalog": True, 
    "updateBehavior": "UPDATE_IN_DATABASE"}
additionalOptions["partitionKeys"] = ["partition_key0", "partition_key1"]

sink = glueContext.write_dynamic_frame_from_catalog(frame=last_transform, database=<dst_db_name>,
    table_name=<dst_tbl_name>, transformation_ctx="write_sink",
    additional_options=additionalOptions)
job.commit()
```

------
#### [ Scala ]

```
val options = JsonOptions(Map(
    "path" -> outputPath, 
    "partitionKeys" -> Seq("partition_0", "partition_1"), 
    "enableUpdateCatalog" -> true))
val sink = glueContext.getCatalogSink(database = nameSpace, tableName = tableName, additionalOptions = options)
sink.writeDynamicFrame(df)
```

------

También puede establecer el valor `updateBehavior` en `LOG` si no desea que el esquema de la tabla se sobrescriba pero sí quiere agregar las nuevas particiones. El valor predeterminado de `updateBehavior` es `UPDATE_IN_DATABASE`, por lo que, si no lo define explícitamente, se sobrescribirá el esquema de la tabla.

Si `enableUpdateCatalog` no se establece en verdadero, independientemente de la opción seleccionada en `updateBehavior`, el trabajo de ETL no actualizará la tabla del Data Catalog. 

## Creación de nuevas tablas
<a name="update-from-job-creating-new-tables"></a>

También puede utilizar las mismas opciones para crear una nueva tabla en el Data Catalog. Puede especificar la base de datos y el nuevo nombre de la tabla con `setCatalogInfo`.

------
#### [ Python ]

```
sink = glueContext.getSink(connection_type="s3", path="s3://path/to/data",
    enableUpdateCatalog=True, updateBehavior="UPDATE_IN_DATABASE",
    partitionKeys=["partition_key0", "partition_key1"])
sink.setFormat("<format>")
sink.setCatalogInfo(catalogDatabase=<dst_db_name>, catalogTableName=<dst_tbl_name>)
sink.writeFrame(last_transform)
```

------
#### [ Scala ]

```
val options = JsonOptions(Map(
    "path" -> outputPath, 
    "partitionKeys" -> Seq("<partition_1>", "<partition_2>"), 
    "enableUpdateCatalog" -> true, 
    "updateBehavior" -> "UPDATE_IN_DATABASE"))
val sink = glueContext.getSink(connectionType = "s3", connectionOptions = options).withFormat("<format>")
sink.setCatalogInfo(catalogDatabase = “<dst_db_name>”, catalogTableName = “<dst_tbl_name>”)
sink.writeDynamicFrame(df)
```

------

## Restricciones
<a name="update-from-job-restrictions"></a>

Tome nota de las siguientes restricciones:
+ Solo se soportan los destinos de Amazon Simple Storage Service (Amazon S3).
+ La característica `enableUpdateCatalog` no es compatible con las tablas gobernadas.
+ Solo se admiten los siguientes formatos: `json`, `csv`, `avro` y `parquet`.
+ Para crear o actualiza tablas con la clasificación `parquet`, debe utilizar el escritor de parquet optimizado para DynamicFrames de AWS Glue. Esto se puede lograr con uno de los siguientes:
  + Si va a actualizar una tabla existente en el catálogo con una clasificación `parquet`, la tabla debe tener la propiedad de tabla `"useGlueParquetWriter"` establecida en `true` antes de actualizarla. Puede configurar esta propiedad a través de las API/SDK de AWS Glue, la consola o una instrucción DDL de Athena.   
![\[Campo de edición de propiedades de la tabla de catálogo en la consola AWS Glue.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/edit-table-property.png)

    Una vez establecida la propiedad de la tabla de catálogo, puede utilizar el siguiente fragmento de código para actualizar la tabla de catálogo con los nuevos datos:

    ```
    glueContext.write_dynamic_frame.from_catalog(
        frame=frameToWrite,
        database="dbName",
        table_name="tableName",
        additional_options={
            "enableUpdateCatalog": True,
            "updateBehavior": "UPDATE_IN_DATABASE"
        }
    )
    ```
  + Si la tabla aún no existe en el catálogo, puede utilizar el método `getSink()` del script con `connection_type="s3"` para agregar la tabla y sus particiones al catálogo, además de escribir los datos en Amazon S3. Proporcione la `partitionKeys` adecuada y la `compression` para su flujo de trabajo.

    ```
    s3sink = glueContext.getSink(
        path="s3://bucket/folder/",
        connection_type="s3",
        updateBehavior="UPDATE_IN_DATABASE",
        partitionKeys=[],
        compression="snappy",
        enableUpdateCatalog=True
    )
        
    s3sink.setCatalogInfo(
        catalogDatabase="dbName", catalogTableName="tableName"
    )
        
    s3sink.setFormat("parquet", useGlueParquetWriter=True)
    s3sink.writeFrame(frameToWrite)
    ```
  + El valor de formato `glueparquet` es un método heredado para habilitar el escritor de Parquet de AWS Glue.
+ Si `updateBehavior` se configura en `LOG`, las nuevas particiones solo se agregarán si el esquema de `DynamicFrame` es igual al subconjunto de las columnas definidas en el esquema de la tabla del Data Catalog, o si contiene un subconjunto de este tipo.
+ Las actualizaciones de esquema no son compatibles con las tablas sin particiones (no se utiliza la opción "PartitionKeys").
+ Las claves de partición deben ser equivalentes y estar en el mismo orden en el parámetro que se transfirió en el script de ETL y en las claves de partición del esquema de la tabla del catálogo de datos.
+ Esta característica aún no admite la actualización/creación de tablas en las que se anidan los esquemas de actualización (por ejemplo, matrices dentro de estructuras).

Para obtener más información, consulte [Programación de scripts de Spark](aws-glue-programming.md).

# Trabajar con conexiones MongoDB en trabajos de ETL
<a name="integrate-with-mongo-db"></a>

Puede crear una conexión para MongoDB y luego usar esa conexión en su trabajo de AWS Glue. Para obtener más información, consulte [Conexiones a MongoDB](aws-glue-programming-etl-connect-mongodb-home.md) en la guía de progrmación de AWS Glue. La `url`, el `username` y la `password` de la conexión se almacenan en la conexión de MongoDB. Se pueden especificar otras opciones en el script de trabajo de ETL mediante el parámetro `additionalOptions` de `glueContext.getCatalogSource`. Las otras opciones pueden incluir lo siguiente:
+ `database`: (obligatorio) la base de datos de MongoDB de la que se va a leer.
+ `collection`: (obligatorio) la colección de MongoDB de la que se va a leer.

Al colocar la información de `database` y `collection` dentro del script de trabajo de ETL, puede utilizar la misma conexión para varios trabajos.

1. Creación de una conexión de AWS Glue Data Catalog para el origen de datos MongoDB. Consulte ["connectionType": "mongodb"](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html#aws-glue-programming-etl-connect-mongodb) para ver una descripción de los parámetros de conexión. Puede crear la conexión mediante la consola, las API o CLI.

1. Cree una base de datos en AWS Glue Data Catalog para almacenar las definiciones de la tabla para sus datos de MongoDB. Para obtener más información, consulte [Creación de bases de datos](define-database.md).

1. Cree un rastreador que rastree los datos en MongoDB usando la información en la conexión para conectarse a MongoDB. El rastreador crea las tablas en AWS Glue Data Catalog, que describen las tablas en la base de datos MongoDB que usa en su trabajo. Para obtener más información, consulte [Uso de rastreadores para completar el Catálogo de datos](add-crawler.md).

1. Cree un trabajo con un script personalizado. Puede crear un trabajo mediante la consola, la API o CLI. Para obtener más información, consulte [Agregar trabajos en AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-job.html).

1. Elija los destinos de datos para su trabajo. Las tablas que representan el destino de datos se pueden definir en el Data Catalog, o bien, el trabajo puede crear las tablas de destino cuando se ejecute. El usuario elige la ubicación de destino al crear el trabajo. Si el destino requiere una conexión, esta también estará referenciada en el trabajo. Si el trabajo requiere varios destinos de datos, puede agregarlos más tarde al editar el script.

1. Personalice el entorno de procesamiento del flujo de trabajo mediante argumentos para el flujo de trabajo y el script que se generó. 

   A continuación, se muestra un ejemplo de creación de un `DynamicFrame` desde la base de datos MongoDB en función de la estructura de la tabla definida en el Data Catalog. El código utiliza `additionalOptions` para proporcionar la información adicional del origen de datos:

------
#### [  Scala  ]

   ```
   val resultFrame: DynamicFrame = glueContext.getCatalogSource(
           database = catalogDB, 
           tableName = catalogTable, 
           additionalOptions = JsonOptions(Map("database" -> DATABASE_NAME, 
                   "collection" -> COLLECTION_NAME))
         ).getDynamicFrame()
   ```

------
#### [  Python  ]

   ```
   glue_context.create_dynamic_frame_from_catalog(
           database = catalogDB,
           table_name = catalogTable,
           additional_options = {"database":"database_name", 
               "collection":"collection_name"})
   ```

------

1. Ejecute el trabajo, ya sea bajo demanda o a través de un desencadenador.

# Cómo optimizar el rendimiento de las consultas con las estadísticas de columnas
<a name="column-statistics"></a>

Puede calcular estadísticas a nivel de columna para tablas AWS Glue Data Catalog en formatos de datos como Parquet, ORC, JSON, ION, CSV y XML sin necesidad de configurar canalizaciones de datos adicionales. Las estadísticas de columnas le ayudan a entender los perfiles de datos al obtener información sobre los valores de una columna. 

El catálogo de datos le permite generar estadísticas para los valores de las columnas, como el valor mínimo, el valor máximo, los valores nulos totales, los valores distintos totales, la longitud media de los valores y el total de apariciones de valores verdaderos. Los servicios analíticos de AWS como Amazon Redshift y Amazon Athena pueden utilizar estas estadísticas de columnas para generar planes de ejecución de consultas y elegir el plan más adecuado que mejore el rendimiento de las consultas.

Existen tres casos en los que generar estadísticas de columnas: 

 **Automático**   
AWS Glue admite la generación automática de estadísticas de columnas a nivel de catálogo, para que pueda generar automáticamente estadísticas de las nuevas tablas en AWS Glue Data Catalog. 

**Programados**  
AWS Glue permite programar la generación de estadísticas de columnas para que se puedan ejecutar automáticamente según una programación periódica.   
Con el cálculo de estadísticas programado, la tarea de estadísticas de columnas actualiza las estadísticas generales a nivel de tabla (como las mínimas, máximas y medias) con las nuevas estadísticas, lo que proporciona a los motores de consultas estadísticas precisas y actualizadas para optimizar la ejecución de las consultas. 

**Bajo demanda**  
Utilice esta opción para generar estadísticas de columnas bajo demanda siempre que sea necesario. Esto resulta útil para realizar un análisis ad hoc o cuando es necesario calcular las estadísticas de forma inmediata. 

Puede configurar esto para ejecutar la tarea de generación de estadísticas de columnas mediante la consola AWS Glue, AWS CLI y operaciones de API AWS Glue. Al iniciar el proceso, AWS Glue inicia un trabajo de Spark en segundo plano y actualiza los metadatos de la tabla AWS Glue en el catálogo de datos. Puede ver las estadísticas de las columnas mediante la consola AWS Glue o AWS CLI, o llamando a la operación de la API [GetColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_GetColumnStatisticsForTable.html).

**nota**  
Si utiliza los permisos de Lake Formation para controlar el acceso a la tabla, el rol que asume la tarea de estadísticas de columnas requiere acceso total a la tabla para generar estadísticas.

 En el video a continuación se muestra cómo mejorar el rendimiento de las solicitudes con estadísticas de columnas. 

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/zUHEXJdHUxs?si=HjyhpoALR6RXJz2i/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/zUHEXJdHUxs?si=HjyhpoALR6RXJz2i)


**Topics**
+ [Requisitos previos para generar estadísticas de columnas](column-stats-prereqs.md)
+ [Generación automática de estadísticas de columnas](auto-column-stats-generation.md)
+ [Generación de estadísticas de columnas según una programación](generate-column-stats.md)
+ [Generación de estadísticas de columnas bajo demanda](column-stats-on-demand.md)
+ [Visualización de estadísticas de columnas](view-column-stats.md)
+ [Visualización de las ejecuciones de tareas de estadísticas de columnas](view-stats-run.md)
+ [Detener la ejecución de la tarea de estadísticas de columnas](stop-stats-run.md)
+ [Eliminar estadísticas de columnas](delete-column-stats.md)
+ [Consideraciones y limitaciones](column-stats-notes.md)

# Requisitos previos para generar estadísticas de columnas
<a name="column-stats-prereqs"></a>

Para generar o actualizar las estadísticas de las columnas, la tarea de generación de estadísticas adopta un rol de AWS Identity and Access Management (IAM) en su nombre. Según los permisos concedidos al rol, la tarea de generación de estadísticas de columnas puede leer los datos del almacén de datos de Amazon S3.

Al configurar la tarea de generación de estadísticas de la columna, AWS Glue le permite crear un rol que incluye la política administrada de AWS `AWSGlueServiceRole`, más la política insertada necesaria para el origen de datos especificado. 

Si especifica un rol existente para generar estadísticas de columnas, asegúrese de que incluya la política `AWSGlueServiceRole` o una equivalente (o una versión reducida de esta política), además de las políticas insertadas requeridas. Para crear un nuevo rol de IAM, siga estos pasos:

**nota**  
 Para generar estadísticas para las tablas administradas por Lake Formation, el rol de IAM utilizado para generar estadísticas requiere acceso total a las tablas. 

Al configurar la tarea de generación de estadísticas de la columna, AWS Glue le permite crear un rol que incluye la política administrada de AWS `AWSGlueServiceRole`, más la política insertada necesaria para el origen de datos especificado. También puede crear un rol y adjuntar los permisos que se indican en la política siguiente y agregarlo a la tarea de generación de estadísticas de la columna.

**Creación de un rol de IAM para generar estadísticas de columnas**

1. Para crear un rol de IAM;, consulte [Crear un rol de IAM para AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/create-an-iam-role.html).

1. Para actualizar un rol existente, en la consola de IAM, vaya al rol de IAM que está utilizando el proceso de generación de estadísticas de columnas.

1. En la sección **Agregar permisos**, elija **Asociar políticas**. En la ventana del navegador que se acaba de abrir, elija la política administrada de AWS `AWSGlueServiceRole`.

1. También debe incluir los permisos de lectura de los datos de la ubicación de datos de Amazon S3.

   En la sección **Agregar permisos**, elija **Crear política**. En la ventana del navegador que se acaba de abrir, cree una nueva política para utilizarla con su rol.

1. En la página **Crear política**, elija la pestaña **JSON**. Copie el siguiente código `JSON` en el campo del editor de política.
**nota**  
En las políticas a continuación, reemplace la ID de cuenta con una Cuenta de AWS válida, `region` con la Región de la tabla y `bucket-name` con el nombre del bucket de Amazon S3.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "S3BucketAccess",
               "Effect": "Allow",
               "Action": [
                   "s3:ListBucket",
                   "s3:GetObject"
               ],
               "Resource": [
               	"arn:aws:s3:::amzn-s3-demo-bucket/*",
   							"arn:aws:s3:::amzn-s3-demo-bucket"
               ]
           }
        ]
   }
   ```

------

1. (Opcional) Si utiliza los permisos de Lake Formation para acceder a sus datos, el rol de IAM requiere permisos `lakeformation:GetDataAccess`.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "LakeFormationDataAccess",
         "Effect": "Allow",
         "Action": "lakeformation:GetDataAccess",
         "Resource": [
           "*"
         ]
       }
     ]
   }
   ```

------

    Si la ubicación de datos de Amazon S3 está registrada en Lake Formation y el rol de IAM que asume la tarea de generación de estadísticas de columnas no tiene permisos de grupos `IAM_ALLOWED_PRINCIPALS` concedidos en la tabla, el rol requiere los permisos de Lake Formation `ALTER` y `DESCRIBE` en la tabla. El rol utilizado para registrar el bucket de Amazon S3 requiere los permisos de Lake Formation `INSERT` y `DELETE` en la tabla. 

   Si la ubicación de datos de Amazon S3 no está registrada en Lake Formation y el rol de IAM no tiene permisos de grupo `IAM_ALLOWED_PRINCIPALS` otorgados en la tabla, el rol requiere los permisos de Lake Formation `ALTER`, `DESCRIBE`, `INSERT` y `DELETE` en la tabla. 

1. Si ha habilitado la opción `Automatic statistics generation` a nivel de catálogo, el rol de IAM debe tener el permiso `glue:UpdateCatalog` o el permiso `ALTER CATALOG` de Lake Formation en el catálogo de datos predeterminado. Puede utilizar la operación `GetCatalog` para verificar las propiedades del catálogo. 

1. (Opcional) La tarea de generación de estadísticas de columnas que escribe Amazon CloudWatch Logs cifrado necesita los siguientes permisos en la política de claves.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "CWLogsKmsPermissions",
         "Effect": "Allow",
         "Action": [
           "logs:CreateLogGroup",
           "logs:CreateLogStream",
           "logs:PutLogEvents",
           "logs:AssociateKmsKey"
         ],
         "Resource": [
           "arn:aws:logs:us-east-1:111122223333:log-group:/aws-glue:*"
         ]
       },
       {
         "Sid": "KmsPermissions",
         "Effect": "Allow",
         "Action": [
           "kms:GenerateDataKey",
           "kms:Decrypt",
           "kms:Encrypt"
         ],
         "Resource": [
           "arn:aws:kms:us-east-1:111122223333:key/arn of key used for ETL cloudwatch encryption"
         ],
         "Condition": {
           "StringEquals": {
             "kms:ViaService": [
               "glue.us-east-1.amazonaws.com"
             ]
           }
         }
       }
     ]
   }
   ```

------

1. El rol que utilice para ejecutar las estadística de columnas debe contener el permiso `iam:PassRole` en el rol.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "iam:PassRole"
         ],
         "Resource": [
           "arn:aws:iam::111122223333:role/columnstats-role-name"
         ]
       }
     ]
   }
   ```

------

1. Al crear un rol de IAM para generar estadísticas de columnas, el rol también debe tener la siguiente política de confianza que permita al servicio asumirlo. 

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "TrustPolicy",
         "Effect": "Allow",
         "Principal": {
           "Service": "glue.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

# Generación automática de estadísticas de columnas
<a name="auto-column-stats-generation"></a>

La generación automática de estadísticas de columnas le permite programar y calcular automáticamente las estadísticas de las nuevas tablas en AWS Glue Data Catalog. Al activar la generación automática de estadísticas, el catálogo de datos indica nuevas tablas con formatos de datos específicos, como Parquet, JSON, CSV, XML, ORC, ION y Apache Iceberg, junto con sus respectivas rutas de bucket. Mediante una configuración de catálogo única, el catálogo de datos genera estadísticas para estas tablas.

 Los administradores del lago de datos pueden configurar la generación de estadísticas si seleccionan el catálogo predeterminado en la consola de Lake Formation y habilitando las estadísticas de tablas mediante la opción `Optimization configuration`. Al crear tablas nuevas o actualizar las existentes en el catálogo de datos, este recopila semanalmente el número de valores distintos (NDV) de las tablas de Apache Iceberg y otras estadísticas adicionales, como el número de valores nulos o la longitud máxima, mínima y media de otros formatos de archivo compatibles. 

Si configuró la generación de estadísticas a nivel de tabla o si eliminó previamente la configuración de generación de estadísticas de una tabla, esa configuración específica de tabla tendrá prioridad sobre la configuración predeterminada del catálogo para la generación automática de estadísticas de columnas.

 La tarea de generación automática de estadísticas analiza el 50 % de los registros de las tablas para calcular las estadísticas. La generación automática de estadísticas de columnas garantiza que el catálogo de datos mantenga las métricas semanales más recientes que pueden utilizar los motores de consultas, como Amazon Athena y Amazon Redshift Spectrum, para mejorar el rendimiento de las consultas y ahorrar costos potenciales. Permite programar la generación de estadísticas mediante las API de AWS Glue o la consola, lo que proporciona un proceso automatizado sin intervención manual. 

**Topics**
+ [Habilitación de la generación automática de estadísticas a nivel de catálogo](enable-auto-column-stats-generation.md)
+ [Visualización configuración automatizada en el nivel de tabla](view-auto-column-stats-settings.md)
+ [Desactivación de la generación de estadísticas de columnas a nivel de catálogo](disable-auto-column-stats-generation.md)

# Habilitación de la generación automática de estadísticas a nivel de catálogo
<a name="enable-auto-column-stats-generation"></a>

Puede habilitar la generación automática de estadísticas de columnas en todas las tablas nuevas de Apache Iceberg y las tablas que tengan formatos que no sean OTF (Parquet, JSON, CSV, XML, ORC, ION) del catálogo de datos. Tras crear la tabla, también puede actualizar de forma explícita y manual la configuración de las estadísticas de columnas.

 Para actualizar la configuración del catálogo de datos y así poder habilitar el nivel de catálogo, el rol de IAM que utilice debe tener el permiso `glue:UpdateCatalog` o el permiso AWS Lake Formation `ALTER CATALOG` del catálogo raíz. Puede utilizar la API `GetCatalog` para verificar las propiedades del catálogo. 

------
#### [ Consola de administración de AWS ]

**Habilitación de la generación automática de estadísticas de columnas a nivel de cuenta**

1. Abra la consola de Lake Formation en [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. En la barra de navegación izquierda, elija **Claves**.

1. En la página **Resumen del catálogo**, seleccione **Editar** en **Configuración de la optimización**.   
![\[La captura de pantalla muestra las opciones disponibles para generar estadísticas de columnas.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/edit-column-stats-auto.png)

1. En la página **Configuración de la optimización de tablas**, elija la opción **Habilitar la generación automática de estadísticas para las tablas del catálogo**.  
![\[La captura de pantalla muestra las opciones disponibles para generar estadísticas de columnas.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/edit-optimization-option.jpg)

1. Elija un rol de IAM existente o cree uno nuevo con los permisos necesarios para ejecutar la tarea de estadísticas de columnas.

1. Elija **Enviar**.

------
#### [ AWS CLI ]

También puede habilitar la recopilación de estadísticas a nivel de catálogo a través de AWS CLI. Para configurar la recopilación de estadísticas a nivel de tabla mediante AWS CLI, ejecute el siguiente comando:

```
aws glue update-catalog --cli-input-json '{
    "name": "123456789012",
    "catalogInput": {
        "description": "Updating root catalog with role arn",
        "catalogProperties": {
            "customProperties": {
                "ColumnStatistics.RoleArn": "arn:aws:iam::"123456789012":role/service-role/AWSGlueServiceRole",
                "ColumnStatistics.Enabled": "true"
            }
        }
    }
}'
```

 El comando anterior llama a operación `UpdateCatalog` de AWS Glue, que adopta una estructura `CatalogProperties` con los siguientes pares clave-valor para generar estadísticas a nivel de catálogo: 
+ ColumnStatistics.RoleArn: ARN del rol de IAM se utilizará en todas las tareas activadas para la generación de estadísticas a nivel de catálogo
+ ColumnStatistics.Enabled: valor booleano que indica si la configuración a nivel de catálogo está habilitada o deshabilitada

------

# Visualización configuración automatizada en el nivel de tabla
<a name="view-auto-column-stats-settings"></a>

 Cuando la recopilación de estadísticas en el catálogo está habilitada, cada vez que se crea o actualiza una tabla de Apache Hive o de Apache Iceberg mediante las API de `CreateTable` o de `UpdateTable` a través de Consola de administración de AWS, un SDK o Rastreador de AWS Glue, una configuración de tabla equivalente se crea para esa tabla. 

 Las tablas que tengan la generación automática de estadísticas habilitada deben seguir una de las siguientes propiedades:
+ Utilice una propiedad `InputSerdeLibrary` que comience por org.apache.hadoop y `TableType` sea igual a `EXTERNAL_TABLE`.
+ Utilice una propiedad `InputSerdeLibrary` que comience por `com.amazon.ion` y `TableType` sea igual a `EXTERNAL_TABLE`.
+ Guarde un valor table\$1type: “ICEBERG” en su estructura de parámetros. 

 Después de crear o actualizar una tabla, puede verificar los detalles de esta para confirmar la generación de estadísticas. `Statistics generation summary` muestra el conjunto de propiedades `Schedule` como `AUTO`, y el valor `Statistics configuration` es `Inherited from catalog`. Glue activará automáticamente y de forma interna cualquier configuración de tabla que tenga los siguientes parámetros. 

![\[Se aplicó una imagen de una tabla de Hive con una recopilación de estadísticas a nivel de catálogo y se han recopilado estadísticas.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/auto-stats-summary.png)


# Desactivación de la generación de estadísticas de columnas a nivel de catálogo
<a name="disable-auto-column-stats-generation"></a>

 Puede deshabilitar la generación automática de estadísticas de columnas en tablas nuevas mediante la consola AWS Lake Formation, la API `glue:UpdateCatalogSettings` o la API `glue:DeleteColumnStatisticsTaskSettings`. 

**Desactivación de la generación automática de estadísticas de columnas a nivel de cuenta**

1. Abra la consola de Lake Formation en [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/).

1. En la barra de navegación izquierda, elija **Claves**.

1. En la página **Resumen del catálogo**, seleccione **Editar** en **Configuración de la optimización**. 

1. En la página **Configuración de la optimización de tablas**, anule la selección de la opción **Habilitar la generación automática de estadísticas en las tablas del catálogo**.

1. Elija **Enviar**.

# Generación de estadísticas de columnas según una programación
<a name="generate-column-stats"></a>

Siga estos pasos para configurar una programación para generar estadísticas de columnas en AWS Glue Data Catalog mediante la consola de AWS Glue, la AWS CLI o la operación [CreateColumnStatisticsTaskSettings](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-CreateColumnStatisticsTaskSettings).

------
#### [ Console ]

**Generación de estadísticas de columnas mediante la consola**

1. Inicie sesión en la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). 

1. Seleccione las tablas del Data Catalog.

1. Seleccione una tabla de la lista. 

1. Seleccione la pestaña **Estadísticas de columnas** en la sección inferior de la página **Tablas**.

1. También puede seleccionar **Generar según una programación** en **Estadísticas de columnas** de la sección **Acciones**.

1. En la página **Generar estadísticas según una programación**, configure una programación periódica para ejecutar la tarea de estadísticas de columnas seleccionando la frecuencia y la hora de inicio. Puede elegir la frecuencia para que sea por hora, día o semana, o definir una expresión cron para especificar el horario.

   Una expresión cron es una cadena que representa un patrón de programación y consta de 6 campos separados por espacios: \$1 \$1 \$1 \$1 \$1 <minuto> <hora> <día del mes> <mes> <día de la semana> <año> Por ejemplo, para ejecutar una tarea todos los días a medianoche, la expresión cron sería: 0 0 \$1 \$1 ? \$1

   Para obtener más información, consulte [Expresiones Cron](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html#CronExpressions).  
![\[La captura de pantalla muestra las opciones disponibles para generar estadísticas de columnas.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/generate-column-stats-schedule.png)

1. A continuación, elija la opción de columnas para generar las estadísticas.
   + **Todas las columnas**: elija esta opción para generar estadísticas para todas las columnas de la tabla.
   + **Columnas seleccionadas**: elija esta opción para generar estadísticas para columnas específicas. Puede seleccionar las columnas en la lista desplegable.

1. Elija un rol de IAM o cree un rol existente que tenga permisos para generar estadísticas. AWS Glue asume este rol para generar estadísticas de columnas.

   Un enfoque más rápido es dejar que la consola de AWS Glue cree un rol para usted. El rol que crea es específicamente para generar las estadísticas de columnas e incluye la política `AWSGlueServiceRole` administrada por AWS, más la política en línea necesaria para el origen de datos especificado. 

   Si especifica un rol existente para generar estadísticas de columnas, asegúrese de que incluya la política `AWSGlueServiceRole` o una equivalente (o una versión reducida de esta política), además de las políticas insertadas requeridas. 

1. (Opcional) A continuación, elija una configuración de seguridad para habilitar el cifrado en reposo de los registros.

1. (Opcional) Para elegir un tamaño de muestra, indique solo un porcentaje específico de filas de la tabla para generar estadísticas. El valor predeterminado es Todas las filas. Utilice las flechas hacia arriba y hacia abajo para aumentar o disminuir el valor porcentual. 

   Se recomienda incluir todas las filas de la tabla para calcular estadísticas precisas. Utilice filas de muestra para generar estadísticas de columnas solo cuando los valores aproximados sean aceptables.

1. Elija **Generar estadísticas** para ejecutar la tarea de generación de estadísticas de columnas.

------
#### [ AWS CLI ]

Puede usar la siguiente AWS CLI de ejemplo para crear una programación de generación de estadísticas de columnas. Database-name, table-name y role son parámetros obligatorios, y los parámetros opcionales son schedule, column-name-list, catalog-id, sample-size, and security-configuration.

```
aws glue create-column-statistics-task-settings \ 
 --database-name 'database_name' \ 
 --table-name table_name \ 
 --role 'arn:aws:iam::123456789012:role/stats-role' \ 
 --schedule 'cron(0 0-5 14 * * ?)' \ 
 --column-name-list 'col-1' \  
 --catalog-id '123456789012' \ 
 --sample-size '10.0 ' \
 --security-configuration 'test-security'
```

También puede generar estadísticas de columnas llamando a la operación [StartColumnStatisticsTaskRun](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-StartColumnStatisticsTaskRun).

------

# Administración de la programación para la generación de estadísticas de columnas
<a name="manage-column-stats-schedule"></a>

Puede administrar las operaciones de programación, como actualizar, iniciar, detener y eliminar las programaciones para la generación de estadísticas de columnas en AWS Glue. Puede utilizar la consola de AWS Glue, la AWS CLI o las [operaciones de la API de estadísticas de columnas de AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html) para realizar estas tareas.

**Topics**
+ [Actualización de la programación para la generación de estadísticas de columnas](#update-column-stats-shedule)
+ [Detención de la programación para la generación de estadísticas de columnas](#stop-column-stats-schedule)
+ [Reanudación de la programación para la generación de estadísticas de columnas](#resume-column-stats-schedule)
+ [Eliminación de la programación de estadísticas de columnas](#delete-column-stats-schedule)

## Actualización de la programación para la generación de estadísticas de columnas
<a name="update-column-stats-shedule"></a>

Puede actualizar la programación para activar la tarea de generación de estadísticas de columnas después de haberla creado. Puede utilizar la consola de AWS Glue, la AWS CLI o ejecutar la operación [UpdateColumnStatisticsTaskSettings](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-UpdateColumnStatisticsTaskSettings) para actualizar la programación de una tabla. Puede modificar los parámetros de una programación existente, como el tipo de programación (bajo demanda o programada) y otros parámetros opcionales. 

------
#### [ Consola de administración de AWS ]

**Para actualizar la configuración de una tarea de estadísticas de columnas**

1. Inicie sesión en la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Elija la tabla que desea actualizar de la lista de tablas.

1. En la sección inferior de la página de detalles de la tabla, elija **Estadísticas de columnas**. 

1. En **Acciones**, elija **Editar** para actualizar la programación.

1. Realice los cambios que desee en la programación y seleccione **Guardar**.

------
#### [ AWS CLI ]

 Si no está utilizando la característica de generación de estadísticas de AWS Glue en la consola, puede actualizar manualmente la programación con el comando `update-column-statistics-task-settings`. En el siguiente ejemplo, se muestra cómo actualizar las estadísticas de las columnas mediante AWS CLI. 

```
aws glue update-column-statistics-task-settings \ 
 --database-name 'database_name' \ 
 --table-name 'table_name' \ 
 --role arn:aws:iam::123456789012:role/stats_role \ 
 --schedule 'cron(0 0-5 16 * * ?)' \ 
 --column-name-list 'col-1' \
 --sample-size '20.0' \  
 --catalog-id '123456789012'\
 --security-configuration 'test-security'
```

------

## Detención de la programación para la generación de estadísticas de columnas
<a name="stop-column-stats-schedule"></a>

 Si ya no necesita estadísticas incrementales, puede detener la generación programada para ahorrar recursos y costos. Pausar la programación no afecta las estadísticas generadas anteriormente. Puede reanudar la programación cuando lo desee. 

------
#### [ Consola de administración de AWS ]

**Para detener la programación para una tarea de generación de estadísticas de columnas**

1. En la consola AWS Glue, seleccione **Tablas** en el catálogo de datos.

1. Seleccione una tabla con estadísticas de columnas.

1. En la página de **Detalles de la tabla**, seleccione **Estadísticas de columnas**.

1. En **Acciones**, elija **Generación programada** y **Pausar**.

1. Seleccione **Pausar** para confirmar.

------
#### [ AWS CLI ]

Para detener la programación de ejecución de una tarea de estadísticas de columnas mediante la AWS CLI, puede utilizar el siguiente comando: 

```
aws glue stop-column-statistics-task-run-schedule \
 --database-name ''database_name' \
 --table-name 'table_name'
```

Reemplace `database_name` y `table_name` con los nombres reales de la base de datos y la tabla para las que desea detener la programación de ejecución de la tarea de estadísticas de columnas.

------

## Reanudación de la programación para la generación de estadísticas de columnas
<a name="resume-column-stats-schedule"></a>

 Si ha pausado la programación de generación de estadísticas, AWS Glue le permite reanudarla cuando lo desee. Puede reanudar la programación mediante la consola de AWS Glue, la AWS CLI o la operación [StartColumnStatisticsTaskRunSchedule](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-StartColumnStatisticsTaskRunSchedule). 

------
#### [ Consola de administración de AWS ]

**Para reanudar la programación para la generación de estadísticas de columnas**

1. En la consola AWS Glue, seleccione **Tablas** en el catálogo de datos.

1. Seleccione una tabla con estadísticas de columnas.

1. En la página de **Detalles de la tabla**, seleccione **Estadísticas de columnas**.

1. En **Acciones**, elija **Generación programada** y **Reanudar**.

1. Seleccione **Reanudar** para confirmar.

------
#### [ AWS CLI ]

Reemplace `database_name` y `table_name` con los nombres reales de la base de datos y la tabla para las que desea detener la programación de ejecución de la tarea de estadísticas de columnas.

```
aws glue start-column-statistics-task-run-schedule \
 --database-name 'database_name' \
 --table-name 'table_name'
```

------

## Eliminación de la programación de estadísticas de columnas
<a name="delete-column-stats-schedule"></a>

 Si bien por lo general se recomienda mantener las estadísticas actualizadas para obtener un rendimiento óptimo de las consultas, hay casos de uso específicos en los que eliminar la programación de generación automática podría resultar beneficioso.
+ Si los datos permanecen relativamente estáticos, las estadísticas de las columnas existentes pueden seguir siendo precisas durante un período prolongado, lo que reduce la necesidad de actualizaciones frecuentes. Eliminar la programación puede evitar el consumo innecesario de recursos y la sobrecarga asociada con la regeneración de estadísticas en datos que no sufren modificaciones.
+ Cuando se prefiere el control manual sobre la generación de estadísticas. Al eliminar la programación automática, los administradores pueden actualizar selectivamente las estadísticas de las columnas en intervalos específicos o después de cambios significativos en los datos, alineando el proceso con sus estrategias de mantenimiento y necesidades de asignación de recursos. 

------
#### [ Consola de administración de AWS ]

**Cómo eliminar la programación de generación de estadísticas de columnas**

1. En la consola AWS Glue, seleccione **Tablas** en el catálogo de datos.

1. Seleccione una tabla con estadísticas de columnas.

1. En la página de **Detalles de la tabla**, seleccione **Estadísticas de columnas**.

1. En **Acciones**, elija **Generación programada** y **Eliminar**.

1. Elija **Eliminar** para confirmar.

------
#### [ AWS CLI ]

Reemplace `database_name` y `table_name` con los nombres reales de la base de datos y la tabla para las que desea detener la programación de ejecución de la tarea de estadísticas de columnas.

Puede eliminar la programación de estadísticas de las columnas mediante la operación de API [DeleteColumnStatisticsTaskSettings](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-DeleteColumnStatisticsTaskSettings) o AWS CLI. En el ejemplo siguiente se muestra cómo eliminar la programación para generar estadísticas de columnas mediante AWS Command Line Interface (AWS CLI).

```
aws glue delete-column-statistics-task-settings \
    --database-name 'database_name' \
    --table-name 'table_name'
```

------

# Generación de estadísticas de columnas bajo demanda
<a name="column-stats-on-demand"></a>

Puede ejecutar la tarea de estadísticas de columnas para la tarea de tablas de AWS Glue Data Catalog bajo demanda sin una programación establecida. Esta opción resulta útil para realizar un análisis ad hoc o cuando es necesario calcular las estadísticas de forma inmediata.

Siga estos pasos para generar las estadísticas de columnas bajo demanda para el catálogo de datos mediante la consola de AWS Glue o AWS CLI.

------
#### [ Consola de administración de AWS ]

**Generación de estadísticas de columnas mediante la consola**

1. Inicie sesión en la consola de AWS Glue en [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/). 

1. Seleccione las tablas del Data Catalog.

1.  Seleccione una tabla de la lista. 

1. Seleccione **Generar estadísticas** en el menú **Acciones**.

   También puede elegir la opción **Generar**, **Generar bajo demanda** en la pestaña **Estadísticas de columnas**, en la sección inferior de la página de **Tabla**.

1. Siga los pasos 7 a 11 de [Generación de estadísticas de columnas según una programación](generate-column-stats.md) para generar estadísticas de columnas para la tabla.

1. En la página **Generar estadísticas**, especifique las siguientes opciones:   
![\[La captura de pantalla muestra las opciones disponibles para generar estadísticas de columnas.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/generate-column-stats.png)
   + **Todas las columnas**: elija esta opción para generar estadísticas para todas las columnas de la tabla.
   + **Columnas seleccionadas**: elija esta opción para generar estadísticas para columnas específicas. Puede seleccionar las columnas en la lista desplegable.
   + **Rol de IAM**: elija **Crear un nuevo rol de IAM** que tenga las políticas de permisos necesarias para ejecutar la tarea de generación de estadísticas de columnas. Elija Ver detalles del permiso para revisar la declaración de la política. También puede elegir un rol de IAM de la lista. Para obtener más información sobre los permisos necesarios, consulte [Requisitos previos para generar estadísticas de columnas](column-stats-prereqs.md).

     AWS Glue asume los permisos del rol que se especifican para generar estadísticas. 

     Para obtener más información sobre cómo proporcionar roles para AWS Glue, consulte [Políticas basadas en identidad para AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies).
   + (Opcional) A continuación, elija una configuración de seguridad para habilitar el cifrado en reposo de los registros.
   + **Filas de muestra**: elija solo un porcentaje específico de filas de la tabla para generar estadísticas. El valor predeterminado es Todas las filas. Utilice las flechas hacia arriba y hacia abajo para aumentar o disminuir el valor porcentual.
**nota**  
Se recomienda incluir todas las filas de la tabla para calcular estadísticas precisas. Utilice filas de muestra para generar estadísticas de columnas solo cuando los valores aproximados sean aceptables.

   Elija **Generar estadísticas** para ejecutar la tarea.

------
#### [ AWS CLI ]

Este comando activará la ejecución de una tarea de estadísticas de columnas para la tabla especificada. Debe proporcionar el nombre de la base de datos, el nombre de la tabla, un rol de IAM con permisos para generar estadísticas y, de forma opcional, proporcionar los nombres de las columnas y un porcentaje del tamaño de la muestra para el cálculo de las estadísticas.

```
aws glue start-column-statistics-task-run \ 
    --database-name 'database_name \ 
    --table-name 'table_name' \ 
    --role 'arn:aws:iam::123456789012:role/stats-role' \
    --column-name 'col1','col2'  \
    --sample-size 10.0
```

Este comando iniciará una tarea para generar estadísticas de columnas para la tabla especificada. 

------

## Actualización de estadísticas de columnas bajo demanda
<a name="update-column-stats-on-demand"></a>

 Mantener las estadísticas de las columnas actualizadas es fundamental para que el optimizador de consultas genere planes de ejecución eficientes, lo que garantiza un mejor rendimiento de las consultas, una reducción del consumo de recursos y un mejor rendimiento general del sistema. Este proceso es especialmente importante después de cambios importantes en los datos, como cargas masivas o modificaciones exhaustivas, que pueden hacer que las estadísticas existentes queden obsoletas. 

Debe ejecutar explícitamente la tarea **Generar estadísticas** desde la consola AWS Glue para actualizar las estadísticas de las columnas. El catálogo de datos no actualiza automáticamente las estadísticas.

Si no utiliza la característica de generación de estadísticas de AWS Glue en la consola, puede actualizar manualmente las estadísticas de las columnas mediante la operación de API [UpdateColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_UpdateColumnStatisticsForTable.html) o AWS CLI. En el siguiente ejemplo, se muestra cómo actualizar las estadísticas de las columnas mediante AWS CLI.

```
aws glue update-column-statistics-for-table --cli-input-json:

{
    "CatalogId": "111122223333",
    "DatabaseName": "database_name",
    "TableName": "table_name",
    "ColumnStatisticsList": [
        {
            "ColumnName": "col1",
            "ColumnType": "Boolean",
            "AnalyzedTime": "1970-01-01T00:00:00",
            "StatisticsData": {
                "Type": "BOOLEAN",
                "BooleanColumnStatisticsData": {
                    "NumberOfTrues": 5,
                    "NumberOfFalses": 5,
                    "NumberOfNulls": 0
                }
            }
        }
    ]
}
```

# Visualización de estadísticas de columnas
<a name="view-column-stats"></a>

Tras generar las estadísticas correctamente, el catálogo de datos almacena esta información para que los optimizadores basados en los costos de Amazon Athena y Amazon Redshift puedan tomar las decisiones óptimas al ejecutar consultas. Las estadísticas varían en función del tipo de columna.

------
#### [ Consola de administración de AWS ]

**Visualización de las estadísticas de columna de una tabla**
+ Tras ejecutar la tarea de estadísticas de columnas, la pestaña **Estadísticas de columnas** de la página de **Detalles de la tabla** muestra las estadísticas de la tabla.   
![\[La captura de pantalla muestra las columnas generadas a partir de la ejecución más reciente.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/view-column-stats.png)

  Están disponibles las siguientes estadísticas:
  + Nombre de columna: nombre de columna utilizado para generar estadísticas
  + Última actualización: fecha y hora en que se generaron las estadísticas
  + Longitud media: longitud media de los valores de la columna
  + Valores distintos: número total de valores distintos de la columna. Estimamos el número de valores distintos de una columna con un error relativo del 5 %.
  + Valor máximo: el valor más alto de la columna.
  + Valor mínimo: el valor más bajo de la columna. 
  + Longitud máxima: longitud del valor más alto de la columna.
  + Valores nulos: el número total de valores nulos en la columna.
  + Valores verdaderos: el número de valores verdaderos en la columna.
  + Valores falsos: el número de valores falsos en la columna.
  + numFiles: número total de archivos de la tabla. Este valor está disponible en la pestaña **Propiedades avanzadas**.

------
#### [ AWS CLI ]

En el siguiente ejemplo se muestra cómo recuperar estadísticas de columnas mediante AWS CLI.

```
aws glue get-column-statistics-for-table \
    --database-name database_name \
    --table-name table_name \
    --column-names <column_name>
```

 También puede ver las estadísticas de las columnas mediante la operación de API [GetColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_GetColumnStatisticsForTable.html). 

------

# Visualización de las ejecuciones de tareas de estadísticas de columnas
<a name="view-stats-run"></a>

Después de ejecutar una tarea de estadísticas de columnas, puede explorar los detalles de la ejecución de la tarea de una tabla mediante la consola AWS Glue, AWS CLI o mediante la operación [GetColumnStatisticsTaskRuns](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-GetColumnStatisticsTaskRun).

------
#### [ Console ]

**Para ver los detalles de ejecución de la tarea con estadísticas de columnas**

1. En la consola AWS Glue, seleccione **Tablas** en el catálogo de datos.

1. Seleccione una tabla con estadísticas de columnas.

1. En la página de **Detalles de la tabla**, seleccione **Estadísticas de columnas**.

1. Seleccione **Ver ejecuciones**.

   Puede ver información sobre todas las ejecuciones asociadas a la tabla especificada.  
![\[La captura de pantalla muestra las opciones disponibles para generar estadísticas de columnas.\]](http://docs.aws.amazon.com/es_es/glue/latest/dg/images/view-column-stats-task-runs.png)

------
#### [ AWS CLI ]

En el siguiente ejemplo, sustituya los valores de `DatabaseName` y `TableName` por el nombre real de la base de datos y la tabla.

```
aws glue get-column-statistics-task-runs --input-cli-json file://input.json
{
    "DatabaseName": "database_name",
    "TableName": "table_name"
}
```

------

# Detener la ejecución de la tarea de estadísticas de columnas
<a name="stop-stats-run"></a>

Puede detener la ejecución de una tarea de estadísticas de columnas para una tabla mediante la consola AWS Glue, AWS CLI o mediante la operación [StopColumnStatisticsTaskRun](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-column-statistics.html#aws-glue-api-crawler-column-statistics-StopColumnStatisticsTaskRun).

------
#### [ Console ]

**Para detener una tarea de estadísticas de columnas, ejecute**

1. En la consola AWS Glue, seleccione **Tablas** en el catálogo de datos.

1. Seleccione la tabla con la columna de La ejecución de la tarea de estadísticas está en curso.

1. En la página de **Detalles de la tabla**, seleccione **Estadísticas de columnas**.

1. Elija **Detener**.

   Si detiene la tarea antes de que se complete la ejecución, no se generarán las estadísticas de las columnas para la tabla.

------
#### [ AWS CLI ]

En el siguiente ejemplo, sustituya los valores de `DatabaseName` y `TableName` por el nombre real de la base de datos y la tabla.

```
aws glue stop-column-statistics-task-run --input-cli-json file://input.json
{
    "DatabaseName": "database_name",
    "TableName": "table_name"
}
```

------

# Eliminar estadísticas de columnas
<a name="delete-column-stats"></a>

Puede eliminar las estadísticas de las columnas mediante la operación de API [DeleteColumnStatisticsForTable](https://docs.aws.amazon.com/glue/latest/webapi/API_DeleteColumnStatisticsForTable.html) o AWS CLI. En el ejemplo siguiente se muestra cómo eliminar estadísticas de columnas mediante AWS Command Line Interface (AWS CLI).

```
aws glue delete-column-statistics-for-table \
    --database-name 'database_name' \
    --table-name 'table_name' \
    --column-name 'column_name'
```

# Consideraciones y limitaciones
<a name="column-stats-notes"></a>

Las siguientes consideraciones y limitaciones se aplican a la generación de estadísticas de columnas.

**Consideraciones**
+ El uso del muestreo para generar estadísticas reduce el tiempo de ejecución, pero puede generar estadísticas inexactas.
+ El catálogo de datos no almacena versiones diferentes de las estadísticas.
+ Solo puede ejecutar una tarea de generación de estadísticas a la vez por tabla.
+ Si una tabla se cifra con la clave AWS KMS de cliente registrada en el catálogo de datos, AWS Glue utiliza la misma clave para cifrar las estadísticas.

**La tarea de estadísticas de las columnas permite generar estadísticas:**
+ Cuando el rol de IAM tiene permisos de tabla completos (IAM o Lake Formation).
+ Cuando el rol de IAM tiene permisos sobre la tabla mediante el modo de acceso híbrido de Lake Formation.

**La tarea de estadísticas de columnas no admite la generación de estadísticas para:**
+ Tablas con control de acceso basado en celdas de Lake Formation
+ Lagos de datos transaccionales: Fundación Linux Delta Lake, Apache Hudi
+ Tablas en bases de datos federadas: recursos compartidos de datos Hive metastore, Amazon Redshift
+ Columnas anidadas, matrices y tipos de datos de estructura.
+ Tabla que se comparte con usted desde otra cuenta

# Cifrado del Catálogo de datos
<a name="catalog-encryption"></a>

 Para proteger los metadatos en reposo que están almacenados en el AWS Glue Data Catalog, puede usar claves de cifrado administradas por AWS Key Management Service (AWS KMS). En **Configuración del Catálogo de datos**, puede activar el cifrado del Catálogo de datos para el nuevo catálogo. Puede activar o desactivar el cifrado del Catálogo de datos existente, según lo que necesite. Cuando está activado, AWS Glue cifra todos los metadatos nuevos que se escriben en el catálogo, mientras que los ya existentes permanecen sin cifrar. 

Para obtener información detallada sobre el cifrado del Catálogo de datos, consulte [Cifrado del Catálogo de datos](encrypt-glue-data-catalog.md).

# Cómo proteger su Catálogo de datos con Lake Formation
<a name="secure-catalog"></a>

 AWS Lake Formation es un servicio que facilita la configuración de un lago de datos seguro en AWS. Proporciona un lugar central para crear y administrar sus lagos de datos de forma segura mediante la definición de permisos detallados para controlar el acceso. Lake Formation usa el Catálogo de datos para almacenar y recuperar metadatos sobre su lago de datos, como las definiciones de tablas, la información de los esquemas y las configuraciones del control de acceso a los datos.

Puede registrar la ubicación de sus datos de Amazon S3 de la base de datos o la tabla de metadatos con Lake Formation y usarla para definir los permisos a nivel de metadatos en los recursos del Catálogo de datos. También puede usar Lake Formation para administrar los permisos de acceso al almacenamiento en los datos subyacentes que se guardan en Amazon S3 en nombre de los motores analíticos integrados.

Para obtener más información, consulte [¿Qué es AWS Lake Formation?](lake-formation/latest/dg/what-is-lake-formation.html).

# Trabajar con vistas AWS Glue Data Catalog en AWS Glue
<a name="catalog-views"></a>

 Puede crear y gestionar vistas en AWS Glue Data Catalog, conocidas comúnmente como vistas AWS Glue Data Catalog. Estas vistas son útiles porque admiten varios motores de consultas SQL, lo que le permite acceder a la misma vista en diferentes servicios AWS, como Amazon Athena, Amazon Redshift y AWS Glue. Puede utilizar vistas basadas en Apache Iceberg, Apache Hudi y Delta Lake. 

 Al crear una vista en el Catálogo de datos, puede usar concesiones de recursos y controles de acceso basados en etiquetas en AWS Lake Formation para otorgar acceso a dicha vista. Al utilizar este método de control de acceso, no es necesario configurar permisos adicionales para las tablas referenciadas al crear la vista. Este método de concesión de permisos se denomina semántica del definidor y estas vistas se denominan vistas del definidor. Para obtener más información sobre el control de acceso en AWS Lake Formation, consulte la sección [Concesión y revocación de permisos en los recursos del Catálogo de datos](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html) de en la Guía para desarrolladores de AWS Lake Formation. 

 Las vistas del Catálogo de datos son útiles para los siguientes casos de uso: 
+  **Control de acceso detallado**: puede crear una vista que restrinja el acceso a los datos en función de los permisos que necesite el usuario. Por ejemplo, puede usar las vistas del Catálogo de datos para evitar que el personal que no trabaje en el departamento de Recursos Humanos (RR.HH.) vea información de identificación personal (PII). 
+  **Definición de vista completa**: al aplicar determinados filtros a la vista del Catálogo de datos, se asegura de que los registros de datos disponibles en la vista estén siempre completos. 
+  **Seguridad mejorada**: La definición de la consulta utilizada para crear la vista debe estar completa, lo que hace que las vistas del Catálogo de datos sean menos susceptibles a comandos SQL de actores maliciosos. 
+  **Uso compartido de datos sencillo**: Comparta datos con otras cuentas de AWS sin mover los datos, utilizando el uso compartido de datos entre cuentas en AWS Lake Formation. 

## Creación de una vista del catálogo de datos
<a name="catalog-creating-view"></a>

 Puede crear vistas del Catálogo de datos utilizando AWS CLI y scripts ETL de AWS Glue usando Spark SQL. La sintaxis para crear una vista del Catálogo de datos incluye especificar el tipo de vista como `MULTI DIALECT` y el predicado `SECURITY` como `DEFINER`, lo que indica una vista de definidor. 

 Ejemplo de instrucción SQL para crear una vista en el Catálogo de datos: 

```
CREATE PROTECTED MULTI DIALECT VIEW database_name.catalog_view SECURITY DEFINER
AS SELECT order_date, sum(totalprice) AS price
FROM source_table
GROUP BY order_date;
```

 Después de crear una vista del Catálogo de datos, puede utilizar un rol de IAM con el permiso AWS Lake Formation `SELECT` en la vista para consultarla desde servicios como Amazon Athena, Amazon Redshift o trabajos ETL de AWS Glue. No es necesario conceder acceso a las tablas subyacentes a las que se hace referencia en la vista. 

 Para obtener más información sobre la creación y configuración de vistas del Catálogo de datos, consulte [Creación de vistas del Catálogo de datos de AWS Glue](https://docs.aws.amazon.com/lake-formation/latest/dg/working-with-views.html) en la Guía para desarrolladores de AWS Lake Formation. 

## Operaciones de vista admitidas
<a name="catalog-supported-view-operations"></a>

 Los siguientes fragmentos de comandos muestran varias formas de trabajar con las vistas del Catálogo de datos: 

 **CREATE VIEW** 

 Crea una vista del Catálogo de datos. El siguiente es un ejemplo que muestra cómo crear una vista a partir de una tabla existente: 

```
CREATE PROTECTED MULTI DIALECT VIEW catalog_view 
SECURITY DEFINER AS SELECT * FROM my_catalog.my_database.source_table
```

 **ALTER VIEW** 

 Sintaxis disponible: 

```
ALTER VIEW view_name [FORCE] ADD DIALECT AS query
ALTER VIEW view_name [FORCE] UPDATE DIALECT AS query
ALTER VIEW view_name DROP DIALECT
```

 Puede utilizar la opción `FORCE ADD DIALECT` para forzar la actualización del esquema y los subobjetos según el nuevo dialecto del motor. Tenga en cuenta que hacer esto puede provocar errores de consulta si no utiliza también `FORCE` para actualizar otros dialectos del motor. A continuación se muestra un ejemplo: 

```
ALTER VIEW catalog_view FORCE ADD DIALECTAS
SELECT order_date, sum(totalprice) AS priceFROM source_tableGROUP BY orderdate;
```

 A continuación se muestra cómo modificar una vista para actualizar el dialecto: 

```
ALTER VIEW catalog_view UPDATE DIALECT AS
SELECT count(*) FROM my_catalog.my_database.source_table;
```

 **DESCRIBE VIEW** 

 Sintaxis disponible para describir una vista: 

 `SHOW COLUMNS {FROM|IN} view_name [{FROM|IN} database_name]`: Si el usuario tiene los permisos AWS Glue y AWS Lake Formation necesarios para describir la vista, puede enumerar las columnas. A continuación se muestran un par de comandos de ejemplo para mostrar columnas: 

```
SHOW COLUMNS FROM my_database.source_table;    
SHOW COLUMNS IN my_database.source_table;
```

 `DESCRIBE view_name`: Si el usuario tiene los permisos AWS Glue y AWS Lake Formation necesarios para describir la vista, puede enumerar las columnas de la vista junto con sus metadatos. 

 **DROP VIEW** 

 Sintaxis disponible: 

```
DROP VIEW [ IF EXISTS ] view_name
```

 El siguiente ejemplo muestra una instrucción `DROP` que comprueba si existe una vista antes de eliminarla: 

```
DROP VIEW IF EXISTS catalog_view;
```

 `SHOW CREATE VIEW view_name`: Muestra la instrucción SQL que crea la vista especificada. El siguiente es un ejemplo que muestra cómo crear una vista en el catálogo de datos: 

```
SHOW CREATE TABLE my_database.catalog_view;CREATE PROTECTED MULTI DIALECT VIEW my_catalog.my_database.catalog_view (
  net_profit,
  customer_id,
  item_id,
  sold_date)
TBLPROPERTIES (
  'transient_lastDdlTime' = '1736267222')
SECURITY DEFINER AS SELECT * FROM
my_database.store_sales_partitioned_lf WHERE customer_id IN (SELECT customer_id from source_table limit 10)
```

 **SHOW VIEWS** 

 Liste todas las vistas en el catálogo, como vistas regulares, vistas multidialecto (MDV) y MDV sin dialecto de Spark. La sintaxis disponible es la siguiente: 

```
SHOW VIEWS [{ FROM | IN } database_name] [LIKE regex_pattern]:
```

 A continuación se muestra un comando de ejemplo para mostrar vistas: 

```
SHOW VIEWS IN marketing_analytics LIKE 'catalog_view*';
```

 Para obtener más información sobre la creación y configuración de vistas de catálogos de datos, consulte [Creación de vistas de Catálogos de datos de AWS Glue](https://docs.aws.amazon.com/lake-formation/latest/dg/working-with-views.html) en la Guía para desarrolladores de AWS Lake Formation. 

## Consulta de la vista del Catálogo de datos
<a name="catalog-view-query"></a>

 Tras crear una vista del Catálogo de datos, puede consultar la vista. El rol de IAM configurado en sus trabajos AWS Glue debe tener el permiso **SELECT** de Lake Formation en la vista del Catálogo de datos. No es necesario conceder acceso a las tablas subyacentes a las que se hace referencia en la vista. 

 Una vez que haya configurado todo, podrá consultar la vista. Por ejemplo, puede ejecutar la siguiente consulta para acceder a una vista. 

```
SELECT * from my_database.catalog_view LIMIT 10;
```

## Limitaciones
<a name="catalog-view-limitations"></a>

 Tenga en cuenta las siguientes limitaciones cuando utilice las vistas de catálogo de datos. 
+  Solo puede crear vistas del Catálogo de datos con la versión 5.0 de AWS Glue o superior. 
+  El creador de la vista en el Catálogo de datos debe tener acceso a `SELECT` a las tablas base subyacentes a las que accede la vista. La creación de la vista en el Catálogo de datos falla si una tabla base específica tiene filtros de Lake Formation impuestos al rol del creador. 
+  Las tablas base no deben tener el permiso de lago de datos `IAMAllowedPrincipals` en AWS Lake Formation. Si está presente, se produce el error **Las vistas de múltiples dialectos solo pueden hacer referencia a tablas sin permisos IAMAllowedPrincipals**. 
+  La ubicación de Amazon S3 de la tabla debe estar registrada como ubicación de lago de datos de AWS Lake Formation. Si la tabla no está registrada, se produce el error `Multi Dialect views may only reference AWS Lake Formation managed tables`. Para obtener información sobre cómo registrar ubicaciones de Amazon S3 en AWS Lake Formation, consulte [Registrar una ubicación de Amazon S3](https://docs.aws.amazon.com/lake-formation/latest/dg/register-data-lake.html) en la Guía para desarrolladores de AWS Lake Formation. 
+  Solo puede crear vistas del catálogo de datos `PROTECTED`. No se admiten las vistas `UNPROTECTED`. 
+  No puede hacer referencia a tablas en otra cuenta de AWS en una definición de vista del Catálogo de datos. Tampoco se puede hacer referencia a una tabla de la misma cuenta que esté en una región distinta. 
+  Para compartir datos entre cuentas o regiones, toda la vista debe compartirse entre cuentas y regiones, mediante enlaces de recursos AWS Lake Formation. 
+  No se admiten las funciones definidas por el usuario (UDF). 
+  No puede hacer referencia a otras vistas en las vistas del catálogo de datos. 