承認済みビューを作成する

このチュートリアルでは、データ アナリストが使用する承認済みビューを BigQuery で作成します。承認済みのビューを使用すると、元のソースデータへのアクセス権を付与することなく、特定のユーザーやグループとの間でクエリ結果を共有できます。ビューには、ユーザーまたはグループではなくソースデータへのアクセス権が付与されます。ビューの SQL クエリを使用して、クエリ結果から列とフィールドを除外することもできます。

承認済みビューを使用する別の方法として、ソースデータに列レベルのアクセス制御を設定し、アクセス制御されたデータをクエリするビューへのアクセス権をユーザーに付与することもできます。列レベルのアクセス制御の詳細については、列レベルのアクセス制御の概要をご覧ください。

同じソース データセットにアクセスする承認済みビューが複数ある場合は、個々のビューを承認する代わりに、ビューを含むデータセットを承認できます。

ソースデータを保存するデータセットを作成する

まず、ソースデータを格納するデータセットを作成します。

ソース データセットを作成するには、次のいずれかのオプションを選択します。

コンソール

  1. [BigQuery] ページに移動します。

    BigQuery に移動

  2. 左側のペインで、 [エクスプローラ] をクリックします。

    エクスプローラ ペインのボタンがハイライト表示されている。

    左側のペインが表示されていない場合は、 左側のペインを開くをクリックしてペインを開きます。

  3. [エクスプローラ] ペインで、データセットを作成するプロジェクトの横にある [アクションを表示] > [データセットを作成] をクリックします。

  4. [データセットを作成する] ページで、次の操作を行います。

    1. [データセット ID] に「github_source_data」と入力します。

    2. [ロケーション タイプ] で、[マルチリージョン] が選択されていることを確認します。

    3. [マルチリージョン] で、US または EU を選択します。このチュートリアルで作成するすべてのリソースは、同じマルチリージョン ロケーションに配置する必要があります。

    4. [データセットを作成] をクリックします。

SQL

CREATE SCHEMA DDL ステートメントを使用します。

  1. Google Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    CREATE SCHEMA github_source_data;

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

Java

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Java の設定手順を完了してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

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

Python

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Python の設定手順を完了してください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

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

テーブルを作成してソースデータを読み込む

ソース データセットを作成したら、SQL クエリの結果を宛先テーブルに保存して、そのテーブルにデータを入力します。このクエリでは、GitHub 一般公開データセットからデータを取得します。

