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.

Ziele

In dieser Anleitung können Sie:

  • 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.

Hinweis

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. BigQuery ist in neuen Projekten automatisch aktiviert. Zum Aktivieren von BigQuery in einem vorhandenen Projekt wechseln Sie zu Aktivieren Sie die BigQuery API.

    Aktivieren Sie die API

    .
  4. 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 eine Sandbox zum Ausführen dieser Schritte.

Einführung

In dieser Anleitung erstellen Sie zwei Datasets: ein Dataset für die Quelldaten und ein zweites Dataset für die autorisierte Ansicht. Sie füllen das Quell-Dataset mit Daten aus dem öffentlichen GitHub-Dataset auf. Sie erstellen dann eine Ansicht, die eine Tabelle im Quell-Dataset abfragt.

Nachdem Sie die Datasets und die Ansicht erstellt haben, weisen Sie dem Projekt, dem Dataset, das die Ansicht enthält, und dem Quell-Dataset Zugriffssteuerungen zu.

Der Vorgang, mit dem Sie einer Ansicht Zugriff auf das Quell-Dataset erteilen, wird auch als Erstellen einer autorisierten Ansicht bezeichnet. Beim Erstellen einer autorisierten Ansicht führen Sie die folgenden Schritte aus:

  • Erstellen Sie ein separates Dataset zur Speicherung der Ansicht
  • Ansicht im neuen Dataset erstellen
  • Dem Projekt Zugriffssteuerungen zuweisen
  • Zugriffssteuerungen dem Dataset zuweisen, das die Ansicht enthält
  • Zugriff der Ansicht auf das Quell-Dataset autorisieren

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 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 als Dataset-ID den String github_source_data ein.

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

Java

Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

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

Python

Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur  Python API.

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 Cloud Console die Seite "BigQuery".

    BigQuery aufrufen

  2. Klicken Sie auf Neue Abfrage erstellen.

  3. Kopieren Sie die folgende Abfrage und fügen Sie sie in den Textbereich für den Abfrageeditor ein.

    SELECT
      commit,
      author,
      committer,
      repo_name
    FROM
      `bigquery-public-data.github_repos.commits`
    LIMIT
      1000
    
  4. Klicken Sie auf More (Mehr) und wählen Sie Query settings (Abfrageeinstellungen) aus.

  5. Aktivieren Sie unter Ziel das Kästchen Zieltabelle für Abfrageergebnisse festlegen.

    • Prüfen Sie bei Projektname, ob Ihr Projekt ausgewählt ist.
    • Prüfen Sie bei Dataset-Name, ob github_source_data ausgewählt ist.
    • Geben Sie für Tabellenname den String github_contributors ein.
    • Klicken Sie auf Speichern.

  6. Klicken Sie auf Ausführen.

  7. 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 ausprobieren, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

// 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 ausprobieren, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur  Python API.

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

Separates Dataset zum Speichern der Ansicht erstellen

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 Zugriff auf die autorisierte Ansicht, aber keinen direkten Zugriff auf die Quelldaten.

Autorisierte Ansichten, deren Zugriff auf Dataset-Ebene gesteuert werden, sollten in einem anderen Dataset wie die Quelldaten erstellt werden, damit die Dateneigentümer können 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 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 als Dataset-ID den String shared_views ein.

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

Java

Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

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

Python

Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur  Python API.

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

Ansicht im neuen Dataset erstellen

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 alle Autoreninformationen, mit Ausnahme des Autorennamens, und alle Committer-Informationen, mit Ausnahme des Committer-Namens, aus.

So erstellen Sie die Ansicht in dem neuen Dataset:

