Membuat tampilan yang diotorisasi


Dalam tutorial ini, Anda akan membuat tabel virtual yang diotorisasi di BigQuery yang digunakan oleh analis data Anda. Tabel virtual yang diizinkan memungkinkan Anda membagikan hasil kueri dengan pengguna dan grup tertentu tanpa memberi mereka akses ke data sumber yang mendasarinya. Tampilan diberi akses ke data sumber, bukan pengguna atau grup. Anda juga dapat menggunakan kueri SQL tampilan untuk mengecualikan kolom dan kolom dari hasil kueri.

Pendekatan alternatif untuk menggunakan tampilan yang diotorisasi adalah dengan menyiapkan kontrol akses tingkat kolom pada data sumber, lalu memberi pengguna Anda akses ke tampilan yang membuat kueri data yang dikontrol aksesnya. Untuk mengetahui informasi selengkapnya tentang kontrol akses tingkat kolom, lihat Pengantar kontrol akses tingkat kolom.

Jika memiliki beberapa tampilan yang diotorisasi yang mengakses set data sumber yang sama, Anda dapat mengizinkan set data yang berisi tampilan tersebut, bukan mengizinkan setiap tampilan satu per satu.

Tujuan

  • Buat set data yang berisi data sumber Anda.
  • Jalankan kueri untuk memuat data ke dalam tabel tujuan di set data sumber.
  • Buat set data yang berisi tampilan resmi Anda.
  • Buat tampilan yang diotorisasi dari kueri SQL yang membatasi kolom yang dapat dilihat oleh analis data Anda dalam hasil kueri.
  • Beri analis data Anda izin untuk menjalankan tugas kueri.
  • Beri analis data Anda akses ke set data yang berisi tampilan yang diotorisasi.
  • Memberikan akses tampilan yang diotorisasi ke set data sumber.

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Trusted Cloud by S3NSyang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengguna Trusted Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

