Autorisierte Ansicht erstellen


In dieser Anleitung erstellen Sie eine autorisierte Ansicht in BigQuery, die von Ihren Datenanalysten verwendet wird. Mit autorisierten Ansichten können Sie Abfrageergebnisse mit bestimmten Nutzern und Gruppen teilen, ohne diesen Zugriff auf die zugrunde liegenden Quelldaten zu erteilen. Die Ansicht erhält Zugriff auf die Quelldaten und nicht ein Nutzer oder eine Gruppe. Sie können auch die SQL-Abfrage der Ansicht verwenden, um Spalten und Felder aus den Abfrageergebnissen auszuschließen.

Eine Alternative zur Verwendung einer autorisierten Ansicht besteht darin, Zugriffssteuerungen auf Spaltenebene für die Quelldaten einzurichten und Ihren Nutzern dann Zugriff auf eine Ansicht zu gewähren, in der die zugriffsgesteuerten Daten abgefragt werden. Weitere Informationen zur Zugriffssteuerung auf Spaltenebene finden Sie unter Einführung in die Zugriffssteuerung auf Spaltenebene.

Wenn Sie mehrere autorisierte Ansichten haben, die auf dasselbe Quell-Dataset zugreifen, können Sie das Dataset autorisieren, das die Ansichten enthält, anstatt eine einzelne Ansicht zu autorisieren.

Lernziele

  • Erstellen Sie ein Dataset, das Ihre Quelldaten enthält.
  • Führen Sie eine Abfrage aus, um Daten in eine Zieltabelle im Quell-Dataset zu laden.
  • Erstellen Sie ein Dataset, das die autorisierte Ansicht enthält.
  • Erstellen Sie eine autorisierte Ansicht aus einer SQL-Abfrage, die die Spalten einschränkt, die Ihre Datenanalysten in den Abfrageergebnissen sehen können.
  • Erteilen Sie Ihren Datenanalysten die Berechtigung zum Ausführen von Abfragejobs.
  • Gewähren Sie Ihren Datenanalysten Zugriff auf das Dataset, das die autorisierte Ansicht enthält.
  • Gewähren Sie der autorisierten Ansicht Zugriff auf das Quell-Dataset.

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.

Hinweise

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  4. Make sure that billing is enabled for your Google Cloud project.

  5. Enable the BigQuery API.

    Enable the API

  6. Prüfen Sie, ob Sie die erforderlichen Berechtigungen haben, um die Aufgaben in diesem Dokument ausführen zu können.

Erforderliche Rollen

Wenn Sie ein neues Projekt erstellen, sind Sie der Projektinhaber und erhalten alle erforderlichen IAM-Berechtigungen, die Sie für die Durchführung dieses Tutorials benötigen.

Wenn Sie ein vorhandenes Projekt verwenden, benötigen Sie die folgende Rolle.

Make sure that you have the following role or roles on the project:

Check for the roles

  1. In the Google Cloud console, go to the IAM page.

    Go to IAM
  2. Select the project.
  3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

  4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

Grant the roles

  1. In the Google Cloud console, go to the IAM page.

    IAM aufrufen
  2. Wählen Sie das Projekt aus.
  3. Klicken Sie auf Zugriff erlauben.
  4. Geben Sie im Feld Neue Hauptkonten Ihre Nutzer-ID ein. Dies ist in der Regel die E-Mail-Adresse eines Google-Kontos.

  5. Wählen Sie in der Liste Rolle auswählen eine Rolle aus.
  6. Wenn Sie weitere Rollen hinzufügen möchten, klicken Sie auf Weitere Rolle hinzufügen und fügen Sie weitere Rollen hinzu.
  7. Klicken Sie auf Speichern.
  8. Weitere Informationen zu Rollen in BigQuery finden Sie unter Vordefinierte IAM-Rollen.

    Erforderliche Berechtigungen

    Zum Erstellen der in dieser Anleitung verwendeten Ressourcen sind die folgenden Berechtigungen erforderlich. Die vordefinierte Rolle „BigQuery Studio Admin“ gewährt alle diese Berechtigungen.

    • bigquery.datasets.create, um das Quell-Dataset und das Dataset zu erstellen, das die autorisierte Ansicht enthält.
    • bigquery.tables.create, um die Tabelle zu erstellen, in der die Quelldaten gespeichert werden, und die autorisierte Ansicht.
    • bigquery.jobs.create, um den Abfragejob auszuführen, der Daten in die Quelltabelle lädt.
    • bigquery.datasets.getIamPolicy und bigquery.datasets.get, um IAM-Berechtigungen für das Quell-Dataset und das Dataset mit der autorisierten Ansicht abzurufen.
    • bigquery.datasets.setIamPolicy und bigquery.datasets.update, um die IAM-Berechtigungen für das Quell-Dataset und das Dataset mit der autorisierten Ansicht zu aktualisieren.

    Weitere Informationen zu IAM-Berechtigungen in BigQuery finden Sie unter BigQuery-Berechtigungen.

