Cambia esquemas de tablas de forma manual

En este documento, se describe cómo cambiar de forma manual la definición de esquema para tablas de BigQuery existentes. Muchos cambios de esquema no son compatibles de manera nativa en BigQuery y requieren soluciones alternativas manuales. Las modificaciones de esquema no compatibles incluyen las siguientes opciones:

  • Cambiar el nombre de una columna
  • Cambiar el tipo de datos de una columna
  • Cambiar el modo de una columna (además de disminuir la rigurosidad de las columnas REQUIRED a NULLABLE)
  • Borrar una columna

Para obtener más información sobre cambios de esquemas compatibles en BigQuery, consulta Modifica esquemas de tablas.

Cambia el nombre de una columna

Cloud Console, la IU web clásica de BigQuery, la herramienta de línea de comandos y la API no admiten el cambio de nombre de una columna. Si intentas actualizar un esquema de tabla mediante una columna a la que se le cambió el nombre, se mostrará el siguiente error: BigQuery error in update operation: Provided Schema does not match Table project_id:dataset.table.

Hay dos maneras de renombrar una columna de forma manual:

  • Mediante el uso de una consulta de SQL: elige esta opción si te preocupa más la simplicidad y la facilidad de uso que los costos.
  • Mediante la recreación de la tabla: elige esta opción si te preocupan más los costos que la simplicidad y la facilidad de uso.

Opción 1: usa una consulta

Para cambiar el nombre de una columna con una consulta de SQL, selecciona todas las columnas en la tabla y proporciona un alias a la columna que necesitas renombrar. Puedes usar el resultado de consulta para reemplazar la tabla existente o crear una tabla de destino nueva. Cuando le proporcionas un nombre nuevo a una columna, este debe cumplir con las reglas de BigQuery para los nombres de columnas.

Ventajas

  • Si usas una consulta para escribir los datos en una tabla de destino nueva, se conservan tus datos originales.
  • Si usas el trabajo de consulta a fin de reemplazar los datos originales de la tabla, se generan costos de almacenamiento para una tabla en vez de dos, pero pierdes los datos originales.

Desventajas

  • Si cambias el nombre de una columna con una consulta, debes escanear la tabla completa; los cargos de la consulta pueden ser importantes si la tabla es muy grande.
  • Si escribes los resultados de la consulta en una tabla de destino nueva, se generan costos de almacenamiento para la tabla original y la nueva (a menos que borres la tabla original).

Opción 2: exporta tus datos y súbelos a una tabla nueva

También puedes cambiarle el nombre a una columna si exportas los datos de tu tabla a Cloud Storage y, luego, cargas los datos en una tabla nueva con una definición de esquema que contenga el nombre de columna correcto. También puedes usar el trabajo de carga para reemplazar la tabla existente.

Ventajas

  • No se te cobra por el trabajo de exportación ni por el de carga. Por el momento, los trabajos de carga y exportación de BigQuery son gratuitos.
  • Si usas el trabajo de carga a fin de reemplazar los datos originales de la tabla, se generan costos de almacenamiento para una tabla en vez de dos, pero pierdes los datos originales.

Desventajas

  • Si cargas los datos en una tabla nueva, generas costos de almacenamiento para la tabla original y la nueva (a menos que borres la tabla original).
  • Se generan costos por almacenar los datos exportados en Cloud Storage.

Ejemplo de alias de columna

En el siguiente ejemplo, se muestra una consulta de SQL estándar en la que se seleccionan todos los datos de mytable, excepto 2 columnas que requieren cambio de nombre. Se usa un alias a fin de generar nombres nuevos para esas 2 columnas. column_one pasa a llamarse newcolumn_one y column_two pasa a llamarse newcolumn_two. El resultado de la consulta se usa para reemplazar la tabla existente.

