Autorisierte Ansicht erstellen


BigQuery ist ein Data Warehouse für Analysen im Petabytebereich, mit dem SQL-Abfragen für riesige Datenmengen nahezu in Echtzeit ausgeführt werden können.

Eine Ansicht mit Zugriff auf ein Dataset wird in BigQuery auch autorisierte Ansicht genannt. Mit einer autorisierten Ansicht können Sie Abfrageergebnisse mit bestimmten Nutzern und Gruppen teilen, ohne diesen Zugriff auf die zugrunde liegenden Tabellen zu erteilen. Sie können auch die SQL-Abfrage der Ansicht verwenden, um die Spalten (Felder) einzuschränken, die die Nutzer abfragen können. In dieser Anleitung erstellen Sie eine autorisierte Ansicht.

Lernziele

In diesem Anleitung werden die folgenden Aufgaben erläutert:

  • Datasets erstellen und Zugriffssteuerungen auf diese anwenden
  • Ihrem Projekt Zugriffssteuerungen zuweisen
  • Eine autorisierte Ansicht erstellen, die die Daten einschränkt, die Nutzer abfragen können

Kosten

BigQuery ist ein kostenpflichtiges Produkt und für die Nutzung von BigQuery in dieser Anleitung entstehen Kosten. Für einige Ressourcen ist BigQuery kostenlos bis zu einem bestimmten Limit kostenlos. Weitere Informationen finden Sie unter Kostenlose BigQuery-Vorgänge und kostenlose Stufe.

Vorbereitung

Bevor Sie mit dieser Anleitung beginnen, erstellen Sie in der Google Cloud Console ein Projekt oder wählen eines aus.

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  4. BigQuery ist in neuen Projekten automatisch aktiviert. Zum Aktivieren von BigQuery in einem vorhandenen Projekt wechseln Sie zu

    BigQuery API aktivieren.

    Aktivieren Sie die API

    .
  5. Optional: Aktivieren Sie die Abrechnung für das Projekt. Die Abrechnung funktioniert auch dann, wenn Sie die Abrechnung nicht aktivieren oder keine Kreditkarte angeben möchten. BigQuery bietet Ihnen eine Sandbox zum Ausführen dieser Schritte. Weitere Informationen finden Sie unter BigQuery-Sandbox aktivieren.

Quell-Dataset erstellen

Als Erstes erstellen Sie ein Dataset zur Speicherung der Quelldaten. In dieser Anleitung füllen Sie eine Tabelle in dem Quell-Dataset durch Abfrage des öffentlichen GitHub-Datasets aus. Die Daten in Ihrem Quell-Dataset enthalten Informationen, die die Datenanalytiker nicht sehen sollen. Sie begrenzen den Zugriff auf die Daten mit einer autorisierten Ansicht.

So erstellen Sie Ihr Quell-Dataset:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite „BigQuery“.

    BigQuery aufrufen

  2. Wählen Sie im Bereich Explorer das Projekt aus, in dem Sie das Dataset erstellen möchten.

  3. Maximieren Sie die Option Aktionen und klicken Sie auf Dataset erstellen.

  4. Geben Sie unter Dataset-ID github_source_data ein.

  5. Übernehmen Sie die anderen Standardeinstellungen und klicken Sie auf Dataset erstellen.

SQL

Verwenden Sie die DDL-Anweisung CREATE SCHEMA:

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

    CREATE SCHEMA github_source_data;
    

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Python

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Nachdem Sie das Quell-Dataset erstellt haben, füllen Sie eine Tabelle in dem Dataset mit einer SQL-Abfrage aus. Diese Abfrage ruft Daten aus dem öffentlichen GitHub-Dataset ab.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite „BigQuery“.

    BigQuery aufrufen

  2. Kopieren Sie die folgende Abfrage und fügen Sie sie in den Bereich Bearbeiter ein.

    SELECT
      commit,
      author,
      committer,
      repo_name
    FROM
      `bigquery-public-data.github_repos.commits`
    LIMIT
      1000;
    
  3. Klicken Sie auf Mehr und wählen Sie Abfrageeinstellungen.

  4. Wählen Sie unter Ziel die Option Zieltabelle für Abfrageergebnisse festlegen aus.

  5. Geben Sie unter Dataset den Wert PROJECT_ID.github_source_data ein. Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

  6. Geben Sie unter Tabellen-ID github_contributors ein.

  7. Klicken Sie auf Speichern.

  8. Klicken Sie auf Ausführen.

  9. Wenn die Abfrage abgeschlossen ist, klicken Sie auf github_contributors und dann auf Vorschau, um zu prüfen, ob die Daten in die Tabelle geschrieben wurden.

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

