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, mit der die Daten mit Zugriffssteuerung 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, das die Ansichten enthält, autorisieren, 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 Quelldataset zu laden.
  • Erstellen Sie ein Dataset, das Ihre 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 Trusted Cloud by S3NS:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.

Neuen Trusted 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. In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.

    Go to project selector

  2. Verify that billing is enabled for your Trusted Cloud project.

  3. Enable the BigQuery API.

    Enable the API

  4. Prüfen Sie, ob Sie die erforderlichen Berechtigungen haben, um die Aufgaben in diesem Dokument ausführen zu können.
  5. 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 Ihr Quelldataset 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 ansehen > 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 Multi-Region-Standort befinden.

      4. Klicken Sie auf Dataset erstellen.

    SQL

    Verwenden Sie die DDL-Anweisung CREATE SCHEMA:

    1. Rufen Sie in der Trusted Cloud Console die Seite BigQuery auf.

      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.

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

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

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

    from google.cloud import bigquery
    from google.cloud.bigquery.enums import EntityTypes
    
    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 Quelldataset erstellt haben, füllen Sie eine Tabelle darin 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 die Option github_source_data und klicken Sie dann auf github_contributors.

    10. Wenn Sie prüfen möchten, ob die Daten in die Tabelle geschrieben wurden, klicken Sie auf den Tab Vorschau.

    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.

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

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

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

    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
    """
    client.query_and_wait(
        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 and waits for 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 Quelldaten-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 Multi-Region-Standort befinden.

      4. Klicken Sie auf Dataset erstellen.

    SQL

    Verwenden Sie die DDL-Anweisung CREATE SCHEMA:

    1. Rufen Sie in der Trusted Cloud Console die Seite BigQuery auf.

      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.

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

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

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

    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 Datenanalytiker 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. Rufen Sie in der Trusted Cloud Console die Seite BigQuery auf.

      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.

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

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

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

    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 Ihre Datenanalysten die Berechtigung bigquery.jobs.create, damit sie Abfragejobs ausführen können. Außerdem muss ihnen Zugriff auf die Ansicht gewährt werden. In diesem Abschnitt weisen Sie Ihren Datenanalysten die Rolle bigquery.user zu. Die Rolle bigquery.user enthält die Berechtigung bigquery.jobs.create. In einem späteren Schritt gewähren Sie Ihren Datenanalysten die Berechtigung, auf die Ansicht zuzugreifen.

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

    1. Rufen Sie in der Trusted Cloud Console die Seite IAM auf.

      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 erlauben 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-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 zuweisen, 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 Zugriff auf Dataset-Ebene. Wenn Sie einer Sammlung von autorisierten Ansichten Zugriff gewähren müssen, sollten Sie stattdessen ein autorisiertes Dataset verwenden.

    Die Rolle bigquery.user, die Sie Ihren Datenanalysten zuvor zugewiesen haben, gewährt 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 das Dataset haben, das die Ansicht enthält.

    So erteilen Sie Datenanalytikern 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, um den Tab Details zu öffnen.

    3. Klicken Sie auf Freigabe > Berechtigungen.

    4. Klicken Sie im Bereich Freigabeberechtigungen auf Hauptkonto hinzufügen.

    5. Geben Sie für 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.

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

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

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

    # analyst_group_email = 'data_analysts@example.com'
    access_entries = shared_dataset.access_entries
    access_entries.append(
        bigquery.AccessEntry("READER", EntityTypes.GROUP_BY_EMAIL, 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.

    Wenn Sie der autorisierten Ansicht Zugriff auf die Quelldaten gewähren möchten, haben Sie folgende Möglichkeiten:

    Console

    1. Rufen Sie die Seite BigQuery auf.

      BigQuery aufrufen

    2. Wählen Sie im Bereich Explorer das Dataset github_source_data aus, um den Tab Details zu öffnen.

    3. Klicken Sie auf Freigabe > Ansichten autorisieren.

    4. Geben Sie im Bereich Autorisierte Ansichten für 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.

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

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

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

    access_entries = source_dataset.access_entries
    access_entries.append(
        bigquery.AccessEntry(None, EntityTypes.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 sichtbar.

    Die Abfrageergebnisse nach dem Abfragen 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.

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

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

    Legen Sie vor dem Ausführen von Codebeispielen die Umgebungsvariable GOOGLE_CLOUD_UNIVERSE_DOMAIN auf s3nsapis.fr fest.

    # Create a source dataset
    from google.cloud import bigquery
    from google.cloud.bigquery.enums import EntityTypes
    
    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
    """
    client.query_and_wait(
        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 and waits for 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", EntityTypes.GROUP_BY_EMAIL, 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, EntityTypes.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 Trusted 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

    1. In the Trusted 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.

    Einzelne Ressourcen löschen

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

    1. Autorisierte Ansicht löschen

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

    3. Löschen Sie die Tabelle im Quelldataset.

    4. Löschen Sie das Quelldataset.

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

    Nächste Schritte