Dataset zum Speichern der Quelldaten erstellen

Als Erstes erstellen Sie ein Dataset zur Speicherung der Quelldaten.

Wählen Sie eine der folgenden Optionen aus, um das Quell-Dataset zu erstellen:

Console

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

  2. Klicken Sie im Bereich Explorer neben dem Projekt, in dem Sie das Dataset erstellen möchten, auf Aktionen anzeigen > Dataset erstellen.

  3. Führen Sie auf der Seite Dataset erstellen die folgenden Schritte aus:

    1. Geben Sie unter Dataset-ID github_source_data ein.

    2. Prüfen Sie, ob unter Standorttyp die Option Mehrere Regionen ausgewählt ist.

    3. Wählen Sie für Mehrere Regionen die Option USA oder EU aus. Alle Ressourcen, die Sie in diesem Tutorial erstellen, sollten sich am selben Speicherort für mehrere Regionen befinden.

    4. Klicken Sie auf Dataset erstellen.

SQL

Verwenden Sie die DDL-Anweisung CREATE SCHEMA:

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

    Zu BigQuery Studio

  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

Tabelle erstellen und Quelldaten laden

Nachdem Sie das Quell-Dataset erstellt haben, füllen Sie eine Tabelle in dem Dataset aus, indem Sie die Ergebnisse einer SQL-Abfrage in einer Zieltabelle speichern. Mit der Abfrage werden Daten aus dem öffentlichen GitHub-Dataset abgerufen.

Console

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Abfrage 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, maximieren Sie im Bereich Explorer das Dreistrich-Menü github_source_data und klicken Sie dann auf github_contributors.

  10. Klicken Sie auf den Tab 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 zum Speichern der autorisierten 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 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.

Wählen Sie eine der folgenden Optionen aus, um ein Dataset zum Speichern Ihrer Ansicht zu erstellen:

Console

  1. Rufen Sie die Seite BigQuery auf.

    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 ansehen und klicken Sie auf Dataset erstellen.

  4. Führen Sie auf der Seite Dataset erstellen die folgenden Schritte aus:

    1. Geben Sie unter Dataset-ID shared_views ein.

    2. Prüfen Sie, ob unter Standorttyp die Option Mehrere Regionen ausgewählt ist.

    3. Wählen Sie für Mehrere Regionen die Option USA oder EU aus. Alle Ressourcen, die Sie in diesem Tutorial erstellen, sollten sich am selben Speicherort für mehrere Regionen befinden.

    4. Klicken Sie auf Dataset erstellen.

SQL

Verwenden Sie die DDL-Anweisung CREATE SCHEMA:

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

    Zu BigQuery Studio

  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

Autorisierte 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 Datenanalysten nicht sehen sollen.

Die Quelltabelle github_contributors enthält zwei Felder vom Typ RECORD: author und committer. Bei dieser Anleitung schließt die autorisierte Ansicht alle Autorendaten, mit Ausnahme des Autorennamens, und alle Committer-Daten, mit Ausnahme des Committer-Namens, aus.

Wählen Sie eine der folgenden Optionen aus, um die Ansicht im neuen Dataset zu erstellen:

Console

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Abfrage ein.

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

    Zu BigQuery Studio

  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

Datenanalysten die Berechtigung zum Ausführen von Abfragejobs erteilen