Console

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

    BigQuery aufrufen

  2. Klicken Sie auf Neue Abfrage erstellen.

  3. Kopieren Sie die folgende Abfrage und fügen Sie sie in den Textbereich für den Abfrageeditor 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`
    
  4. Klicken Sie auf More (Mehr) und wählen Sie Query settings (Abfrageeinstellungen) aus.

  5. Wählen Sie unter SQL-Dialekt die Option Standard aus. Klicken Sie auf Speichern, um die Abfrageeinstellungen zu aktualisieren und zum Abfrageeditor zurückzukehren.

  6. Wählen Sie im Abfrageeditor in der Drop-down-Liste Speichern die Option Ansicht speichern aus.

  7. Gehen Sie im Dialogfeld Ansicht speichern so vor:

    • Prüfen Sie bei Projektname, ob Ihr Projekt ausgewählt ist.
    • Prüfen Sie bei Dataset-Name, ob shared_views ausgewählt ist.
    • Geben Sie für Tabellenname den String github_analyst_view ein.
    • Klicken Sie auf Speichern.

Java

Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

// 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 ausprobieren, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur  Python API.

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

Datenanalysten 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. Klicken Sie auf Projekt auswählen.

  3. Wählen Sie das Projekt aus und klicken Sie auf Öffnen.

  4. Klicken Sie auf der Seite IAM auf Hinzufügen.

  5. Gehen Sie im Dialogfeld Mitglieder hinzufügen so vor:

    • Geben Sie im Feld Mitglieder die Gruppe ein, die Ihre Datenanalysten enthält (z. B. data_analysts@example.com).
    • Suchen Sie im Feld Rolle auswählen nach der Rolle BigQuery-Nutzer und wählen Sie sie aus.
    • 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 gibt Ihren Datenanalysten die Berechtigungen, die zum Erstellen von Abfragejobs erforderlich sind. Jedoch können sie die Ansicht nur abfragen, wenn sie mindestens den Zugriff bigquery.dataViewer für das Dataset haben, das die Ansicht enthält.

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

Console

  1. Wählen Sie im Feld Explorer das Dataset shared_views aus.

  2. Maximieren Sie die Option Aktionen und klicken Sie auf Öffnen.

  3. Klicken Sie auf Dataset freigeben.

  4. Geben Sie im Textfeld Mitglieder hinzufügen die Gruppe ein, die die Datenanalysten enthält (z. B. data_analysts@example.com).

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

  6. Klicken Sie auf Add.

  7. Klicken Sie auf Fertig.

Java

Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

// 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 ausprobieren, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur  Python API.

# 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

Nachdem Sie Zugriffssteuerungen für das Dataset erstellt haben, das die Ansicht enthält, fügen Sie sie als autorisierte Ansicht dem Quell-Dataset hinzu. Dadurch erhält die Ansicht Zugriff auf die Quelldaten und nicht die Datenanalystengruppe.

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

Console

  1. Wählen Sie im Feld Explorer das Dataset github_source_data aus.

  2. Maximieren Sie die Option Aktionen und klicken Sie auf Öffnen.

  3. Klicken Sie auf Dataset freigeben.

  4. Klicken Sie unter Dataset-Berechtigungen auf den Tab Autorisierte Ansichten.

  5. Gehen Sie im Dialogfeld Autorisierte Ansicht freigeben folgendermaßen vor:

    • Prüfen Sie bei Projekt auswählen, ob Ihr Projekt ausgewählt ist.
    • Wählen Sie bei Dataset auswählen das Dataset shared_views aus.
    • Geben Sie bei Ansicht auswählen den Ansichtsnamen github_analyst_view ein.
    • Klicken Sie auf Add.

  6. Klicken Sie auf Fertig.

Java

Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

// 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 ausprobieren, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur  Python API.

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:

Console

  1. Ein Mitglied Ihrer Datenanalystengruppe muss die BigQuery-Seite in der Cloud Console aufrufen.

    BigQuery aufrufen

  2. Klicken Sie auf Neue Abfrage erstellen.

  3. Kopieren Sie die folgende Abfrage und fügen Sie sie in den Textbereich für den Abfrageeditor ein. Ersetzen Sie project_id durch Ihre Projekt-ID.

    SELECT
      *
    FROM
      `project_id.shared_views.github_analyst_view`
    

Kompletter Quellcode

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

Java

Bevor Sie dieses Beispiel ausprobieren, folgen Sie den Schritten zur Einrichtung von Java in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur BigQuery Java API.

// 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 ausprobieren, folgen Sie den Schritten zur Einrichtung von Python in der BigQuery-Kurzanleitung: Clientbibliotheken verwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur  Python API.

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