Creare una visualizzazione autorizzata


BigQuery è un data warehouse di analisi su scala petabyte da utilizzare per eseguire query SQL su grandi quantità di dati quasi in tempo reale.

L'autorizzazione dell'accesso in visualizzazione a un set di dati è nota anche come creazione di una vista autorizzata in BigQuery. Una visualizzazione autorizzata ti consente di condividere i risultati delle query con utenti e gruppi specifici senza concedere loro l'accesso alle tabelle sottostanti. Puoi anche utilizzare la query SQL della vista per limitare le colonne (campi) su cui gli utenti possono eseguire query. In questo tutorial imparerai a creare una vista autorizzata.

Obiettivi

Questo tutorial ti mostra come completare le attività seguenti:

  • Creare set di dati e applicarvi i controlli di accesso
  • Assegnare i controlli dell'accesso al progetto
  • Creare una vista autorizzata che limiti i dati su cui gli utenti possono eseguire query

Costi

BigQuery è un prodotto a pagamento e questo tutorial comporta l'utilizzo di BigQuery. BigQuery offre alcune risorse gratuitamente entro limiti specifici. Per ulteriori informazioni, consulta Operazioni gratuite e livello gratuito di BigQuery.

Prima di iniziare

Prima di iniziare questo tutorial, utilizza la console Google Cloud per creare o selezionare un progetto.

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  4. BigQuery viene abilitato automaticamente nei nuovi progetti. Per attivare BigQuery in un progetto preesistente, vai a

    Attiva l'API BigQuery.

    Abilita l'API

  5. (Facoltativo) Abilita la fatturazione per il progetto. Se non vuoi abilitare la fatturazione o fornire una carta di credito, i passaggi descritti in questo documento continueranno a funzionare. BigQuery fornisce una sandbox per eseguire i passaggi. Per maggiori informazioni, consulta Attivare la sandbox di BigQuery.

Crea un set di dati di origine

Per iniziare, crea un set di dati per archiviare i dati di origine. Per questo tutorial, compilerai una tabella nel set di dati di origine eseguendo una query sul set di dati pubblico GitHub. I dati nel set di dati di origine contengono informazioni che non vuoi che i tuoi analisti di dati visualizzino. Puoi limitare l'accesso ai dati utilizzando una vista autorizzata.

Per creare il set di dati di origine:

Console

  1. Nella console Google Cloud, apri la pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, seleziona il progetto in cui vuoi creare il set di dati.

  3. Espandi l'opzione Azioni e fai clic su Crea set di dati.

  4. In ID set di dati, inserisci github_source_data.

  5. Lascia invariate le altre impostazioni predefinite e fai clic su Crea set di dati.

SQL

Utilizza l'istruzione DDL CREATE SCHEMA:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'Editor query, inserisci la seguente istruzione:

    CREATE SCHEMA github_source_data;
    

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

// Create a source dataset to store your table.
Dataset sourceDataset = bigquery.create(DatasetInfo.of(sourceDatasetId));

Python

Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

from google.cloud import bigquery

client = bigquery.Client()
source_dataset_id = "github_source_data"
source_dataset_id_full = "{}.{}".format(client.project, source_dataset_id)

source_dataset = bigquery.Dataset(source_dataset_id_full)
# Specify the geographic location where the dataset should reside.
source_dataset.location = "US"
source_dataset = client.create_dataset(source_dataset)  # API request

Dopo aver creato il set di dati di origine, devi completare una tabella al suo interno utilizzando una query SQL. Questa query recupera i dati dal set di dati pubblico GitHub.

