Carga datos de exportaciones de Cloud Firestore

Google BigQuery admite la carga de datos de las exportaciones de Cloud Firestore creadas mediante el servicio de importación y exportación administrado de Cloud Firestore. El servicio de importación y exportación administrado exporta documentos de Cloud Firestore a un depósito de Cloud Storage. Puedes cargar los datos exportados en una tabla de BigQuery.

Permisos necesarios

Cuando cargas datos en BigQuery, necesitas permisos de proyecto o de nivel de conjunto de datos que te permitan cargar datos en tablas y particiones de BigQuery nuevas o existentes. Si cargas datos desde Cloud Storage, también necesitas acceso al depósito que contiene tus datos.

Permisos de BigQuery

Cuando cargas datos en BigQuery desde Cloud Storage, se te debe otorgar la función bigquery.dataOwner o bigquery.dataEditor a nivel de proyecto o a nivel de conjunto de datos. Ambas funciones otorgan a los usuarios y grupos el permiso para cargar datos en una tabla nueva, agregar o reemplazar una tabla existente.

Otorgar las funciones a nivel de proyecto le da al usuario o al grupo permiso para cargar datos en tablas en cada conjunto de datos del proyecto. Otorgar las funciones a nivel de conjunto de datos le da al usuario o al grupo la capacidad para cargar datos solo en las tablas de ese conjunto de datos.

Para obtener más información sobre cómo configurar el acceso al conjunto de datos, consulta Control de acceso al conjunto de datos. Para obtener más información sobre las funciones de IAM en BigQuery, consulta Control de acceso.

Permisos de Cloud Storage

Para cargar datos desde un depósito de Cloud Storage, se te deben otorgar permisos de storage.objects.get en el nivel del proyecto o en ese depósito individual. Si usas un comodín de URI, también debes tener permisos storage.objects.list.

La función de IAM predefinida storage.objectViewer se puede otorgar para proporcionar permisos storage.objects.get y storage.objects.list.

Limitaciones

Cuando cargues datos en BigQuery desde una exportación de Cloud Firestore, ten en cuenta las siguientes restricciones:

  • Tu conjunto de datos debe estar en la misma ubicación regional o multirregional que el depósito de Cloud Storage que contiene tus archivos de exportación.
  • Puedes especificar solo un URI de Cloud Storage y no puedes usar un comodín URI.
  • Para que una exportación de Cloud Firestore se cargue correctamente, los documentos en los datos de exportación deben compartir un esquema coherente con menos de 10,000 nombres de campo único.
  • Puedes crear una tabla nueva para almacenar los datos o puedes reemplazar una tabla existente. No puedes agregar datos de exportación de Cloud Firestore a una tabla existente.
  • Tu comando de exportación debe especificar un filtro collection-ids. Los datos exportados sin especificar un filtro de ID de colección no se pueden cargar en BigQuery.

Carga datos del servicio de exportación de Cloud Firestore

Puedes cargar datos desde un archivo de metadatos de exportación de Cloud Firestore con la IU web de BigQuery, la herramienta de línea de comandos bq o la API.

En ocasiones, la terminología de Cloud Datastore se usa en la IU o en los comandos, pero los siguientes procedimientos son compatibles con los archivos de exportación de Cloud Firestore. Cloud Firestore y Cloud Datastore comparten un formato de exportación.

