Carga datos de exportaciones de Datastore
BigQuery admite la carga de datos de exportaciones de Datastore que se crearon mediante el servicio de importación y exportación administrado de Datastore. Puedes usar el servicio de importación y exportación administrado para exportar entidades de Datastore en un depósito de Cloud Storage. Luego, puedes cargar la exportación en BigQuery como una tabla.
Para obtener información sobre cómo crear un archivo de exportación de Datastore, consulta Importa y exporta entidades en la documentación de Datastore. Para obtener información sobre cómo programar las exportaciones, consulta Programa una exportación.
Puedes controlar qué propiedades debe cargar BigQuery si configuras la propiedad projectionFields
en la API o si usas la marca --projection_fields
en la herramienta de línea de comandos de bq.
Si prefieres omitir el proceso de carga, puedes consultar la exportación configurándola directamente como una fuente de datos externa. Para obtener más información, consulta Fuentes de datos externas.
Cuando cargas datos de Cloud Storage en una tabla de BigQuery, el conjunto de datos que contiene la tabla debe estar en la misma región o multirregión que el bucket de Cloud Storage.
Limitaciones
Cuando cargues datos en BigQuery desde una exportación de Datastore, ten en cuenta las siguientes restricciones:
- No puedes usar un comodín en el URI de Cloud Storage cuando especificas un archivo de exportación de Datastore.
- Puedes especificar solo un URI de Cloud Storage cuando cargas datos de exportaciones de Datastore.
- No se pueden adjuntar datos de exportación de Datastore a una tabla existente con un esquema definido.
- Para que una exportación de Datastore se cargue de forma correcta, las entidades en los datos de exportación deben compartir un esquema coherente con menos de 10,000 nombres de propiedad únicos.
- Los datos que se exportan sin especificar un filtro de entidad no pueden cargarse en BigQuery. La solicitud de exportación debe incluir uno o más nombres de categorías en el filtro de entidad.
- El tamaño máximo de campo para las exportaciones de Datastore es de 64 KB. Cuando cargas una exportación de Datastore, cualquier campo superior a 64 KB se trunca.
Antes de comenzar
Otorga roles de Identity and Access Management (IAM) que les brindan a los usuarios los permisos necesarios para hacer cada tarea de este documento.
Permisos necesarios
Si deseas cargar datos en BigQuery, necesitas permisos de IAM para ejecutar un trabajo de carga y subir datos en tablas y particiones de BigQuery. Si cargas datos desde Cloud Storage, también necesitas permisos de IAM para acceder al bucket que contiene tus datos.
Permisos para cargar datos a BigQuery
Para cargar datos en una tabla o partición de BigQuery nueva o bien agregar o reemplazar una tabla o partición existente, necesitas los siguientes permisos de IAM:
bigquery.tables.create
bigquery.tables.updateData
bigquery.tables.update
bigquery.jobs.create
Cada una de las siguientes funciones predefinidas de IAM incluye los permisos que necesitas para cargar datos en una tabla o partición de BigQuery:
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
(incluye el permisobigquery.jobs.create
)bigquery.user
(incluye el permisobigquery.jobs.create
)bigquery.jobUser
(incluye el permisobigquery.jobs.create
)
Además, si tienes el permiso bigquery.datasets.create
, puedes crear y actualizar tablas con un trabajo de carga en los conjuntos de datos que crees.
Para obtener más información sobre las funciones y los permisos de IAM en BigQuery, consulta Funciones y permisos predefinidos.
Permisos para subir datos desde Cloud Storage
Para obtener los permisos que necesitas para cargar datos desde un bucket de Cloud Storage,
pídele a tu administrador que te otorgue el rol de IAM
Administrador de almacenamiento (roles/storage.admin
) en el bucket.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para cargar datos desde un bucket de Cloud Storage. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Los siguientes permisos son necesarios para cargar datos desde un bucket de Cloud Storage:
-
storage.buckets.get
-
storage.objects.get
-
storage.objects.list (required if you are using a URI wildcard)
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Carga datos del servicio de exportación de Datastore
Para cargar datos desde un archivo de metadatos de exportación de Datastore, haz lo siguiente:
Console
En la consola de Google Cloud, ve a la página de BigQuery.
- En el panel Explorador, expande tu proyecto y, luego, elige un conjunto de datos.
- En la sección Información del conjunto de datos, haz clic en Crear tabla.
- En el panel Crear tabla, especifica los siguientes detalles:
- En la sección Fuente, elige Google Cloud Storage en la lista Crear tabla desde.
A continuación, sigue estos pasos:
- Elige un archivo del bucket de Cloud Storage o escribe el URI de Cloud Storage.
No puedes incluir múltiples URI en la consola de Google Cloud, pero se admiten comodines. El bucket de Cloud Storage debe estar en la misma ubicación que el conjunto de datos que contiene la tabla que deseas crear, agregar o reemplazar.
El URI de tu archivo de exportación de Datastore debe terminar conKIND_NAME.export_metadata
oexport[NUM].export_metadata
. Por ejemplo, endefault_namespace_kind_Book.export_metadata
,Book
es el nombre de la categoría ydefault_namespace_kind_Book
es el nombre de archivo que generó Datastore. - En Formato del archivo, selecciona Copia de seguridad de Cloud Datastore
- Elige un archivo del bucket de Cloud Storage o escribe el URI de Cloud Storage.
No puedes incluir múltiples URI en la consola de Google Cloud, pero se admiten comodines. El bucket de Cloud Storage debe estar en la misma ubicación que el conjunto de datos que contiene la tabla que deseas crear, agregar o reemplazar.
- En la sección Destino, especifica los siguientes detalles:
- En Conjunto de datos, elige el conjunto de datos en el que deseas crear la tabla.
- En el campo Tabla, escribe el nombre de la tabla que deseas crear.
- Verifica que el campo Tipo de tabla esté configurado como Tabla nativa.
- En la sección Esquema, no es necesaria ninguna acción. El esquema se infiere de una exportación de Datastore.
- Opcional: Especifica Configuración de particiones y clústeres. Para obtener más información, consulta Crea tablas particionadas y Crea y usa tablas agrupadas en clústeres.
- Haz clic en Opciones avanzadas y haz lo siguiente:
- En Preferencia de escritura, deja elegido Escribir si está vacía. Con esta opción, se crea una tabla nueva y se cargan los datos en ella.
- Si deseas ignorar los valores de una fila que no están presentes en el esquema de la tabla, elige Valores desconocidos.
- En Encriptación, haz clic en Clave administrada por el cliente para usar una clave de Cloud Key Management Service. Si dejas establecida la configuración del parámetro Clave administrada por Google, BigQuery encripta los datos en reposo. Para obtener más información sobre las opciones disponibles, consulta las opciones de Datastore.
- Haz clic en Crear tabla.
bq
Usa el comando bq load
con source_format
configurado como DATASTORE_BACKUP
.
Proporciona la marca --location
y configura el valor según tu ubicación.
bq --location=LOCATION load \
--source_format=FORMAT \
DATASET.TABLE \
PATH_TO_SOURCE
Reemplaza lo siguiente:
LOCATION
: Es tu ubicación. La marca--location
es opcional. Por ejemplo, si usas BigQuery en la región de Tokio, puedes configurar el valor de la marca comoasia-northeast1
. Puedes configurar un valor predeterminado para la ubicación mediante el archivo .bigqueryrc.FORMAT
:DATASTORE_BACKUP
.DATASET
: Es el conjunto de datos que contiene la tabla en la que deseas cargar los datos.TABLE
: Es la tabla en la que deseas cargar 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 gs://mybucket/20180228T1256/default_namespace/kind_Book/default_namespace_kind_Book.export_metadata
de Datastore en una tabla llamada book_data
.
mybucket
y mydataset
se crearon en la ubicación multirregión 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 los datos de exportación de Datastore con la API.
Crea un trabajo de carga que apunte a los datos de origen en Cloud Storage.
Especifica tu ubicación en la propiedad
location
en la secciónjobReference
del recurso de trabajo.Los URI de origen deben estar completamente calificados en el formato gs://[BUCKET]/[OBJECT]. El nombre del archivo (objeto) debe terminar con
[KIND_NAME].export_metadata
. Solo se permite un URI para las exportaciones de Datastore y no puedes usar un comodín.Para especificar el formato de los datos, establece la propiedad
JobConfigurationLoad.sourceFormat
comoDATASTORE_BACKUP
.
Reemplaza una tabla con datos de Datastore o adjúntalos a una nueva
Cuando cargas datos de exportación de Datastore en BigQuery, puedes crear una tabla nueva para almacenar los datos o puedes reemplazar una existente. No puedes adjuntar datos de exportación de Datastore a una tabla existente.
Si intentas adjuntar datos de exportación de Datastore a una tabla existente, se produce el siguiente error: Cannot append a datastore backup to a table
that already has a schema. Try using the WRITE_TRUNCATE write disposition to
replace the existing table
.
Para reemplazar una tabla existente con datos de exportación de Datastore, haz lo siguiente:
Console
En la consola de Google Cloud, ve a la página de BigQuery.
- En el panel Explorador, expande tu proyecto y, luego, elige un conjunto de datos.
- En la sección Información del conjunto de datos, haz clic en Crear tabla.
- En el panel Crear tabla, especifica los siguientes detalles:
- En la sección Fuente, elige Google Cloud Storage en la lista Crear tabla desde.
A continuación, sigue estos pasos:
- Elige un archivo del bucket de Cloud Storage o escribe el URI de Cloud Storage.
No puedes incluir múltiples URI en la consola de Google Cloud, pero se admiten comodines. El bucket de Cloud Storage debe estar en la misma ubicación que el conjunto de datos que contiene la tabla que deseas crear, agregar o reemplazar.
El URI de tu archivo de exportación de Datastore debe terminar conKIND_NAME.export_metadata
oexport[NUM].export_metadata
. Por ejemplo, endefault_namespace_kind_Book.export_metadata
,Book
es el nombre de la categoría ydefault_namespace_kind_Book
es el nombre de archivo que generó Datastore. - En Formato del archivo, selecciona Copia de seguridad de Cloud Datastore
- Elige un archivo del bucket de Cloud Storage o escribe el URI de Cloud Storage.
No puedes incluir múltiples URI en la consola de Google Cloud, pero se admiten comodines. El bucket de Cloud Storage debe estar en la misma ubicación que el conjunto de datos que contiene la tabla que deseas crear, agregar o reemplazar.
- En la sección Destino, especifica los siguientes detalles:
- En Conjunto de datos, elige el conjunto de datos en el que deseas crear la tabla.
- En el campo Tabla, escribe el nombre de la tabla que deseas crear.
- Verifica que el campo Tipo de tabla esté configurado como Tabla nativa.
- En la sección Esquema, no es necesaria ninguna acción. El esquema se infiere de una exportación de Datastore.
- Opcional: Especifica Configuración de particiones y clústeres. Para obtener más información, consulta Crea tablas particionadas y Crea y usa tablas agrupadas en clústeres. No puedes agregar datos a una tabla ni reemplazarla para convertirla en una tabla particionada o agrupada en clústeres. La consola de Google Cloud no admite agregar datos a tablas particionadas o agrupadas en clústeres ni reemplazarlas en un trabajo de carga.
- Haz clic en Opciones avanzadas y haz lo siguiente:
- En Preferencia de escritura, elige Agregar a la tabla o Reemplazar tabla.
- Si deseas ignorar los valores de una fila que no están presentes en el esquema de la tabla, elige Valores desconocidos.
- En Encriptación, haz clic en Clave administrada por el cliente para usar una clave de Cloud Key Management Service. Si dejas establecida la configuración del parámetro Clave administrada por Google, BigQuery encripta los datos en reposo. Para obtener más información sobre las opciones disponibles, consulta las opciones de Datastore.
- Haz clic en Crear tabla.
bq
Usa el comando bq load
con la marca --replace
y con source_format
configurado como DATASTORE_BACKUP
. Proporciona la marca --location
y configura el valor según tu ubicación.
bq --location=LOCATION load \
--source_format=FORMAT \
--replace \
DATASET.TABLE \
PATH_TO_SOURCE
Reemplaza lo siguiente:
LOCATION
: Es tu ubicación. La marca--location
es opcional. Por ejemplo, si usas BigQuery en la región de Tokio, puedes configurar el valor de la marca comoasia-northeast1
. Puedes configurar un valor predeterminado para la ubicación mediante el archivo .bigqueryrc.FORMAT
:DATASTORE_BACKUP
.DATASET
: Es el conjunto de datos que contiene la tabla en la que deseas cargar los datos.TABLE
: Es la tabla que deseas reemplazar.PATH_TO_SOURCE
: Es el URI de Cloud Storage.
Por ejemplo, el siguiente comando carga el archivo de exportación gs://mybucket/20180228T1256/default_namespace/kind_Book/default_namespace_kind_Book.export_metadata
de Datastore y reemplaza una tabla llamada book_data
:
bq load --source_format=DATASTORE_BACKUP \
--replace \
mydataset.book_data \
gs://mybucket/20180228T1256/default_namespace/kind_Book/default_namespace_kind_Book.export_metadata
API
Configura las siguientes propiedades para cargar datos desde la API.
Crea un trabajo de carga que apunte a los datos de origen en Cloud Storage.
Especifica tu ubicación en la propiedad
location
en la secciónjobReference
del recurso de trabajo.Los URI de origen deben estar completamente calificados en el formato gs://[BUCKET]/[OBJECT]. El nombre del archivo (objeto) debe terminar con
[KIND_NAME].export_metadata
. Solo se permite un URI para las exportaciones de Datastore y no puedes usar un comodín.Para especificar el formato de los datos, establece la propiedad
JobConfigurationLoad.sourceFormat
comoDATASTORE_BACKUP
.Configura la propiedad
JobConfigurationLoad.writeDisposition
comoWRITE_TRUNCATE
para especificar la disposición de escritura.
Opciones de Datastore
Para cambiar la forma en la que BigQuery analiza los datos de exportación de Datastore, especifica la siguiente opción:
Opción de Console | Marca de la herramienta de bq | Propiedad de la API de BigQuery | Descripción |
---|---|---|---|
No disponible | --projection_fields |
projectionFields | Una lista separada por comas en la que se indica qué propiedades de la entidad se cargan en BigQuery desde una exportación de Datastore. Los nombres de propiedades distinguen entre mayúsculas y minúsculas, y deben ser propiedades de nivel superior. Si no se especifican propiedades, BigQuery carga todas las propiedades. Si alguna de las propiedades nombradas no se encuentra en la exportación de Datastore, se muestra un error no válido en el resultado del trabajo. El valor predeterminado es ''. |
Conversión de tipo de datos
BigQuery convierte los datos de cada entidad en los archivos de exportación de Datastore en tipos de datos de BigQuery. La siguiente tabla describe la conversión entre tipos de datos.
Tipo de datos de Datastore | Tipo de datos de BigQuery |
---|---|
Array | ARRAY |
BLOB | BYTES |
Booleano | BOOLEAN |
Fecha y hora | TIMESTAMP |
Entidad incorporada | RECORD |
Número de punto flotante | FLOAT |
Punto geográfico |
[{"lat","DOUBLE"}, {"long","DOUBLE"}] |
Número entero | INTEGER |
Clave | RECORD |
Null | STRING |
String de texto | STRING (truncado a 64 KB) |
Propiedades de la clave de Datastore
Cada entidad en Datastore tiene una clave única que contiene información como el espacio de nombres y la ruta de acceso. BigQuery crea un tipo de dato RECORD
para la clave, con campos anidados para cada tipo de información, como se describe en la siguiente tabla.
Propiedad clave | Descripción | Tipo de datos de BigQuery |
---|---|---|
__key__.app |
El nombre de la app de Datastore | STRING |
__key__.id |
El ID de la entidad o null si se configura __key__.name |
INTEGER |
__key__.kind |
La categoría de la entidad. | STRING |
__key__.name |
El nombre de la entidad o null si se configura __key__.id |
STRING |
__key__.namespace |
Si la app de Datastore usa un espacio de nombres personalizado, debe ser el espacio de nombres de la entidad. De lo contrario, el espacio de nombres predeterminado estará representado por una string vacía | STRING |
__key__.path |
La ruta ancestral de la entidad acoplada, consiste en una secuencia de pares de identificadores de categoría desde la entidad raíz hasta la entidad misma. Por ejemplo: "Country", "USA", "PostalCode",
10011, "Route", 1234 |
STRING |