Membuat tampilan yang diotorisasi


BigQuery adalah data warehouse analisis berskala petabyte yang dapat Anda gunakan untuk menjalankan kueri SQL pada data dalam jumlah besar mendekati real time.

Memberikan akses lihat ke set data disebut juga dengan membuat tampilan yang diotorisasi di BigQuery. Tampilan yang diotorisasi memungkinkan Anda membagikan hasil kueri dengan pengguna dan grup tertentu tanpa memberi mereka akses ke tabel dasar. Anda juga dapat menggunakan kueri SQL tampilan untuk membatasi kolom yang dapat dibuat kueri oleh pengguna. Dalam tutorial ini, Anda akan membuat tampilan yang diotorisasi.

Tujuan

Tutorial ini menunjukkan kepada Anda cara menyelesaikan tugas-tugas berikut:

  • Membuat set data dan menerapkan kontrol akses ke set data tersebut
  • Menetapkan kontrol akses ke project Anda
  • Membuat tampilan yang diotorisasi yang membatasi data yang dapat dibuat kueri oleh pengguna

Biaya

BigQuery adalah produk berbayar, dan Anda akan dikenai biaya penggunaan BigQuery dalam tutorial ini. BigQuery menawarkan beberapa resource tanpa biaya hingga batas tertentu. Untuk informasi lebih lanjut, lihat Operasi gratis dan paket gratis BigQuery.

Sebelum memulai

Sebelum memulai tutorial ini, gunakan konsol Google Cloud untuk membuat atau memilih project.

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  4. BigQuery secara otomatis diaktifkan dalam project baru. Untuk mengaktifkan BigQuery dalam project yang sudah ada, buka

    Enable the BigQuery API.

    Enable the API

  5. Opsional: Aktifkan penagihan untuk project. Jika Anda tidak ingin mengaktifkan penagihan atau memberikan kartu kredit, langkah-langkah dalam dokumen ini tetap berfungsi. BigQuery menyediakan sandbox untuk melakukan langkah-langkah tersebut. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan sandbox BigQuery.

Membuat set data sumber

Anda mulai dengan membuat set data untuk menyimpan data sumber. Untuk tutorial ini, Anda akan mengisi tabel di set data sumber dengan membuat kueri set data publik GitHub. Data dalam set data sumber berisi informasi yang tidak ingin Anda tampilkan kepada analis data. Anda membatasi akses ke data menggunakan tampilan yang diotorisasi.

Untuk membuat set data sumber:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

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

  3. Luaskan opsi Actions, lalu klik Create dataset.

  4. Untuk Dataset ID, masukkan github_source_data.

  5. Tetap gunakan setelan default lainnya, lalu klik Create dataset.

SQL

Gunakan pernyataan DDL CREATE SCHEMA:

  1. Di Konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    CREATE SCHEMA github_source_data;
    

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat 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.

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

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

Setelah membuat set data sumber, Anda dapat mengisi tabel di dalamnya menggunakan kueri SQL. Kueri ini mengambil data dari set data publik GitHub.

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Salin dan tempel kueri berikut ke panel Editor.

    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, klik github_contributors, lalu klik Preview untuk memastikan data telah ditulis ke tabel.

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.

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

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

Membuat set data tempat Anda dapat menyimpan tampilan

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:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

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

  3. Luaskan opsi Actions, lalu klik Create dataset.

  4. Untuk Dataset ID, masukkan shared_views.

  5. Tetap gunakan setelan default lainnya, lalu klik Create dataset.

SQL

Gunakan pernyataan DDL CREATE SCHEMA:

  1. Di Konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    CREATE SCHEMA shared_views;
    

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat 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.

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

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

Membuat tampilan 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.

Untuk tutorial ini, tampilan yang dibagikan tidak menyertakan informasi penulis kecuali nama penulis, dan tidak menyertakan informasi committer kecuali nama committer.

Untuk membuat tampilan dalam set data baru:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Salin dan tempel kueri berikut ke panel Editor. Ganti PROJECT_ID dengan project ID Anda.

    SELECT
      commit,
      author.name AS author,
      committer.name AS committer,
      repo_name
    FROM
      `PROJECT_ID.github_source_data.github_contributors`;
    
  3. Klik Save > Save view.

  4. Pada dialog Save view:

    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 Konsol Google Cloud, 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 informasi selengkapnya tentang cara menjalankan kueri, lihat 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.

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

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

Menetapkan peran IAM level project untuk analis data Anda

Untuk membuat kueri tampilan, analis data memerlukan izin untuk menjalankan tugas kueri. Peran bigquery.user mencakup izin untuk menjalankan tugas, termasuk tugas kueri, dalam project. Jika Anda memberi pengguna atau grup peran bigquery.user di level project, pengguna tersebut dapat membuat set data dan menjalankan tugas kueri terhadap tabel dalam set data tersebut. Peran bigquery.user tidak memberi pengguna izin untuk membuat kueri data, melihat data tabel, atau melihat detail skema tabel untuk set data yang tidak dibuat pengguna.

Menetapkan peran bigquery.user level project kepada analis data tidak memberi mereka kemampuan untuk melihat atau mengkueri data tabel dalam set data yang berisi tabel yang dikueri oleh tampilan. Peran bigquery.user juga tidak memberi pengguna kemampuan untuk memperbarui tampilan Anda. Sebagian besar individu (data scientist, analis intelijen bisnis, analis data) di perusahaan harus diberi peran bigquery.user level project.

Saat Anda menambahkan grup ke peran IAM, alamat email dan domain harus dikaitkan dengan Akun Google atau akun aplikasi Google yang aktif.

Untuk menetapkan grup analis data ke peran bigquery.user di level project:

Konsol

  1. Buka halaman IAM di Konsol Google Cloud.

    Buka halaman IAM

  2. Pastikan project Anda dipilih pada pemilih project di panel atas.

  3. Klik Grant access.

  4. Pada dialog Grant access to:

    1. Di kotak New principals, masukkan grup yang berisi analis data Anda. Contoh, data_analysts@example.com.
    2. Pada kotak Select a role, telusuri peran BigQuery User, lalu pilih peran tersebut.
    3. Klik Save.

Menetapkan kontrol akses ke set data yang berisi tampilan

Agar analis data Anda dapat membuat kueri tampilan, mereka harus diberi peran bigquery.dataViewer pada set data yang berisi tampilan tersebut. Peran bigquery.user memberi analis data Anda izin yang diperlukan untuk membuat tugas kueri. Namun, mereka tidak akan berhasil membuat kueri tampilan kecuali jika mereka juga memiliki akses bigquery.dataViewer ke set data yang berisi tampilan.

Untuk memberi analis data Anda akses bigquery.dataViewer ke set data:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, pilih set data shared_views.

  3. Klik Sharing > Permissions.

  4. Di panel Dataset permissions, klik Add principal.

  5. Di kotak 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.

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

# 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

Mengizinkan tampilan untuk mengakses set data sumber

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

Untuk mengizinkan tampilan mengakses data sumber:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, pilih set data github_source_data.

  3. Klik Sharing, lalu pilih Authorize views.

  4. Di panel Authorized views yang terbuka, masukkan tampilan github_analyst_view di kolom Authorized views.

  5. Klik Add Authorization.

Tampilan github_analyst_view kini diberi otorisasi untuk mengakses data di set data sumber.

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.

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

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

Memverifikasi konfigurasi

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

Untuk memverifikasi konfigurasi:

SQL

Minta anggota grup analis data Anda melakukan hal berikut:

  1. Di konsol Google Cloud, 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.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat 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.

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

# 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

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.

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Langkah selanjutnya