Console

  1. Abre la IU web de BigQuery en GCP Console.
    Ir a la IU web de BigQuery
  2. En el panel de navegación, en la sección Recursos, expande tu proyecto y selecciona un conjunto de datos. Haz clic en Create table (Crear tabla). El proceso de carga de datos es el mismo que el proceso para crear una tabla vacía. Crear tabla
  3. En la página Create table (Crear tabla), en la sección Source (Origen), realiza lo siguiente:

    • En Create table from (Crear una tabla desde), selecciona Cloud Storage Crear origen de tabla.

    • En el campo de origen, ingresa el URI de Cloud Storage. El depósito de Cloud Storage debe estar en la misma ubicación que tu conjunto de datos. El URI para tu archivo de exportación de Cloud Firestore debe terminar con [KIND_COLLECTION_ID].export_metadata. Por ejemplo: default_namespace_kind_Book.export_metadata. En este ejemplo, Book es el ID de colección y default_namespace_kind_Book es el nombre del archivo que generó Cloud Firestore.

      Verifica que [KIND_COLLECTION_ID] esté especificado en tu URI de Cloud Storage. Si especificas el URI sin [KIND_COLLECTION_ID], recibirás el siguiente error: does not contain valid backup metadata. (error code: invalid).

    • Para el Formato de archivo, selecciona Copia de seguridad de Cloud Datastore. La copia de seguridad de Cloud Datastore es la opción correcta para Cloud Firestore. Cloud Firestore y Cloud Datastore comparten un formato de exportación.

  4. En la página Crear tabla, en la sección Destination (Destino), realiza lo siguiente:

    • En Dataset name (Nombre del conjunto de datos), selecciona el conjunto de datos que corresponda.

      Seleccionar conjunto de datos

    • En el campo Table name (Nombre de tabla), ingresa el nombre de la tabla que creas en BigQuery.

    • Verifica que Table type (Tipo de tabla) esté configurado como Native table (Tabla nativa).

  5. En la sección Esquema no es necesaria ninguna acción. El esquema se infiere para una exportación de Cloud Firestore.

  6. Selecciona los elementos aplicables en la sección Advanced options (Opciones avanzadas). Si reemplazas una tabla existente, establece Write preference (Preferencia de escritura) en Overwrite table (Reemplazar tabla). Reemplazar tabla

  7. Haz clic en Create table (Crear tabla).

IU clásica

  1. Dirígete a la IU web clásica de BigQuery.
    Ir a la IU web de BigQuery
  2. En el panel de navegación, desplaza el cursor sobre un conjunto de datos, haz clic en el ícono de flecha hacia abajo imagen del ícono de flecha hacia abajo y, luego, haz clic en Crear tabla nueva.
  3. En la página Create table (Crear tabla), en la sección Datos de origen, realiza lo siguiente:

    • Deja seleccionada la opción Crear desde la fuente.
    • En Ubicación, selecciona Cloud Storage y en el campo de origen, ingresa el URI de Cloud Storage. El depósito de Cloud Storage debe estar en la misma ubicación que tu conjunto de datos. El URI para tu archivo de exportación de Cloud Firestore debe terminar con [KIND_COLLECTION_ID].export_metadata. Por ejemplo: default_namespace_kind_Book.export_metadata. En este ejemplo, Book es el ID de colección y default_namespace_kind_Book es el nombre del archivo que generó Cloud Firestore.

      Verifica que [KIND_COLLECTION_ID] esté especificado en tu URI de Cloud Storage. Si especificas el URI sin [KIND_COLLECTION_ID], recibirás el siguiente error: does not contain valid backup metadata. (error code: invalid).

    • Para el Formato de archivo, selecciona Copia de seguridad de Cloud Datastore. La copia de seguridad de Cloud Datastore es la opción correcta para Cloud Firestore. Cloud Firestore y Cloud Datastore comparten un formato de exportación.

  4. En la página Crear tabla, en la sección Tabla de destino:

    • En Table name (Nombre de tabla), selecciona el conjunto de datos apropiado y, en el campo de nombre de tabla, ingresa el nombre de la tabla que vas a crear en BigQuery.
    • Verifica que Table type (Tipo de tabla) esté configurado como Native table (Tabla nativa).
  5. En la sección Esquema no es necesaria ninguna acción. El esquema se infiere para una exportación de Cloud Firestore.

  6. Selecciona los elementos aplicables en la sección Opciones. Si reemplazas una tabla existente, establece Write preference (Preferencia de escritura) en Overwrite table (Reemplazar tabla).

  7. Haz clic en Crear tabla.

Línea de comandos

Usa el comando bq load con source_format configurado en DATASTORE_BACKUP. Proporciona la marca --location y establece el valor para tu ubicación. Si reemplazas una tabla existente, agrega la marca --replace.

Para cargar solo campos específicos, usa el indicador --projection_fields.

bq --location=[LOCATION] load --source_format=[FORMAT] [DATASET].[TABLE] [PATH_TO_SOURCE]

Donde:

  • [LOCATION] es tu ubicación. La marca --location es opcional.
  • [FORMAT] es DATASTORE_BACKUP. La copia de seguridad de Cloud Datastore es la opción correcta para Cloud Firestore. Cloud Firestore y Cloud Datastore comparten un formato de exportación.
  • [DATASET] es el conjunto de datos que contiene la tabla en la que cargas datos.
  • [TABLE] es la tabla en la que cargas los datos. Si la tabla no existe, se creará.
  • [PATH_TO_SOURCE] es el URI de Cloud Storage.