// 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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Dataset erstellen, in dem die Ansicht gespeichert werden kann

Nachdem Sie das Quell-Dataset erstellt haben, erstellen Sie ein neues, separates Dataset zum Speichern der autorisierten Ansicht, die Sie an die Datenanalytiker weitergeben. In einem späteren Schritt gewähren Sie der autorisierten Ansicht Zugriff auf die Daten im Quell-Dataset. Ihre Datenanalysten haben dann Zugriff auf die autorisierte Ansicht, aber keinen direkten Zugriff auf die Quelldaten.

Autorisierte Ansichten sollten in einem anderen Dataset als die Quelldaten erstellt werden. Auf diese Weise können Dateninhaber Nutzern Zugriff auf die autorisierte Ansicht gewähren, ohne gleichzeitig Zugriff auf die zugrunde liegenden Daten bereitzustellen. Das Quell-Daten-Dataset und das Dataset der autorisierten Ansicht müssen sich am selben regionalen Standort befinden.

So erstellen Sie ein Dataset zum Speichern Ihrer Ansicht:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite „BigQuery“.

    BigQuery aufrufen

  2. Wählen Sie im Bereich Explorer das Projekt aus, in dem Sie das Dataset erstellen möchten.

  3. Maximieren Sie die Option Aktionen und klicken Sie auf Dataset erstellen.

  4. Geben Sie unter Dataset-ID shared_views ein.

  5. Übernehmen Sie die anderen Standardeinstellungen und klicken Sie auf Dataset erstellen.

SQL

Verwenden Sie die DDL-Anweisung CREATE SCHEMA:

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

    CREATE SCHEMA shared_views;
    

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Python

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Erstellen Sie die Ansicht in dem neuen Dataset

In dem neuen Dataset erstellen Sie die Ansicht, die autorisiert werden soll. Dies ist die Ansicht, die Sie mit den Datenanalytikern teilen. Diese Ansicht wird mit einer SQL-Abfrage erstellt, die die Spalten ausschließt, die die Datenanalytiker nicht sehen sollen.

Bei dieser Anleitung schließt die freigegebene Ansicht die Autoreninformationen mit Ausnahme des Autorennamens und die Committer-Informationen mit Ausnahme des Committer-Namens aus.

So erstellen Sie die Ansicht in dem neuen Dataset:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite „BigQuery“.

    BigQuery aufrufen

  2. Kopieren Sie die folgende Abfrage und fügen Sie sie in den Bereich Bearbeiter ein. Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

    SELECT
      commit,
      author.name AS author,
      committer.name AS committer,
      repo_name
    FROM
      `PROJECT_ID.github_source_data.github_contributors`;
    
  3. Klicken Sie auf Speichern > Ansicht speichern.

  4. Gehen Sie im Dialogfeld Ansicht speichern so vor:

    1. Prüfen Sie bei Projekt, ob Ihr Projekt ausgewählt ist.
    2. Geben Sie unter Dataset den Wert shared_views ein.
    3. Geben Sie für Tabelle den Wert github_analyst_view ein.
    4. Klicken Sie auf Speichern.

SQL