Console

  1. Nella console Google Cloud, apri la pagina BigQuery.

    Vai a BigQuery

  2. Copia e incolla la seguente query nel riquadro Editor.

    SELECT
      commit,
      author,
      committer,
      repo_name
    FROM
      `bigquery-public-data.github_repos.commits`
    LIMIT
      1000;
    
  3. Fai clic su Altro e seleziona Impostazioni query.

  4. Per Destinazione, seleziona Imposta una tabella di destinazione per i risultati delle query.

  5. In Set di dati, inserisci PROJECT_ID.github_source_data. Sostituisci PROJECT_ID con l'ID progetto.

  6. In ID tabella, inserisci github_contributors.

  7. Fai clic su Salva.

  8. Fai clic su Esegui.

  9. Al completamento della query, fai clic su github_contributors, quindi su github_contributors per verificare che i dati siano stati scritti nella tabella.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

// Populate a source table
String tableQuery =
    "SELECT commit, author, committer, repo_name"
        + " FROM `bigquery-public-data.github_repos.commits`"
        + " LIMIT 1000";
QueryJobConfiguration queryConfig =
    QueryJobConfiguration.newBuilder(tableQuery)
        .setDestinationTable(TableId.of(sourceDatasetId, sourceTableId))
        .build();
bigquery.query(queryConfig);

Python

Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

source_table_id = "github_contributors"
job_config = bigquery.QueryJobConfig()
job_config.destination = source_dataset.table(source_table_id)
sql = """
    SELECT commit, author, committer, repo_name
    FROM `bigquery-public-data.github_repos.commits`
    LIMIT 1000
"""
query_job = client.query(
    sql,
    # Location must match that of the dataset(s) referenced in the query
    # and of the destination table.
    location="US",
    job_config=job_config,
)  # API request - starts the query

query_job.result()  # Waits for the query to finish

Crea un set di dati in cui archiviare la visualizzazione

Dopo aver creato il set di dati di origine, crei un nuovo set di dati separato per archiviare la vista autorizzata che condividi con i tuoi analisti di dati. In un passaggio successivo, concederai alla visualizzazione autorizzata l'accesso ai dati nel set di dati di origine. Gli analisti di dati avranno quindi accesso alla vista autorizzata, ma non accesso diretto ai dati di origine.

Le viste autorizzate devono essere create in un set di dati diverso dai dati di origine. In questo modo, i proprietari dei dati possono concedere agli utenti l'accesso alla vista autorizzata senza concedere contemporaneamente l'accesso ai dati sottostanti. Il set di dati dei dati di origine e il set di dati della vista autorizzata devono trovarsi nella stessa località a livello di regione.

Per creare un set di dati in cui archiviare la vista:

Console

  1. Nella console Google Cloud, apri la pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, seleziona il progetto in cui vuoi creare il set di dati.

  3. Espandi l'opzione Azioni e fai clic su Crea set di dati.

  4. In ID set di dati, inserisci shared_views.

  5. Lascia invariate le altre impostazioni predefinite e fai clic su Crea set di dati.

SQL

Utilizza l'istruzione DDL CREATE SCHEMA:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'Editor query, inserisci la seguente istruzione:

    CREATE SCHEMA shared_views;
    

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

// Create a separate dataset to store your view
Dataset sharedDataset = bigquery.create(DatasetInfo.of(sharedDatasetId));

Python

Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

shared_dataset_id = "shared_views"
shared_dataset_id_full = "{}.{}".format(client.project, shared_dataset_id)

shared_dataset = bigquery.Dataset(shared_dataset_id_full)
shared_dataset.location = "US"
shared_dataset = client.create_dataset(shared_dataset)  # API request

Crea la vista nel nuovo set di dati

Nel nuovo set di dati, crei la vista che intendi autorizzare. Questa è la visualizzazione che condividi con i tuoi analisti di dati. Questa vista è creata utilizzando una query SQL che esclude le colonne che non devono essere visualizzate dagli analisti di dati.

Per questo tutorial, la visualizzazione condivisa esclude le informazioni sull'autore, tranne il nome, ed esclude le informazioni dell'autore, ad eccezione del nome dell'autore.

Per creare la vista nel nuovo set di dati:

Console

  1. Nella console Google Cloud, apri la pagina BigQuery.

    Vai a BigQuery

  2. Copia e incolla la seguente query nel riquadro Editor. Sostituisci PROJECT_ID con l'ID progetto.

    SELECT
      commit,
      author.name AS author,
      committer.name AS committer,
      repo_name
    FROM
      `PROJECT_ID.github_source_data.github_contributors`;
    
  3. Fai clic su Salva > Salva visualizzazione.

  4. Nella finestra di dialogo Salva visualizzazione:

    1. Per Progetto, verifica che il progetto sia selezionato.
    2. In Set di dati, inserisci shared_views.
    3. In Tabella, inserisci github_analyst_view.
    4. Fai clic su Salva.

SQL

Utilizza l'istruzione DDL CREATE VIEW:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'Editor query, inserisci la seguente istruzione:

    CREATE VIEW shared_views.github_analyst_view
    AS (
      SELECT
        commit,
        author.name AS author,
        committer.name AS committer,
        repo_name
      FROM
        `PROJECT_ID.github_source_data.github_contributors`
    );
    

    Sostituisci PROJECT_ID con l'ID progetto.

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

// Create the view in the new dataset
String viewQuery =
    String.format(
        "SELECT commit, author.name as author, committer.name as committer, repo_name FROM %s.%s.%s",
        projectId, sourceDatasetId, sourceTableId);

ViewDefinition viewDefinition = ViewDefinition.of(viewQuery);

Table view =
    bigquery.create(TableInfo.of(TableId.of(sharedDatasetId, sharedViewId), viewDefinition));

Python

Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

shared_view_id = "github_analyst_view"
view = bigquery.Table(shared_dataset.table(shared_view_id))
sql_template = """
    SELECT
        commit, author.name as author,
        committer.name as committer, repo_name
    FROM
        `{}.{}.{}`
"""
view.view_query = sql_template.format(
    client.project, source_dataset_id, source_table_id
)
view = client.create_table(view)  # API request

Assegna un ruolo IAM a livello di progetto agli analisti di dati

Per eseguire query sulla vista, gli analisti di dati devono disporre dell'autorizzazione per eseguire job di query. Il ruolo bigquery.user include le autorizzazioni per eseguire job, inclusi job di query, all'interno del progetto. Se concedi a un utente o un gruppo il ruolo bigquery.user a livello di progetto, l'utente potrà creare set di dati ed eseguire job di query sulle tabelle al loro interno. Il ruolo bigquery.user non concede agli utenti l'autorizzazione per eseguire query sui dati, visualizzare i dati delle tabelle o visualizzare i dettagli dello schema delle tabelle per i set di dati non creati dall'utente.

L'assegnazione del ruolo bigquery.user a livello di progetto agli analisti di dati non consente loro di visualizzare o eseguire query sui dati delle tabelle nel set di dati contenente le tabelle sottoposte a query dalla vista. Inoltre, il ruolo bigquery.user non concede agli utenti la possibilità di aggiornare le tue viste. Alla maggior parte delle persone (data scientist, analisti di business intelligence, analisti di dati) in un'azienda dovrebbe essere assegnato il ruolo bigquery.user a livello di progetto.

Quando aggiungi un gruppo a un ruolo IAM, l'indirizzo email e il dominio devono essere associati a un Account Google o Google Apps attivo.

Per assegnare il gruppo di analisti di dati al ruolo bigquery.user a livello di progetto:

Console

  1. Apri la pagina IAM nella console Google Cloud.

    Apri la pagina IAM

  2. Assicurati che il progetto sia selezionato nel selettore di progetti nella barra superiore.

  3. Fai clic su Concedi l'accesso.

  4. Nella finestra di dialogo Concedi l'accesso a:

    1. Nella casella Nuove entità, inserisci il gruppo che contiene gli analisti di dati. Ad esempio, data_analysts@example.com.
    2. Nella casella Seleziona un ruolo, cerca il ruolo Utente BigQuery e selezionalo.
    3. Fai clic su Salva.

Assegna i controlli di accesso al set di dati contenente la vista