Por ejemplo, el siguiente comando carga el archivo de exportación de Cloud Firestore gs://mybucket/20180228T1256/default_namespace/kind_Book/default_namespace_kind_Book.export_metadata en una tabla llamada book_data. mybucket y mydataset se crearon en la ubicación de varias regiones de US.

bq --location=US load --source_format=DATASTORE_BACKUP mydataset.book_data gs://mybucket/20180228T1256/default_namespace/kind_Book/default_namespace_kind_Book.export_metadata

API

Configura las siguientes propiedades para cargar datos de exportación de Cloud Firestore con la API.

  1. Crea una configuración de trabajo de carga que indique los datos de origen en Cloud Storage.

  2. Especifica tu ubicación en la propiedad location en la sección jobReference del recurso de trabajo.

  3. Los sourceUris deben estar completos, en formato gs: //[BUCKET]/[OBJECT] en la configuración de trabajo de carga. El nombre del archivo (objeto) debe terminar en [KIND_NAME].export_metadata. Solo se permite un URI para las exportaciones de Cloud Firestore y no puedes usar un comodín.

  4. Para especificar el formato de datos, establece la propiedad sourceFormat en DATASTORE_BACKUP en la configuración de trabajo de carga. La copia de seguridad de Cloud Datastore es la opción correcta para Cloud Firestore. Cloud Firestore y Cloud Datastore comparten un formato de exportación.

  5. Para cargar solo campos específicos, establece la propiedad projectionFields.

  6. Si reemplazas una tabla existente, especifica la disposición de escritura mediante la configuración de la propiedad writeDisposition en WRITE_TRUNCATE.

Opciones de Cloud Firestore

Para cambiar la forma en que BigQuery analiza los datos de exportación de Cloud Firestore, especifica las siguientes opciones:

Opción CSV Opción de la IU clásica Marcador CLI Propiedad de la API de BigQuery Descripción
Campos de proyección Ninguna --projection_fields projectionFields Una lista separada por comas que indica qué campos de documento se deben cargar desde una exportación de Cloud Firestore (opcional). BigQuery carga todos los campos de manera predeterminada. Los nombres de los campos distinguen entre mayúsculas y minúsculas y deben estar presentes en la exportación. No puedes especificar rutas de campo dentro de un campo de mapa como map.foo.
Cantidad de registros incorrectos permitidos Cantidad de errores permitidos --max_bad_records maxBadRecords (Opcional) El número máximo de registros erróneos que BigQuery puede ignorar cuando ejecuta el trabajo. Si el número de registros incorrectos excede este valor, se muestra un error no válido en el resultado del trabajo. El valor predeterminado es 0, por lo que es obligatorio que todos los registros sean válidos.

Conversión de tipo de datos

BigQuery convierte los datos de cada documento en los archivos de exportación de Cloud Firestore a los tipos de datos de BigQuery. La siguiente tabla describe la conversión entre tipos de datos.

Tipos de datos de Cloud Firestore Tipos de datos de BigQuery
Arreglo REGISTRO
Booleano BOOLEANO
Referencia REGISTRO
Fecha y hora MARCA DE TIEMPO
Mapa REGISTRO
Número de punto flotante FLOTANTE
Punto geográfico

REGISTRO


[{"lat","FLOAT"},
 {"long","FLOAT"}]
        
Número entero NÚMERO ENTERO
String STRING (truncado a 64 KB)

Propiedades clave de Firestore

Cada documento en Cloud Firestore tiene una clave única que contiene información como el ID del documento y la ruta del documento. BigQuery crea un tipo de datos RECORD (también conocido como STRUCT) de la clave, con campos anidados para cada tipo de información, como se describe en la siguiente tabla.

Propiedad clave Descripción Tipos de datos de BigQuery
__key__.app El nombre de la aplicación de Cloud Firestore. STRING
__key__.id El ID del documento o null, si se configura __key__.name. NÚMERO ENTERO
__key__.kind El ID de la colección del documento. STRING
__key__.name El nombre del documento o null, si se configura __key__.id. STRING
__key__.namespace Cloud Firestore no admite espacios de nombres personalizados. El espacio de nombres predeterminado se presenta mediante una string vacía. STRING
__key__.path La ruta del documento: la secuencia del documento y los pares de colección de la colección raíz. Por ejemplo: "Country", "USA", "PostalCode", 10011, "Route", 1234. STRING
¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.