Console

  1. En la IU web de la consola de BigQuery, selecciona el Editor de consultas.

  2. En el Editor de consultas, ingresa la siguiente consulta para seleccionar todos los datos en mydataset.mytable, excepto las dos columnas a las que se les debe cambiar el nombre. mydataset.mytable está en tu proyecto predeterminado. La consulta usa un alias para cambiar el nombre de column_one a newcolumn_one y el nombre de column_two a newcolumn_two.

    SELECT
     * EXCEPT(column_one, column_two),
     column_one AS newcolumn_one, column_two AS newcolumn_two
    FROM
     mydataset.mytable
    
  3. Haz clic en Más (More) y selecciona Configuración de consulta (Query settings).

    Configuración de consulta

  4. En la sección Destino (Destination), marca Establecer una tabla de destino para los resultados de la consulta (Set a destination table for query results).

    Configurar tabla de destino

  5. Haz lo que se indica para los siguientes campos:

    1. En Nombre del proyecto, deja el valor establecido en tu proyecto predeterminado. Este es el proyecto que contiene mydataset.mytable.

    2. En Nombre del conjunto de datos, elige mydataset.

    3. En el campo Nombre de tabla, ingresa mytable.

    4. Haz clic en Aceptar.

  6. En la sección Preferencia de escritura de la tabla de destino (Destination table write preference), para Preferencia de escritura, elige Reemplazar datos de la tabla (Overwrite table). Con esta opción, se reemplazarán los datos de mytable por los resultados de la consulta.

    Reemplazar datos de la tabla

  7. En Ubicación de procesamiento, elige la ubicación de tus datos (opcional).

  8. Haz clic en Guardar para actualizar la configuración y, luego, en el Editor de consultas, haz clic en Ejecutar. Cuando se complete el trabajo de consulta, las columnas en mytable tendrán nombres nuevos.

IU clásica

  1. En la IU web clásica de BigQuery, haz clic en Redactar consulta.

  2. En el cuadro Consulta nueva, ingresa la siguiente consulta para seleccionar todos los datos de mydataset.mytable, excepto las dos columnas a las que se les debe cambiar el nombre. mydataset.mytable está en tu proyecto predeterminado. La consulta usa un alias para cambiar el nombre de column_one a newcolumn_one y el nombre de column_two a newcolumn_two.

    #standardSQL
    SELECT
     * EXCEPT(column_one, column_two),
     column_one AS newcolumn_one, column_two AS newcolumn_two
    FROM
     mydataset.mytable
    
  3. Haz clic en Mostrar opciones.

  4. En la sección Tabla de destino, haz clic en Seleccionar tabla.

  5. En el cuadro de diálogo Seleccionar tabla de destino, haz lo siguiente:

    1. En Proyecto, deja el valor establecido en tu proyecto predeterminado. Este es el proyecto que contiene mydataset.mytable.

    2. En Conjunto de datos, elige mydataset.

    3. En el campo ID de tabla, ingresa mytable.

    4. Haz clic en Aceptar.

  6. En la sección Tabla de destino, para Preferencia de escritura, elige Reemplazar datos de la tabla. Con esta opción, se reemplazarán los datos de mytable por los resultados de la consulta.

  7. En Ubicación de procesamiento, haz clic en Sin especificar y elige la ubicación de tus datos (opcional).

  8. Haz clic en Ejecutar consulta. Cuando se complete el trabajo de consulta, las columnas en mytable tendrán nombres nuevos.

CLI

Ingresa el comando bq query que se muestra a continuación para seleccionar todos los datos de mydataset.mytable, excepto las dos columnas a las que se les debe cambiar el nombre. mydataset.mytable está en tu proyecto predeterminado. La consulta usa un alias para cambiar el nombre de column_one por newcolumn_one y el nombre de column_two por newcolumn_two.

Escribe los resultados de la consulta en mydataset.mytable con la marca --destination_table y especifica la marca --replace para reemplazar los datos de mytable. Especifica la marca use_legacy_sql=false para usar la sintaxis de SQL estándar.

Proporciona la marca --location y establece el valor de tu ubicación (opcional).

bq query \
--destination_table mydataset.mytable \
--replace \
--use_legacy_sql=false \
'SELECT
  * EXCEPT(column_one,
    column_two),
  column_one AS newcolumn_one,
  column_two AS newcolumn_two
FROM
  mydataset.mytable'

API

Para cambiar el nombre de column_one a newcolumn_one y el nombre de column_two a newcolumn_two, realiza una llamada al método jobs.insert y configura un trabajo de query. Especifica tu ubicación en la propiedad location en la sección jobReference (opcional).