コンソール

  1. [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで以下のクエリを入力します。

    SELECT
      commit,
      author,
      committer,
      repo_name
    FROM
      `bigquery-public-data.github_repos.commits`
    LIMIT
      1000;
    
  3. [展開] をクリックして、[クエリの設定] を選択します。

  4. [送信先] で [クエリ結果の宛先テーブルを設定する] をオンにします。

  5. [データセット] に「PROJECT_ID.github_source_data」と入力します。

    PROJECT_ID は、実際のプロジェクト ID に置き換えます。

  6. [テーブル ID] に「github_contributors」と入力します。

  7. [保存] をクリックします。

  8. [実行] をクリックします。

  9. クエリが完了したら、[エクスプローラ] ペインで [データセット] をクリックし、github_source_data データセットをクリックします。

  10. [概要 > テーブル] をクリックし、github_contributors テーブルをクリックします。

  11. データがテーブルに書き込まれたことを確認するには、[プレビュー] タブをクリックします。

Java

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Java の設定手順を完了してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

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

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Python の設定手順を完了してください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

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

承認済みビューを格納するデータセットを作成する

ソース データセットを作成したら、データ アナリストと共有する承認済みビューを格納する新しい別のデータセットを作成します。後のステップで、ソース データセット内のデータへのアクセス権を承認済みビューに付与します。データ アナリストには承認済みビューへのアクセス権が付与されますが、ソースデータへの直接アクセス権は付与されません。

承認済みビューは、ソースデータとは別のデータセットで作成する必要があります。これにより、データのオーナーは元のデータへのアクセス権を同時に付与することなく、承認済みビューへのアクセス権を付与できます。ソース データセットと承認済みビューのデータセットは、同じリージョンのロケーションに存在する必要があります。

ビューを保存するデータセットを作成するには、次のいずれかのオプションを選択します。

コンソール

  1. [BigQuery] ページに移動します。

    BigQuery に移動

  2. 左側のペインで、 [エクスプローラ] をクリックします。

    エクスプローラ ペインのボタンがハイライト表示されている。

  3. [エクスプローラ] ペインで、データセットを作成するプロジェクトを選択します。

  4. [アクションを表示] オプションを開き、[データセットを作成] をクリックします。

  5. [データセットを作成する] ページで、次の操作を行います。

    1. [データセット ID] に「shared_views」と入力します。

    2. [ロケーション タイプ] で、[マルチリージョン] が選択されていることを確認します。

    3. [マルチリージョン] で、US または EU を選択します。このチュートリアルで作成するすべてのリソースは、同じマルチリージョン ロケーションに配置する必要があります。

    4. [データセットを作成] をクリックします。

SQL

CREATE SCHEMA DDL ステートメントを使用します。

  1. Google Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    CREATE SCHEMA shared_views;

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

Java

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Java の設定手順を完了してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

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

Python

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Python の設定手順を完了してください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

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

新しいデータセットに承認済みビューを作成する

新しいデータセットに、承認用に使用するビューを作成します。このビューをデータ アナリストと共有します。このビューは SQL クエリで作成します。このクエリで、データ アナリストに見せない列を除外します。

github_contributors ソーステーブルには、RECORD 型の 2 つのフィールド(authorcommitter)があります。このチュートリアルでは、承認済みビューから作成者の名前を除き、作成者のデータはすべて除外します。また、実行者の名前を除き、実行者のデータもすべて除外します。

新しいデータセットにビューを作成するには、次のいずれかのオプションを選択します。

コンソール

  1. [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで、次のクエリを入力します。

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

    PROJECT_ID は、実際のプロジェクト ID に置き換えます。

  3. [保存] > [ビューを保存] の順にクリックします。

  4. [ビューの保存] ダイアログで、次の操作を行います。

    1. [Project] で、必要なプロジェクトが選択されていることを確認します。

    2. [データセット] に「shared_views」と入力します。

    3. [テーブル] に「github_analyst_view」と入力します。

    4. [保存] をクリックします。

SQL

CREATE VIEW DDL ステートメントを使用します。

  1. Google Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

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

    PROJECT_ID は、実際のプロジェクト ID に置き換えます。

  3. [実行] をクリックします。

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

Java

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Java の設定手順を完了してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

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

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Python の設定手順を完了してください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

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

データ アナリストにクエリジョブを実行する権限を付与する

データ アナリストがビューにクエリを実行するには、クエリジョブを実行するための bigquery.jobs.create 権限と、ビューへのアクセス権が必要です。このセクションでは、データ アナリストに bigquery.user ロールを付与します。bigquery.user ロールには bigquery.jobs.create 権限が含まれています。後のステップで、データ アナリストにビューへのアクセス権を付与します。

プロジェクト レベルでデータ アナリストのグループを bigquery.user ロールに割り当てるには、次の操作を行います。

  1. Google Cloud コンソールで、[IAM] ページに移動します。

    [IAM] に移動

  2. プロジェクト セレクタでプロジェクトが選択されていることを確認します。

  3. [アクセス権を付与] をクリックします。

  4. [アクセス権を付与] ダイアログで、以下を行います。

    1. [新しいプリンシパル] フィールドに、データ アナリストを含むグループを入力します(例: data_analysts@example.com)。

    2. [ロールを選択] フィールドで、[BigQuery ユーザー] ロールを検索して選択します。

    3. [保存] をクリックします。

承認済みビューにクエリを実行する権限をデータ アナリストに付与する

データ アナリストがビューにクエリを実行するには、データセット レベルまたはビューレベルで bigquery.dataViewer ロールが必要です。データセット レベルでこのロールを付与すると、アナリストはデータセット内のすべてのテーブルとビューにアクセスできるようになります。このチュートリアルで作成したデータセットには 1 つの承認済みビューが含まれているため、データセット レベルでアクセス権を付与することになります。アクセス権を付与する必要がある承認済みビューのコレクションがある場合は、代わりに承認済みデータセットの使用を検討してください。

データ アナリストに付与した bigquery.user ロールにより、クエリジョブの作成に必要な権限が付与されます。ただし、承認済みビューまたはビューを含むデータセットへの bigquery.dataViewer アクセス権がないと、ビューを正常にクエリすることはできません。

承認済みビューを含むデータセットに対する bigquery.dataViewer アクセス権をデータ アナリストに付与するには、次の操作を行います。

コンソール

  1. [BigQuery] ページに移動します。

    BigQuery に移動

  2. 左側のペインで、 [エクスプローラ] をクリックします。

    エクスプローラ ペインのボタンがハイライト表示されている。

  3. [エクスプローラ] ペインで、[データセット] をクリックし、shared_views データセットを選択して [詳細] タブを開きます。

  4. [共有] > [権限] の順にクリックします。

  5. [共有権限] ペインで、[プリンシパルを追加] をクリックします。

  6. [新しいプリンシパル] に、データ アナリストを含むグループを入力します(例: data_analysts@example.com)。

  7. [ロールを選択] をクリックし、[BigQuery] > [BigQuery データ閲覧者] を選択します。

  8. [保存] をクリックします。

  9. [閉じる] をクリックします。

Java

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Java の設定手順を完了してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

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

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Python の設定手順を完了してください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

# 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

ソース データセットの表示アクセスを承認する

承認済みビューを含むデータセットのアクセス制御を作成したら、承認済みビューにソース データセットへのアクセス権を付与します。この承認により、ビューはソースデータにアクセスできますが、データ アナリスト グループはアクセスできません。

承認済みビューにソースデータへのアクセス権を付与するには、次のいずれかのオプションを選択します。

コンソール

  1. [BigQuery] ページに移動します。

    BigQuery に移動

  2. 左側のペインで、 [エクスプローラ] をクリックします。

    エクスプローラ ペインのボタンがハイライト表示されている。

  3. [エクスプローラ] ペインで、[データセット] をクリックし、github_source_data データセットを選択して [詳細] タブを開きます。

  4. [共有] > [ビューを承認] をクリックします。

  5. [承認済みビュー] ペインの [承認済みビュー] に PROJECT_ID.shared_views.github_analyst_view と入力します。

    PROJECT_ID は、実際のプロジェクト ID に置き換えます。

  6. [承認を追加] をクリックします。

Java

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Java の設定手順を完了してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

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

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Python の設定手順を完了してください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

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

構成を確認する

構成が完了すると、データ アナリスト グループ(たとえば、data_analysts)のメンバーがビューにクエリを実行して、構成を確認できます。

構成を確認するには、データ アナリストは次のクエリを実行する必要があります。

  1. [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタで次のステートメントを入力します。

    SELECT
      *
    FROM
      `PROJECT_ID.shared_views.github_analyst_view`;

    PROJECT_ID は、実際のプロジェクト ID に置き換えます。

  3. [実行] をクリックします。

クエリの結果は次のようになります。結果には、作成者名とコミッター名のみが表示されます。

承認済みビューにクエリを実行した後のクエリ結果

クエリの実行方法については、インタラクティブ クエリを実行するをご覧ください。

完全なソースコード

次に、このチュートリアル用のソースコード全体を示します。

Java

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Java の設定手順を完了してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

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

このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Python の設定手順を完了してください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。

# 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