Per consentire agli analisti di dati di eseguire query sulla vista, deve essere concesso il ruolo bigquery.dataViewer nel set di dati contenente la vista. Il ruolo bigquery.user fornisce agli analisti di dati le autorizzazioni necessarie per creare job di query. Tuttavia, non possono eseguire correttamente query sulla vista a meno che non abbiano anche bigquery.dataViewer accesso al set di dati che la contiene.

Per concedere ai tuoi analisti di dati bigquery.dataViewer l'accesso al set di dati:

Console

  1. Nella console Google Cloud, apri la pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, seleziona il set di dati shared_views.

  3. Fai clic su Condivisione > Autorizzazioni.

  4. Nel riquadro Autorizzazioni per il set di dati, fai clic su Aggiungi entità.

  5. Nella casella Nuove entità, inserisci il gruppo che contiene gli analisti di dati (ad esempio data_analysts@example.com).

  6. Fai clic su Seleziona un ruolo e scegli BigQuery > Visualizzatore dati BigQuery.

  7. Fai clic su Salva.

  8. Fai clic su Chiudi.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

// Assign access controls to the dataset containing the view
List<Acl> viewAcl = new ArrayList<>(sharedDataset.getAcl());
viewAcl.add(Acl.of(new Acl.Group("example-analyst-group@google.com"), Acl.Role.READER));
sharedDataset.toBuilder().setAcl(viewAcl).build().update();

Python

Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

# analyst_group_email = 'data_analysts@example.com'
access_entries = shared_dataset.access_entries
access_entries.append(
    bigquery.AccessEntry("READER", "groupByEmail", analyst_group_email)
)
shared_dataset.access_entries = access_entries
shared_dataset = client.update_dataset(
    shared_dataset, ["access_entries"]
)  # API request

Autorizza la visualizzazione ad accedere al set di dati di origine

Dopo aver creato i controlli di accesso per il set di dati contenente la vista, aggiungila come vista autorizzata nel set di dati di origine. Questa autorizzazione consente alla visualizzazione, ma non al gruppo di analisti di dati, di accedere ai dati di origine.

Per autorizzare la vista ad accedere ai dati di origine:

Console

  1. Nella console Google Cloud, apri la pagina BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, seleziona il set di dati github_source_data.

  3. Fai clic su Condivisione e poi seleziona Autorizza visualizzazioni.

  4. Nel riquadro Visualizzazioni autorizzate che si apre, inserisci la visualizzazione github_analyst_view nel campo Visualizzazioni autorizzate.

  5. Fai clic su Aggiungi autorizzazione.

La vista github_analyst_view è ora autorizzata ad accedere ai dati nel set di dati di origine.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

// Authorize the view to access the source dataset
List<Acl> srcAcl = new ArrayList<>(sourceDataset.getAcl());
srcAcl.add(Acl.of(new Acl.View(view.getTableId())));
sourceDataset.toBuilder().setAcl(srcAcl).build().update();

Python

Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

access_entries = source_dataset.access_entries
access_entries.append(
    bigquery.AccessEntry(None, "view", view.reference.to_api_repr())
)
source_dataset.access_entries = access_entries
source_dataset = client.update_dataset(
    source_dataset, ["access_entries"]
)  # API request

Verificare la configurazione

Al termine della configurazione, un membro del gruppo di analisti di dati (ad esempio, data_analysts) può verificarne la configurazione eseguendo una query sulla vista.

Per verificare la configurazione:

SQL

Chiedi a un membro del tuo gruppo di analisti di dati di:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'Editor query, inserisci la seguente istruzione:

    SELECT
      *
    FROM
      `PROJECT_ID.shared_views.github_analyst_view`;
    

    Sostituisci PROJECT_ID con l'ID progetto.

  3. Fai clic su Esegui.

Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.

Codice sorgente completo

Ecco il codice sorgente completo del tutorial come riferimento.

Java

Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

// Create a source dataset to store your table.
Dataset sourceDataset = bigquery.create(DatasetInfo.of(sourceDatasetId));