La consulta de SQL que se usa en el trabajo de consulta es la siguiente: SELECT * EXCEPT(column_one, column_two), column_one AS newcolumn_one, column_two AS newcolumn_two FROM mydataset.mytable. Esta consulta selecciona todos los datos de mytable, excepto las 2 columnas a las que se les debe cambiar el nombre. Se usa un alias a fin de generar nombres nuevos para esas 2 columnas.

Para reemplazar los datos de mytable por los resultados de la consulta, incluye mydataset.mytable en la propiedad configuration.query.destinationTable y especifica WRITE_TRUNCATE en la propiedad configuration.query.writeDisposition. Para especificar una tabla de destino nueva, ingresa el nombre de la tabla en la propiedad configuration.query.destinationTable.

Cambia el tipo de datos de una columna

Cloud Console, la IU web clásica de BigQuery, la herramienta de línea de comandos y la API no admiten el cambio de tipo de datos de una columna. Si intentas actualizar una tabla mediante la aplicación de un esquema que especifique un tipo de datos nuevo para una columna, se mostrará el siguiente error: BigQuery error in update operation: Provided Schema does not match Table project_id:dataset.table.

Hay dos maneras de cambiar el tipo de datos de una columna de forma manual:

  • Mediante el uso de una consulta de SQL: elige esta opción si te preocupa más la simplicidad y la facilidad de uso que los costos.
  • Mediante la recreación de la tabla: elige esta opción si te preocupan más los costos que la simplicidad y la facilidad de uso.

Opción 1: usa una consulta

Usa una consulta de SQL para seleccionar todos los datos de la tabla y convertir la columna correspondiente en un tipo de datos diferente. Puedes usar los resultados de la consulta para reemplazar los datos de la tabla o crear una tabla de destino nueva.

Ventajas

  • Si usas una consulta para escribir los datos en una tabla de destino nueva, se conservan tus datos originales.
  • Si usas el trabajo de consulta a fin de reemplazar los datos originales de la tabla, se generan costos de almacenamiento para una tabla en vez de dos, pero pierdes los datos originales.

Desventajas

  • Si cambias el tipo de datos de una columna con una consulta, debes escanear la tabla completa; los cargos de la consulta pueden ser importantes si la tabla es muy grande.
  • Si escribes los resultados de la consulta en una tabla de destino nueva, se generan costos de almacenamiento para la tabla original y la nueva (a menos que borres la tabla original).

Opción 2: exporta tus datos y súbelos a una tabla nueva

También puedes cambiar el tipo de datos de una columna si exportas los datos de tu tabla a Cloud Storage y, luego, cargas los datos en una tabla nueva con una definición de esquema que especifique el tipo de datos de columna correcto. Otra opción es usar el trabajo de carga para reemplazar los datos de la tabla existente.

Ventajas

  • No se te cobra por el trabajo de exportación ni por el de carga. Por el momento, los trabajos de carga y exportación de BigQuery son gratuitos.
  • Si usas el trabajo de carga a fin de reemplazar los datos originales de la tabla, se generan costos de almacenamiento para una tabla en vez de dos, pero pierdes los datos originales.

Desventajas

  • Si cargas los datos en una tabla nueva, generas costos de almacenamiento para la tabla original y la nueva (a menos que borres la tabla original).
  • Se generan costos por almacenar los datos exportados en Cloud Storage.

Ejemplo CAST

En el siguiente ejemplo, se muestra una consulta de SQL estándar en la que se seleccionan todos los datos de column_two y column_three en mydataset.mytable y se convierte column_one de DATE a STRING. El resultado de la consulta se usa para reemplazar los datos de la tabla existente. En la tabla cuyos datos se reemplazaron, se almacenará column_one como un tipo de datos STRING.

Cuando usas CAST, es posible que la consulta falle si BigQuery no puede realizar la conversión. Para obtener más detalles sobre las reglas de conversión en SQL estándar, consulta la sección sobre la conversión en la documentación de referencia de operadores y funciones.