Zum Abfragen der Ansicht benötigen die Datenanalysten die Berechtigung bigquery.jobs.create, damit sie Abfragejobs ausführen können. Die Rolle bigquery.studioUser umfasst die Berechtigung bigquery.jobs.create. Die Rolle bigquery.studioUser gewährt Nutzern keine Berechtigung zum Ansehen oder Abfragen der autorisierten Ansicht. In einem späteren Schritt gewähren Sie Ihren Datenanalysten die Berechtigung zum Zugriff auf die Ansicht.

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

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

    IAM aufrufen

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

  3. Klicken Sie auf Zugriff gewähren.

  4. Führen Sie im Dialogfeld Zugriff gewähren auf die folgenden Schritte aus:

    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 Studio-Nutzer und wählen Sie sie aus.

    3. Klicken Sie auf Speichern.

Datenanalysten die Berechtigung zum Abfragen der autorisierten Ansicht erteilen

Damit die Datenanalysten die Ansicht abfragen können, muss ihnen die Rolle bigquery.dataViewer entweder auf Dataset- oder auf Ansichtsebene erteilt werden. Wenn Sie diese Rolle auf Dataset-Ebene gewähren, erhalten Ihre Analysten Zugriff auf alle Tabellen und Ansichten im Dataset. Da das in dieser Anleitung erstellte Dataset eine einzelne autorisierte Ansicht enthält, gewähren Sie den Zugriff auf Dataset-Ebene. Wenn Sie eine Sammlung autorisierter Ansichten haben, für die Sie Zugriff gewähren müssen, sollten Sie stattdessen ein autorisiertes Dataset verwenden.

Die Rolle bigquery.studioUser, die Sie Ihren Datenanalysten zuvor gewährt haben, verleiht ihnen 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 die autorisierte Ansicht oder auf das Dataset haben, das die Ansicht enthält.

So erteilen Sie Datenanalysten bigquery.dataViewer-Zugriff auf das Dataset, das die autorisierte Ansicht enthält:

Console

  1. Rufen Sie die Seite BigQuery auf.

    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 Freigabeberechtigungen auf Hauptkonto hinzufügen.

  5. Geben Sie unter 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 aus.

  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

Nachdem Sie Zugriffssteuerungen für das Dataset erstellt haben, das die autorisierte Ansicht enthält, gewähren Sie der autorisierten Ansicht Zugriff auf das Quell-Dataset. Diese Autorisierung gibt der Ansicht, aber nicht der Datenanalystengruppe Zugriff auf die Quelldaten.

Wählen Sie eine der folgenden Optionen aus, um der autorisierten Ansicht Zugriff auf die Quelldaten zu gewähren:

Console

  1. Rufen Sie die Seite BigQuery auf.

    BigQuery aufrufen

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

  3. Klicken Sie auf Freigabe > Ansichten autorisieren.

  4. Geben Sie im Bereich Autorisierte Ansichten unter Autorisierte Ansicht PROJECT_ID.shared_views.github_analyst_view ein.

    Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.

  5. Klicken Sie auf Autorisierung hinzufügen.

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.

Um die Konfiguration zu überprüfen, sollte ein Datenanalyst die folgende Abfrage ausführen:

  1. Rufen Sie die Seite BigQuery auf.

    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.

Die Abfrageergebnisse sehen in etwa so aus: In den Ergebnissen sind nur der Name des Autors und der Name des Committers zu sehen.

Die Abfrageergebnisse nach der Abfrage der autorisierten Ansicht

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.

Projekt löschen

Console

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

gcloud

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

Einzelne Ressourcen löschen

Alternativ können Sie die einzelnen Ressourcen entfernen, die in dieser Anleitung verwendet werden:

  1. Löschen Sie die autorisierte Ansicht.

  2. Löschen Sie das Dataset, das die autorisierte Ansicht enthält.

  3. Löschen Sie die Tabelle im Quelldatensatz.

  4. Löschen Sie das Quell-Dataset.

Da Sie die in dieser Anleitung verwendeten Ressourcen erstellt haben, sind keine zusätzlichen Berechtigungen zum Löschen erforderlich.

Nächste Schritte