// Populate a source table
String tableQuery =
    "SELECT commit, author, committer, repo_name"
        + " FROM `bigquery-public-data.github_repos.commits`"
        + " LIMIT 1000";
QueryJobConfiguration queryConfig =
    QueryJobConfiguration.newBuilder(tableQuery)
        .setDestinationTable(TableId.of(sourceDatasetId, sourceTableId))
        .build();
bigquery.query(queryConfig);

// Create a separate dataset to store your view
Dataset sharedDataset = bigquery.create(DatasetInfo.of(sharedDatasetId));

// Create the view in the new dataset
String viewQuery =
    String.format(
        "SELECT commit, author.name as author, committer.name as committer, repo_name FROM %s.%s.%s",
        projectId, sourceDatasetId, sourceTableId);

ViewDefinition viewDefinition = ViewDefinition.of(viewQuery);

Table view =
    bigquery.create(TableInfo.of(TableId.of(sharedDatasetId, sharedViewId), viewDefinition));

// Assign access controls to the dataset containing the view
List<Acl> viewAcl = new ArrayList<>(sharedDataset.getAcl());
viewAcl.add(Acl.of(new Acl.Group("example-analyst-group@google.com"), Acl.Role.READER));
sharedDataset.toBuilder().setAcl(viewAcl).build().update();

// Authorize the view to access the source dataset
List<Acl> srcAcl = new ArrayList<>(sourceDataset.getAcl());
srcAcl.add(Acl.of(new Acl.View(view.getTableId())));
sourceDataset.toBuilder().setAcl(srcAcl).build().update();

Python

Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.

Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.

# Create a source dataset
from google.cloud import bigquery

client = bigquery.Client()
source_dataset_id = "github_source_data"
source_dataset_id_full = "{}.{}".format(client.project, source_dataset_id)

source_dataset = bigquery.Dataset(source_dataset_id_full)
# Specify the geographic location where the dataset should reside.
source_dataset.location = "US"
source_dataset = client.create_dataset(source_dataset)  # API request

# Populate a source table
source_table_id = "github_contributors"
job_config = bigquery.QueryJobConfig()
job_config.destination = source_dataset.table(source_table_id)
sql = """
    SELECT commit, author, committer, repo_name
    FROM `bigquery-public-data.github_repos.commits`
    LIMIT 1000
"""
query_job = client.query(
    sql,
    # Location must match that of the dataset(s) referenced in the query
    # and of the destination table.
    location="US",
    job_config=job_config,
)  # API request - starts the query

query_job.result()  # Waits for the query to finish

# Create a separate dataset to store your view
shared_dataset_id = "shared_views"
shared_dataset_id_full = "{}.{}".format(client.project, shared_dataset_id)

shared_dataset = bigquery.Dataset(shared_dataset_id_full)
shared_dataset.location = "US"
shared_dataset = client.create_dataset(shared_dataset)  # API request

# Create the view in the new dataset
shared_view_id = "github_analyst_view"
view = bigquery.Table(shared_dataset.table(shared_view_id))
sql_template = """
    SELECT
        commit, author.name as author,
        committer.name as committer, repo_name
    FROM
        `{}.{}.{}`
"""
view.view_query = sql_template.format(
    client.project, source_dataset_id, source_table_id
)
view = client.create_table(view)  # API request

# Assign access controls to the dataset containing the view
# analyst_group_email = 'data_analysts@example.com'
access_entries = shared_dataset.access_entries
access_entries.append(
    bigquery.AccessEntry("READER", "groupByEmail", analyst_group_email)
)
shared_dataset.access_entries = access_entries
shared_dataset = client.update_dataset(
    shared_dataset, ["access_entries"]
)  # API request

# Authorize the view to access the source dataset
access_entries = source_dataset.access_entries
access_entries.append(
    bigquery.AccessEntry(None, "view", view.reference.to_api_repr())
)
source_dataset.access_entries = access_entries
source_dataset = client.update_dataset(
    source_dataset, ["access_entries"]
)  # API request

Esegui la pulizia

Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Passaggi successivi