Console

  1. En Cloud Console, haz clic en Redactar consulta nueva.

  2. En el Editor de consultas, ingresa la siguiente consulta a fin de seleccionar todos los datos de column_two y column_three en mydataset.mytable, y para convertir column_one de DATE a STRING. La consulta usa un alias para convertir column_one de modo que conserve el mismo nombre. mydataset.mytable está en tu proyecto predeterminado.

    SELECT
     column_two, column_three, CAST(column_one AS STRING) AS column_one
    FROM
     mydataset.mytable
    
  3. Haz clic en Más y selecciona Configuración de consulta.

  4. En la sección Destino, marca Establecer una tabla de destino para los resultados de la consulta.

  5. Haz lo que se indica para los siguientes campos:

    1. En Nombre del proyecto, deja el valor establecido en tu proyecto predeterminado. Este es el proyecto que contiene mydataset.mytable.

    2. En Nombre del conjunto de datos, elige mydataset.

    3. En el campo Nombre de tabla, ingresa mytable.

    4. Haz clic en Aceptar.

  6. En la sección Preferencia de escritura de la tabla de destino, para Preferencia de escritura, elige Reemplazar datos de la tabla). Con esta opción, se reemplazarán los datos de mytable por los resultados de la consulta.

  7. En Ubicación de procesamiento, haz clic en Selección automática y elige la ubicación de tus datos (opcional).

  8. Haz clic en Guardar para actualizar la configuración y, luego, en el Editor de consultas, haz clic en Ejecutar. Cuando se completa el trabajo de consulta, el tipo de datos de column_one es STRING.

IU clásica

  1. En la IU web clásica de BigQuery, haz clic en Redactar consulta.

  2. En el cuadro Consulta nueva, ingresa la consulta que se muestra a continuación para seleccionar todos los datos de column_two y column_three en mydataset.mytable, y convertir column_one de DATE a STRING. La consulta usa un alias para convertir column_one de modo que conserve el mismo nombre. mydataset.mytable está en tu proyecto predeterminado.

    #standardSQL
    SELECT
     column_two, column_three, CAST(column_one AS STRING) AS column_one
    FROM
     mydataset.mytable
    
  3. Haz clic en Mostrar opciones.

  4. En la sección Tabla de destino, haz clic en Seleccionar tabla.

  5. En el cuadro de diálogo Seleccionar tabla de destino, haz lo siguiente:

    1. En Proyecto, deja el valor establecido en tu proyecto predeterminado. Este es el proyecto que contiene mydataset.mytable.

    2. En Conjunto de datos, elige mydataset.

    3. En el campo ID de tabla, ingresa mytable.

    4. Haz clic en Aceptar.

  6. En la sección Tabla de destino, para Preferencia de escritura, elige Reemplazar datos de la tabla. Con esta opción, se reemplazarán los datos de mytable por los resultados de la consulta.

  7. En Ubicación de procesamiento, haz clic en Sin especificar y elige la ubicación de tus datos (opcional).

  8. Haz clic en Ejecutar consulta. Cuando se completa el trabajo de consulta, el tipo de datos de column_one es STRING.

CLI

Ingresa el comando bq query que se muestra a continuación para seleccionar todos los datos de column_two y column_three en mydataset.mytable, y convertir column_one de DATE a STRING. La consulta usa un alias para convertir column_one de modo que conserve el mismo nombre. mydataset.mytable está en tu proyecto predeterminado.

Los resultados de la consulta se escriben en mydataset.mytable con la marca --destination_table y la marca --replace se usa para reemplazar los datos de mytable. Especifica la marca use_legacy_sql=false para usar la sintaxis de SQL estándar.

Proporciona la marca --location y establece el valor de tu ubicación (opcional).

bq query \
--destination_table mydataset.mytable \
--replace \
--use_legacy_sql=false \
'SELECT
  column_two,
  column_three,
  CAST(column_one AS STRING) AS column_one
FROM
  mydataset.mytable'

API

Para seleccionar todos los datos de column_two y column_three en mydataset.mytable, además de convertir column_one de DATE a STRING, realiza una llamada al método jobs.insert y configura un trabajo de query. Especifica tu ubicación en la propiedad location, en la sección jobReference (opcional).

La consulta de SQL que se usa en el trabajo de consulta es la siguiente: SELECT column_two, column_three, CAST(column_one AS STRING) AS column_one FROM mydataset.mytable. La consulta usa un alias para convertir column_one de modo que conserve el mismo nombre.

Para reemplazar los datos de mytable por los resultados de la consulta, incluye mydataset.mytable en la propiedad configuration.query.destinationTable y especifica WRITE_TRUNCATE en la propiedad configuration.query.writeDisposition.

Cambia el modo de una columna