Verwenden Sie die DDL-Anweisung CREATE VIEW:

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

    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`
    );
    

    Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

// 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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Datenanalytikern eine IAM-Rolle auf Projektebene zuweisen

Zum Abfragen der Ansicht benötigen Datenanalysten die Berechtigung zum Ausführen von Abfragejobs. Die Rolle bigquery.user beinhaltet Berechtigungen zum Ausführen von Jobs, einschließlich Abfragejobs, innerhalb des Projekts. Wenn Sie Nutzern oder Gruppen auf Projektebene die Rolle bigquery.user zuweisen, können diese Datasets erstellen und Abfragejobs für Tabellen dieser Datasets ausführen. Die Rolle bigquery.user ermöglicht Nutzern nicht, Daten abzufragen, Tabellendaten anzeigen zu lassen oder Tabellenschemadetails für Datasets aufzurufen, die der Nutzer nicht erstellt hat.

Wenn Sie Ihren Datenanalysten die Rolle bigquery.user auf Projektebene zuweisen, können diese damit keine Tabellendaten des Datasets aufrufen oder abfragen, das die von der Ansicht abgefragten Tabellen enthält. Die Rolle bigquery.user gewährt Nutzern auch keine Möglichkeit, Ihre Ansichten zu aktualisieren. Die Rolle bigquery.user auf Projektebene sollte den meisten Personen (Data Scientists, Business-Intelligence-Analysten) in einem Unternehmen zugewiesen werden.

Wenn Sie einer IAM-Rolle eine Gruppe hinzufügen, müssen die E-Mail-Adresse und Domain mit einem aktiven Google-Konto oder Google Apps-Konto verknüpft sein.

So weisen Sie der Datenanalystengruppe die Rolle bigquery.user auf Projektebene zu:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite "IAM".

    Seite "IAM" öffnen

  2. Prüfen Sie, ob Ihr Projekt in der Projektauswahl in der oberen Leiste ausgewählt ist.

  3. Klicken Sie auf Zugriff gewähren.

  4. Im Dialogfeld Zugriff erlauben auf:

    1. Geben Sie im Feld Neue Hauptkonten die Gruppe ein, die Ihre Datenanalysten enthält. Beispiel: data_analysts@example.com.
    2. Suchen Sie im Feld Rolle auswählen nach der Rolle BigQuery-Nutzer und wählen Sie sie aus.
    3. Klicken Sie auf Speichern.

Zugriffssteuerungen dem Dataset zuweisen, das die Ansicht enthält

Damit die Datenanalysten die Ansicht abfragen können, muss ihnen die Rolle bigquery.dataViewer für das Dataset erteilt werden, das die Ansicht enthält. Die Rolle bigquery.user gewährt Ihren Datenanalysten die Berechtigungen, die zum Erstellen von Abfragejobs erforderlich sind. Sie können die Ansicht jedoch nur dann abfragen, wenn sie auch bigquery.dataViewer-Zugriff auf das Dataset haben, das die Ansicht enthält.

So erteilen Sie Datenanalytikern bigquery.dataViewer-Zugriff auf das Dataset:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite „BigQuery“.

    BigQuery aufrufen

  2. Wählen Sie im Bereich Explorer das Dataset shared_views aus.

  3. Klicken Sie auf Freigabe > Berechtigungen.

  4. Klicken Sie im Bereich Dataset-Berechtigungen auf Hauptkonto hinzufügen.

  5. Geben Sie im Feld Neue Hauptkonten die Gruppe ein, die Ihre Datenanalysten enthält (z. B. data_analysts@example.com).

  6. Klicken Sie auf Rolle auswählen und wählen Sie BigQuery > BigQuery-Datenbetrachter.

  7. Klicken Sie auf Speichern.

  8. Klicken Sie auf Schließen.

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

// 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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

# 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

Zugriff der Ansicht auf das Quell-Dataset autorisieren

Nach dem Erstellen von Zugriffssteuerungen für das Dataset, das die Ansicht enthält, muss die Ansicht als autorisierte Ansicht zum Quell-Dataset hinzugefügt werden. Diese Autorisierung gibt der Ansicht, aber nicht der Datenanalystengruppe Zugriff auf die Quelldaten.

So autorisieren Sie die Ansicht für den Zugriff auf die Quelldaten:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite „BigQuery“.

    BigQuery aufrufen

  2. Wählen Sie im Bereich Explorer das Dataset github_source_data aus.

  3. Klicken Sie auf Freigabe und wählen Sie dann Ansichten autorisieren aus.

  4. Geben Sie im angezeigten Bereich Autorisierte Ansichten die Ansicht github_analyst_view in das Feld Autorisierte Ansichten ein.

  5. Klicken Sie auf Autorisierung hinzufügen.

Die Ansicht github_analyst_view ist jetzt berechtigt, auf Daten im Quell-Dataset zuzugreifen.

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

// 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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

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

Konfiguration prüfen

Wenn die Konfiguration abgeschlossen ist, kann ein Mitglied der Datenanalystengruppe (z. B. data_analysts) die Konfiguration durch Abfrage der Ansicht prüfen.

So prüfen Sie die Konfiguration:

SQL

Bitten Sie ein Mitglied der Datenanalystengruppe, Folgendes zu tun:

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

    SELECT
      *
    FROM
      `PROJECT_ID.shared_views.github_analyst_view`;
    

    Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

Kompletter Quellcode

Im Folgenden finden Sie den vollständigen Quellcode für die Anleitung.

Java

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Java API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

// 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

Bevor Sie dieses Beispiel anwenden, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung zur Verwendung von Clientbibliotheken. Weitere Angaben finden Sie in der Referenzdokumentation zur BigQuery Python API.

Richten Sie zur Authentifizierung bei BigQuery die Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.

# 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

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Nächste Schritte