Caricamento dei dati dalle esportazioni di Firestore
BigQuery supporta il caricamento dei dati dalle esportazioni di Firestore create utilizzando il servizio di importazione ed esportazione gestito di Firestore. Il servizio di importazione ed esportazione gestito esporta i documenti Firestore in un bucket Cloud Storage. Puoi quindi caricare i dati esportati in una tabella BigQuery.
Limitazioni
Quando carichi i dati in BigQuery da un'esportazione di Firestore, tieni presente le seguenti limitazioni:
- Il set di dati deve trovarsi nella stessa posizione del bucket Cloud Storage contenente i file di esportazione.
- Puoi specificare un solo URI Cloud Storage e non puoi utilizzare un carattere jolly URI.
- Perché un'esportazione di Firestore venga caricata correttamente, i documenti nei dati di esportazione devono condividere uno schema coerente con meno di 10.000 nomi di campi univoci.
- Puoi creare una nuova tabella per archiviare i dati oppure sovrascrivere una tabella esistente. Non puoi aggiungere i dati di esportazione di Firestore a una tabella esistente.
- Il comando di esportazione
deve specificare un filtro
collection-ids
. I dati esportati senza specificare un filtro dell'ID raccolta non possono essere caricati in BigQuery.
Prima di iniziare
Concedi ruoli IAM (Identity and Access Management) che forniscono agli utenti le autorizzazioni necessarie per eseguire ogni attività descritta in questo documento.
Autorizzazioni obbligatorie
Per caricare i dati in BigQuery, devi disporre delle autorizzazioni IAM per eseguire un job di caricamento e caricare i dati in tabelle e partizioni BigQuery. Se carichi i dati da Cloud Storage, devi disporre anche delle autorizzazioni IAM per accedere al bucket che contiene i tuoi dati.
Autorizzazioni per caricare dati in BigQuery
Per caricare i dati in una nuova tabella o partizione BigQuery oppure per aggiungere o sovrascrivere una tabella o partizione esistente, devi disporre delle seguenti autorizzazioni IAM:
bigquery.tables.create
bigquery.tables.updateData
bigquery.tables.update
bigquery.jobs.create
Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per caricare i dati in una tabella o partizione BigQuery:
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
(include l'autorizzazionebigquery.jobs.create
)bigquery.user
(include l'autorizzazionebigquery.jobs.create
)bigquery.jobUser
(include l'autorizzazionebigquery.jobs.create
)
Inoltre, se disponi dell'autorizzazione bigquery.datasets.create
, puoi creare e aggiornare tabelle utilizzando un job di caricamento nei set di dati che crei.
Per saperne di più sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.
Autorizzazioni per caricare i dati da Cloud Storage
Per ottenere le autorizzazioni necessarie per caricare i dati da un bucket Cloud Storage, chiedi all'amministratore di concederti il ruolo IAM Amministratore archiviazione (roles/storage.admin
) nel bucket.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per caricare i dati da un bucket Cloud Storage. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per caricare i dati da un bucket Cloud Storage sono necessarie le seguenti autorizzazioni:
-
storage.buckets.get
-
storage.objects.get
-
storage.objects.list (required if you are using a URI wildcard)
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Caricamento dei dati del servizio di esportazione Firestore
Puoi caricare i dati da un file di metadati di esportazione di Firestore utilizzando la Google Cloud console, lo strumento a riga di comando bq o l'API.
A volte la terminologia Datastore viene utilizzata nella console Google Cloud e nello strumento a riga di comando bq, ma le seguenti procedure sono compatibili con i file di esportazione di Firestore. Firestore e Datastore condividono un formato di esportazione.
Console
Nella console Google Cloud , vai alla pagina BigQuery.
- Nel riquadro Explorer, espandi il progetto e seleziona un set di dati.
- Nella sezione Informazioni sul set di dati, fai clic su Crea tabella.
- Nel riquadro Crea tabella, specifica i seguenti dettagli:
- Nella sezione Origine, seleziona Google Cloud Storage nell'elenco Crea tabella da.
Poi, procedi nel seguente modo:
- Seleziona un file dal bucket Cloud Storage o inserisci l'URI Cloud Storage.
Non puoi includere più URI
nella Google Cloud console, ma i caratteri jolly
sono supportati. Il bucket Cloud Storage deve trovarsi nella stessa
posizione del set di dati che contiene la tabella che vuoi creare, aggiungere o
sovrascrivere.
L'URI del file di esportazione di Firestore deve terminare conKIND_COLLECTION_ID.export_metadata
. Ad esempio, indefault_namespace_kind_Book.export_metadata
,Book
è l'ID raccolta edefault_namespace_kind_Book
è il nome file generato da Firestore. Se l'URI non termina conKIND_COLLECTION_ID.export_metadata
, ricevi il seguente messaggio di errore: non contiene metadati di backup validi. (codice di errore: non valido). - Per Formato file, seleziona Backup di Cloud Datastore. Firestore e Datastore condividono il formato di esportazione.
- Seleziona un file dal bucket Cloud Storage o inserisci l'URI Cloud Storage.
Non puoi includere più URI
nella Google Cloud console, ma i caratteri jolly
sono supportati. Il bucket Cloud Storage deve trovarsi nella stessa
posizione del set di dati che contiene la tabella che vuoi creare, aggiungere o
sovrascrivere.
- Nella sezione Destinazione, specifica i seguenti dettagli:
- Per Set di dati, seleziona il set di dati in cui vuoi creare la tabella.
- Nel campo Table (Tabella), inserisci il nome della tabella che vuoi creare.
- Verifica che il campo Tipo di tabella sia impostato su Tabella nativa.
- Nella sezione Schema, non è necessaria alcuna azione. Lo schema viene dedotto per un'esportazione di Firestore.
- (Facoltativo) Specifica le impostazioni di partizionamento e clustering. Per ulteriori informazioni, vedi Creazione di tabelle partizionate e Creazione e utilizzo di tabelle in cluster.
- Fai clic su Opzioni avanzate e segui questi passaggi:
- In Preferenza di scrittura, lascia selezionata l'opzione Scrivi se vuota. Questa opzione crea una nuova tabella e carica i dati al suo interno.
- Se vuoi ignorare i valori di una riga che non sono presenti nello schema della tabella, seleziona Valori sconosciuti.
- Per la crittografia, fai clic su Chiave gestita dal cliente per utilizzare una chiave Cloud Key Management Service. Se lasci l'impostazione Google-managed key, BigQuery cripta i dati at rest.
- Fai clic su Crea tabella.
bq
Utilizza il comando bq load
con source_format
impostato su DATASTORE_BACKUP
.
Fornisci il flag --location
e imposta il valore sulla tua
posizione. Se stai sovrascrivendo
una tabella esistente, aggiungi il flag --replace
.
Per caricare solo campi specifici, utilizza il flag --projection_fields.
bq --location=LOCATION load \
--source_format=FORMAT \
DATASET.TABLE \
PATH_TO_SOURCE
Sostituisci quanto segue:
LOCATION
: la tua posizione. Il flag--location
è facoltativo.FORMAT
:DATASTORE_BACKUP
. Datastore Backup è l'opzione corretta per Firestore. Firestore e Datastore condividono un formato di esportazione.DATASET
: il set di dati che contiene la tabella in cui stai caricando i dati.TABLE
: la tabella in cui carichi i dati. Se la tabella non esiste, viene creata.PATH_TO_SOURCE
: l'URI Cloud Storage.
Ad esempio, il seguente comando carica il
gs://mybucket/20180228T1256/default_namespace/kind_Book/default_namespace_kind_Book.export_metadata
file di esportazione Firestore in una tabella denominata book_data
.
mybucket
e mydataset
sono stati creati nella località multiregionale 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
Imposta le seguenti proprietà per caricare i dati di esportazione di Firestore utilizzando l'API.
Crea una configurazione del job
load
che rimandi ai dati di origine in Cloud Storage.Specifica la località nella proprietà
location
della sezionejobReference
della risorsa di lavoro.sourceUris
deve essere completo, nel formatogs://BUCKET/OBJECT
nella configurazione del job di caricamento. Il nome del file (oggetto) deve terminare conKIND_NAME.export_metadata
. È consentito un solo URI per le esportazioni di Firestore e non puoi utilizzare un carattere jolly.Specifica il formato dei dati impostando la proprietà
sourceFormat
suDATASTORE_BACKUP
nella configurazione del job di caricamento. Datastore Backup è l'opzione corretta per Firestore. Firestore e Datastore condividono un formato di esportazione.Per caricare solo campi specifici, imposta la proprietà
projectionFields
.Se stai sovrascrivendo una tabella esistente, specifica la disposizione di scrittura impostando la proprietà
writeDisposition
suWRITE_TRUNCATE
.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Opzioni di Firestore
Per modificare il modo in cui BigQuery analizza i dati di esportazione di Firestore, specifica la seguente opzione:
Google Cloud opzione della console | Flag `bq` | Proprietà API BigQuery | Descrizione |
---|---|---|---|
Non disponibile | --projection_fields |
projectionFields
(Java,
Python) |
(Facoltativo) Un elenco separato da virgole che indica quali campi del documento
caricare da un'esportazione Firestore. Per impostazione predefinita,
BigQuery carica tutti i campi. I nomi dei campi sono
sensibili alle maiuscole e devono essere presenti nell'esportazione. Non puoi specificare i percorsi dei campi all'interno di un campo mappa, ad esempio map.foo .
|
Conversione del tipo di dati
BigQuery converte i dati di ogni documento nei file di esportazione Firestore nei tipi di dati BigQuery. La tabella seguente descrive la conversione tra i tipi di dati supportati.
Tipo di dati Firestore | Tipo di dati BigQuery |
---|---|
Array | RECORD |
Booleano | BOOLEANO |
Riferimento | RECORD |
Data e ora | TIMESTAMP |
Mappa | RECORD |
Numero in virgola mobile | FLOAT |
Punto geografico |
RECORD [{"lat","FLOAT"}, {"long","FLOAT"}] |
Numero intero | INTEGER |
Stringa | STRINGA (troncata a 64 KB) |
Proprietà chiave di Firestore
Ogni documento in Firestore ha una chiave univoca che contiene
informazioni come l'ID documento e il percorso del documento.
BigQuery crea un tipo di dati RECORD
(noto anche come
STRUCT
)
per la chiave, con campi nidificati per ogni informazione, come descritto nella
tabella seguente.
Proprietà della chiave | Descrizione | Tipo di dati BigQuery |
---|---|---|
__key__.app |
Il nome dell'app Firestore. | STRING |
__key__.id |
L'ID del documento o null se __key__.name
è impostato. |
INTEGER |
__key__.kind |
L'ID raccolta del documento. | STRING |
__key__.name |
Il nome del documento o null se __key__.id
è impostato. |
STRING |
__key__.namespace |
Firestore non supporta gli spazi dei nomi personalizzati. Lo spazio dei nomi predefinito è rappresentato da una stringa vuota. | STRING |
__key__.path |
Il percorso del documento: la sequenza di coppie di documenti e
raccolte dalla raccolta principale. Ad esempio: "Country",
"USA", "PostalCode", 10011, "Route", 1234 . |
STRING |