Por el momento, la única modificación que puedes hacer al modo de una columna es cambiar REQUIRED por NULLABLE. Cambiar el modo de una columna de REQUIRED a NULLABLE se denomina disminución de la rigurosidad del modo de una columna. Para obtener más información sobre la disminución de la rigurosidad del modo de las columnas de REQUIRED a NULLABLE, consulta la sección Disminuye la rigurosidad del modo de una columna.

Si tratas de aplicar un cambio no admitido en un modo de columna, se muestra un error como el siguiente. En este ejemplo, se intentó cambiar el modo de una columna de NULLABLE a REPEATED: BigQuery error in update operation: Provided Schema does not match Table project_id:dataset.table. Field field has changed mode from NULLABLE to REPEATED.

Exporta tus datos y súbelos a una tabla nueva

Puedes cambiar el modo de una columna de forma manual si exportas los datos de tu tabla a Cloud Storage y, luego, cargas los datos en una tabla nueva con una definición de esquema que especifique el modo correcto para la columna. Otra opción es usar el trabajo de carga para reemplazar los datos de la tabla existente.

Ventajas

  • No se te cobra por el trabajo de exportación ni por el de carga. Por el momento, los trabajos de carga y exportación de BigQuery son gratuitos.
  • Si usas el trabajo de carga a fin de reemplazar los datos originales de la tabla, se generan costos de almacenamiento para una tabla en vez de dos, pero pierdes los datos originales.

Desventajas

  • Si cargas los datos en una tabla nueva, generas costos de almacenamiento para la tabla original y la nueva (a menos que borres la tabla original).
  • Se generan costos por almacenar los datos exportados en Cloud Storage.

Borra una columna de un esquema de tabla

Cloud Console, la IU web clásica de BigQuery, la herramienta de línea de comandos y la API no admiten la eliminación de una columna del esquema de una tabla existente. Si intentas actualizar una tabla mediante la aplicación de un esquema que quite una columna, se mostrará el siguiente error: BigQuery error in update operation: Provided Schema does not match Table project_id:dataset.table.

Hay dos maneras de borrar una columna de forma manual:

  • Mediante el uso de una consulta de SQL: elige esta opción si te preocupa más la simplicidad y la facilidad de uso que los costos.
  • Mediante la recreación de la tabla: elige esta opción si te preocupan más los costos que la simplicidad y la facilidad de uso.

Opción 1: usa una consulta

Usa una consulta SELECT * EXCEPT que excluya la columna (o columnas) que deseas quitar y usa el resultado de la consulta para reemplazar los datos de la tabla o crear una tabla nueva de destino.

Ventajas

  • Si usas una consulta para escribir los datos en una tabla de destino nueva, se conservan tus datos originales.
  • Si usas el trabajo de consulta a fin de reemplazar los datos originales de la tabla, se generan costos de almacenamiento para una tabla en vez de dos, pero pierdes los datos originales.

Desventajas

  • Borrar una columna con una consulta requiere que escanees los datos en todas las columnas excepto en la que quitas. Los cargos de la consulta pueden ser importantes si la tabla es muy grande.
  • Si escribes los resultados de la consulta en una tabla de destino nueva, se generan costos de almacenamiento para la tabla original y la nueva (a menos que borres la tabla original).

Opción 2: exporta tus datos y súbelos a una tabla nueva

También puedes quitar una columna si exportas los datos de tu tabla a Cloud Storage, borras los datos correspondientes a la columna (o columnas) que deseas quitar y, luego, cargas los datos en una tabla nueva con una definición de esquema que no incluya las columnas que se quitaron. También puedes usar el trabajo de carga para reemplazar la tabla existente.

Ventajas

  • No se te cobra por el trabajo de exportación ni por el de carga. Por el momento, los trabajos de carga y exportación de BigQuery son gratuitos.
  • Si usas el trabajo de carga a fin de reemplazar los datos originales de la tabla, se generan costos de almacenamiento para una tabla en vez de dos, pero pierdes los datos originales.

Desventajas

  • Si cargas los datos en una tabla nueva, generas costos de almacenamiento para la tabla original y la nueva (a menos que borres la tabla original).
  • Se generan costos por almacenar los datos exportados en Cloud Storage.

Ejemplo SELECT * EXCEPT