Sebelum memulai

  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. Pastikan Anda memiliki izin yang diperlukan untuk melakukan tugas dalam dokumen ini.
  5. Membuat set data untuk menyimpan data sumber

    Anda mulai dengan membuat set data untuk menyimpan data sumber.

    Untuk membuat set data sumber, pilih salah satu opsi berikut:

    Konsol

    1. Buka halaman BigQuery.

      Buka BigQuery

    2. Di panel Explorer, di samping project tempat Anda ingin membuat set data, klik View actions > Create dataset.

    3. Di halaman Create dataset, lakukan hal berikut:

      1. Untuk Dataset ID, masukkan github_source_data.

      2. Untuk Jenis lokasi, pastikan Multi-region dipilih.

      3. Untuk Multi-region, pilih US atau EU. Semua resource yang Anda buat dalam tutorial ini harus berada di lokasi multi-region yang sama.

      4. Klik Create dataset.

    SQL

    Gunakan pernyataan DDL CREATE SCHEMA:

    1. Di Trusted Cloud konsol, buka halaman BigQuery.

      Buka BigQuery

    2. Di editor kueri, masukkan pernyataan berikut:

      CREATE SCHEMA github_source_data;

    3. Klik Run.

    Untuk mengetahui informasi selengkapnya tentang cara menjalankan kueri, lihat artikel Menjalankan kueri interaktif.

    Java

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.

    Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

    Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

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

    Python

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.

    Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

    Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

    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

    Membuat tabel dan memuat data sumber

    Setelah membuat set data sumber, Anda dapat mengisi tabel di dalamnya dengan menyimpan hasil kueri SQL ke tabel tujuan. Kueri ini mengambil data dari set data publik GitHub.

    Konsol

    1. Buka halaman BigQuery.

      Buka BigQuery

    2. Di Query editor, tempel kueri berikut:

      SELECT
        commit,
        author,
        committer,
        repo_name
      FROM
        `bigquery-public-data.github_repos.commits`
      LIMIT
        1000;
      
    3. Klik More dan pilih Query settings.

    4. Untuk Destination, pilih Set a destination table for query results.

    5. Untuk Dataset, masukkan PROJECT_ID.github_source_data.

      Ganti PROJECT_ID dengan project ID Anda.

    6. Untuk Table ID, masukkan github_contributors.

    7. Klik Save.

    8. Klik Run.

    9. Setelah kueri selesai, di panel Explorer, luaskan github_source_data, lalu klik github_contributors.

    10. Untuk memverifikasi bahwa data telah ditulis ke tabel, klik tab Preview.

    Java

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.

    Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

    Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

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

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.

    Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

    Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

    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

    Membuat set data untuk menyimpan tampilan resmi Anda

    Setelah membuat set data sumber, Anda perlu membuat set data baru yang terpisah untuk menyimpan tampilan yang diotorisasi dan akan Anda bagikan kepada analis data. Di langkah selanjutnya, Anda akan memberikan akses lihat yang diotorisasi ke data dalam set data sumber. Kemudian, analis data Anda akan memiliki akses ke tampilan yang diotorisasi, tetapi bukan akses langsung ke data sumber.

    Tampilan yang diotorisasi harus dibuat dalam set data yang berbeda dengan data sumber. Dengan demikian, pemilik data dapat memberi pengguna akses ke tampilan yang diotorisasi tanpa memberikan akses ke data dasar secara bersamaan. Set data dari data sumber dan set data tampilan yang diotorisasi harus berada di lokasi regional yang sama.

    Untuk membuat set data guna menyimpan tampilan, pilih salah satu opsi berikut:

    Konsol

    1. Buka halaman BigQuery.

      Buka BigQuery

    2. Di panel Explorer, pilih project tempat Anda ingin membuat set data.

    3. Luaskan opsi View actions, lalu klik Create dataset.

    4. Di halaman Create dataset, lakukan hal berikut:

      1. Untuk Dataset ID, masukkan shared_views.

      2. Untuk Jenis lokasi, pastikan Multi-region dipilih.

      3. Untuk Multi-region, pilih US atau EU. Semua resource yang Anda buat dalam tutorial ini harus berada di lokasi multi-region yang sama.

      4. Klik Create dataset.

    SQL

    Gunakan pernyataan DDL CREATE SCHEMA:

    1. Di Trusted Cloud konsol, buka halaman BigQuery.

      Buka BigQuery

    2. Di editor kueri, masukkan pernyataan berikut:

      CREATE SCHEMA shared_views;

    3. Klik Run.

    Untuk mengetahui informasi selengkapnya tentang cara menjalankan kueri, lihat artikel Menjalankan kueri interaktif.

    Java

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.

    Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

    Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

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

    Python

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.

    Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

    Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

    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

    Buat tampilan yang diizinkan dalam set data baru

    Di set data baru, buat tampilan yang ingin Anda beri otorisasi. Ini adalah tampilan yang Anda bagikan kepada analis data Anda. Tampilan ini dibuat menggunakan kueri SQL yang mengecualikan kolom yang tidak ingin Anda tampilkan kepada analis data.

    Tabel sumber github_contributors berisi dua kolom berjenis RECORD: author dan committer. Untuk tutorial ini, tampilan yang diizinkan tidak menyertakan semua data penulis kecuali nama penulis, dan tidak menyertakan semua data committer kecuali nama committer.

    Untuk membuat tampilan dalam set data baru, pilih salah satu opsi berikut:

    Konsol

    1. Buka halaman BigQuery.

      Buka BigQuery

    2. Di editor kueri, masukkan kueri berikut.

      SELECT
      commit,
      author.name AS author,
      committer.name AS committer,
      repo_name
      FROM
      `PROJECT_ID.github_source_data.github_contributors`;

      Ganti PROJECT_ID dengan project ID Anda.

    3. Klik Save > Save view.

    4. Pada dialog Simpan tampilan, lakukan hal berikut:

      1. Untuk Project, pastikan project Anda dipilih.

      2. Untuk Dataset, masukkan shared_views.

      3. Untuk Table, masukkan github_analyst_view.

      4. Klik Save.

    SQL

    Gunakan pernyataan DDL CREATE VIEW:

    1. Di Trusted Cloud konsol, buka halaman BigQuery.

      Buka BigQuery

    2. Di editor kueri, masukkan pernyataan berikut:

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

      Ganti PROJECT_ID dengan project ID Anda.

    3. Klik Run.

    Untuk mengetahui informasi selengkapnya tentang cara menjalankan kueri, lihat artikel Menjalankan kueri interaktif.

    Java

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.

    Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

    Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

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

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.

    Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

    Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

    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

    Memberi analis data Anda izin untuk menjalankan tugas kueri

    Untuk membuat kueri tampilan, analis data Anda memerlukan izin bigquery.jobs.create agar dapat menjalankan tugas kueri, dan mereka harus diberi akses ke tampilan. Di bagian ini, Anda memberikan peran bigquery.user kepada analis data Anda. Peran bigquery.user mencakup izin bigquery.jobs.create. Di langkah selanjutnya, Anda akan memberikan izin kepada analis data untuk mengakses tampilan.

    Untuk menetapkan grup analis data ke peran bigquery.user di tingkat project, lakukan hal berikut:

    1. Di konsol Trusted Cloud , buka halaman IAM.

      Buka IAM

    2. Pastikan project Anda dipilih di pemilih project.

    3. Klik Berikan akses.

    4. Pada dialog Grant access to, lakukan hal berikut:

      1. Di kolom New principals, masukkan grup yang berisi analis data Anda. Contoh, data_analysts@example.com.

      2. Di kolom Select a role, telusuri peran BigQuery User, lalu pilih peran tersebut.

      3. Klik Simpan.

    Memberi analis data Anda izin untuk membuat kueri tampilan yang diizinkan

    Agar analis data Anda dapat membuat kueri tampilan, mereka harus diberi peran bigquery.dataViewer di tingkat set data atau tingkat tampilan. Memberikan peran ini di tingkat set data akan memberi analis Anda akses ke semua tabel dan tampilan dalam set data. Karena set data yang dibuat dalam tutorial ini berisi satu tampilan yang diotorisasi, Anda memberikan akses di tingkat set data. Jika Anda memiliki kumpulan tampilan yang diotorisasi yang perlu Anda beri akses, pertimbangkan untuk menggunakan set data yang diotorisasi.

    Peran bigquery.user yang Anda berikan kepada analis data sebelumnya memberi mereka izin yang diperlukan untuk membuat tugas kueri. Namun, mereka tidak akan berhasil membuat kueri tampilan kecuali jika mereka juga memiliki akses bigquery.dataViewer ke tampilan yang diberi otorisasi atau ke set data yang berisi tampilan.

    Untuk memberi analis data Anda akses bigquery.dataViewer ke set data yang berisi tampilan yang diotorisasi, lakukan hal berikut:

    Konsol

    1. Buka halaman BigQuery.

      Buka BigQuery

    2. Di panel Explorer, pilih set data shared_views untuk membuka tab Detail.

    3. Klik Sharing > Permissions.

    4. Di panel Share permissions, klik Add principal.

    5. Untuk New principals, masukkan grup yang berisi analis data Anda—misalnya, data_analysts@example.com.

    6. Klik Select a role, lalu pilih BigQuery > BigQuery Data Viewer.

    7. Klik Save.

    8. Klik Close.

    Java

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.

    Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

    Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

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

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.

    Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

    Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

    # 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

    Mengizinkan tampilan untuk mengakses set data sumber

    Setelah membuat kontrol akses untuk set data yang berisi tampilan yang diotorisasi, Anda akan memberikan akses tampilan yang diotorisasi ke set data sumber. Otorisasi ini memberi akses lihat ke data sumber, tetapi bukan akses bagi grup analis data Anda ke data sumber.

    Untuk memberikan akses ke data sumber bagi tampilan yang diizinkan, pilih salah satu opsi berikut:

    Konsol

    1. Buka halaman BigQuery.

      Buka BigQuery

    2. Di panel Explorer, pilih set data github_source_data untuk membuka tab Detail.

    3. Klik Berbagi > Otorisasi tampilan.

    4. Di panel Authorized views, untuk Authorized view, masukkan PROJECT_ID.shared_views.github_analyst_view.

      Ganti PROJECT_ID dengan project ID Anda.

    5. Klik Tambahkan otorisasi.

    Java

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.

    Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

    Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

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

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.

    Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

    Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

    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

    Memverifikasi konfigurasi

    Setelah konfigurasi selesai, anggota grup analis data Anda (misalnya, data_analysts) dapat memverifikasi konfigurasi dengan membuat kueri tampilan.

    Untuk memverifikasi konfigurasi, analis data harus menjalankan kueri berikut:

    1. Buka halaman BigQuery.

      Buka BigQuery

    2. Di editor kueri, masukkan pernyataan berikut:

      SELECT
        *
      FROM
        `PROJECT_ID.shared_views.github_analyst_view`;

      Ganti PROJECT_ID dengan project ID Anda.

    3. Klik Run.

    Hasil kuerinya mirip dengan berikut ini. Hanya nama penulis dan nama pelaku commit yang terlihat dalam hasil.

    Hasil kueri setelah membuat kueri tampilan yang diotorisasi

    Untuk mengetahui informasi selengkapnya tentang cara menjalankan kueri, lihat artikel Menjalankan kueri interaktif.

    Kode sumber lengkap

    Berikut adalah kode sumber lengkap tutorial sebagai referensi Anda.

    Java

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.

    Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

    Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

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

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.

    Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

    Sebelum menjalankan contoh kode, tetapkan variabel lingkungan GOOGLE_CLOUD_UNIVERSE_DOMAIN ke s3nsapis.fr.

    # 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

    Pembersihan

    Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

    Menghapus project

    Konsol

    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.

    Menghapus resource satu per satu

    Atau, untuk menghapus setiap resource yang digunakan dalam tutorial ini, lakukan langkah-langkah berikut:

    1. Hapus tampilan yang diotorisasi.

    2. Hapus set data yang berisi tampilan yang diotorisasi.

    3. Hapus tabel di set data sumber.

    4. Hapus set data sumber.

    Karena Anda membuat resource yang digunakan dalam tutorial ini, tidak ada izin tambahan yang diperlukan untuk menghapusnya.

    Langkah berikutnya