En el siguiente ejemplo, se muestra una consulta de SQL estándar en la que se seleccionan todos los datos de mydataset.mytable, excepto column_two. El resultado de la consulta se usa para reemplazar los datos de la tabla existente.

Console

  1. En Cloud Console, haz clic en Redactar consulta nueva.

  2. En el Editor de consultas, ingresa la siguiente consulta para seleccionar todos los datos de mydataset.mytable, excepto column_two. mydataset.mytable está en tu proyecto predeterminado.

    SELECT
     * EXCEPT(column_two)
    FROM
     mydataset.mytable
    
  3. Haz clic en Más y selecciona Configuración de consulta.

  4. En la sección Destino, marca Establecer una tabla de destino para los resultados de la consulta.

  5. Haz lo que se indica para los siguientes campos:

    1. En Nombre del proyecto, deja el valor establecido en tu proyecto predeterminado. Este es el proyecto que contiene mydataset.mytable.

    2. En Nombre del conjunto de datos, elige mydataset.

    3. En el campo Nombre de tabla, ingresa mytable.

    4. Haz clic en Aceptar.

  6. En la sección Preferencia de escritura de la tabla de destino, para Preferencia de escritura, elige Reemplazar datos de la tabla. Con esta opción, se reemplazarán los datos de mytable por los resultados de la consulta.

  7. En Ubicación de procesamiento, haz clic en Selección automática y elige la ubicación de tus datos (opcional).

  8. Haz clic en Guardar para actualizar la configuración y, luego, en el Editor de consultas, haz clic en Ejecutar. Cuando se completa el trabajo de consulta, la tabla incluye todas las columnas, excepto column_two.

IU clásica

  1. En la IU web clásica de BigQuery, haz clic en Redactar consulta.

  2. En el cuadro Consulta nueva, ingresa la siguiente consulta para seleccionar todos los datos de mydataset.mytable, excepto column_two. mydataset.mytable está en tu proyecto predeterminado.

    #standardSQL
    SELECT
     * EXCEPT(column_two)
    FROM
     mydataset.mytable
    
  3. Haz clic en Mostrar opciones.

  4. En la sección Tabla de destino, haz clic en Seleccionar tabla.

  5. En el cuadro de diálogo Seleccionar tabla de destino, haz lo siguiente:

    1. En Proyecto, deja el valor establecido en tu proyecto predeterminado. Este es el proyecto que contiene mydataset.mytable.

    2. En Conjunto de datos, elige mydataset.

    3. En el campo ID de tabla, ingresa mytable.

    4. Haz clic en Aceptar.

  6. En la sección Tabla de destino, para Preferencia de escritura, elige Reemplazar datos de la tabla. Con esta opción, se reemplazarán los datos de mytable por los resultados de la consulta.

  7. En Ubicación de procesamiento, haz clic en Sin especificar y elige la ubicación de tus datos (opcional).

  8. Haz clic en Ejecutar consulta. Cuando se complete el trabajo de consulta, la tabla incluirá todas las columnas, excepto column_two.

CLI

Ingresa el siguiente comando bq query para seleccionar todos los datos de mydataset.mytable, excepto column_two. mydataset.mytable está en tu proyecto predeterminado. Los resultados de la consulta se escriben en mydataset.mytable con la marca --destination_table y la marca --replace se usa para reemplazar los datos de mytable. Especifica la marca use_legacy_sql=false para usar la sintaxis de SQL estándar.

Proporciona la marca --location y establece el valor de tu ubicación (opcional).

bq query \
--destination_table mydataset.mytable \
--replace \
--use_legacy_sql=false \
'SELECT
  * EXCEPT(column_two)
FROM
  mydataset.mytable'

API

Para seleccionar todos los datos de mydataset.mytable, excepto column_two, realiza una llamada al método jobs.insert y configura un trabajo de query. Especifica tu ubicación en la propiedad location en la sección jobReference (opcional).

La consulta de SQL que se usa en el trabajo de consulta es la siguiente: SELECT * EXCEPT(column_two) FROM mydataset.mytable.

Para reemplazar los datos de mytable por los resultados de la consulta, incluye mydataset.mytable en la propiedad configuration.query.destinationTable y especifica WRITE_TRUNCATE en la propiedad configuration.query.writeDisposition.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.