Criar uma visualização autorizada


Neste tutorial, você vai criar uma visualização autorizada no BigQuery que será usada pelos seus analistas de dados. Com as visualizações autorizadas, é possível compartilhar resultados de consultas com usuários e grupos específicos sem conceder acesso aos dados de origem subjacentes. A visualização recebe acesso aos dados de origem em vez de um usuário ou grupo. Também é possível usar a consulta SQL da visualização para excluir colunas e campos dos resultados da consulta.

Uma abordagem alternativa ao uso de uma visualização autorizada seria configurar controles de acesso no nível da coluna nos dados de origem e, em seguida, dar aos usuários acesso a uma visualização que consulta os dados controlados por acesso. Para mais informações sobre controles de acesso no nível da coluna, consulte Introdução ao controle de acesso no nível da coluna.

Se você tiver várias visualizações autorizadas que acessam o mesmo conjunto de dados de origem, autorize o conjunto de dados que contém as visualizações em vez de autorizar uma visualização individual.

Objetivos

  • Crie um conjunto de dados para conter os dados de origem.
  • Execute uma consulta para carregar dados em uma tabela de destino no conjunto de dados de origem.
  • Crie um conjunto de dados para conter sua visualização autorizada.
  • Crie uma visualização autorizada com uma consulta SQL que restrinja as colunas que os analistas de dados podem ver nos resultados da consulta.
  • Conceda aos analistas de dados permissão para executar jobs de consulta.
  • Conceda aos analistas de dados acesso ao conjunto de dados que contém a visualização autorizada.
  • Conceda à visualização autorizada acesso ao conjunto de dados de origem.

Custos

Neste documento, você vai usar os seguintes componentes faturáveis do Trusted Cloud by S3NS:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.

Novos usuários do Trusted Cloud podem estar qualificados para uma avaliação gratuita.

Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.

Antes de começar

  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. Verifique se você tem as permissões necessárias para realizar as tarefas neste documento.
  5. Criar um conjunto de dados para armazenar os dados de origem

    Comece criando um conjunto de dados para armazenar os dados de origem.

    Para criar o conjunto de dados de origem, escolha uma das seguintes opções:

    Console

    1. Acessar a página do BigQuery.

      Acessar o BigQuery

    2. No painel Explorer, ao lado do projeto em que você quer criar o conjunto de dados, clique em Ver ações > Criar conjunto de dados.

    3. Na página Criar conjunto de dados, faça o seguinte:

      1. Para o código do conjunto de dados, insira github_source_data.

      2. Em Tipo de local, verifique se Multirregional está selecionado.

      3. Em Multirregião, escolha EUA ou UE. Todos os recursos criados neste tutorial precisam estar no mesmo local multirregional.

      4. Clique em Criar conjunto de dados.

    SQL

    Use a instrução DDL CREATE SCHEMA.

    1. No console Trusted Cloud , acesse a página BigQuery.

      Acessar o BigQuery

    2. No editor de consultas, digite a seguinte instrução:

      CREATE SCHEMA github_source_data;

    3. Clique em Executar.

    Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.

    Java

    Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.

    Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

    Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

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

    Python

    Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.

    Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

    Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como 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

    Criar uma tabela e carregar os dados de origem

    Depois de criar o conjunto de dados de origem, preencha uma tabela nele salvando os resultados de uma consulta SQL em uma tabela de destino. A consulta recupera dados do conjunto de dados público do GitHub.

    Console

    1. Acessar a página do BigQuery.

      Acessar o BigQuery

    2. No Editor de consultas, insira a seguinte consulta:

      SELECT
        commit,
        author,
        committer,
        repo_name
      FROM
        `bigquery-public-data.github_repos.commits`
      LIMIT
        1000;
      
    3. Clique em Mais e selecione Configurações de consulta.

    4. Em Destino, selecione Definir uma tabela de destino para os resultados da consulta.

    5. Em Conjunto de dados, insira PROJECT_ID.github_source_data.

      Substitua PROJECT_ID pela ID do seu projeto.

    6. Em ID da tabela, insira github_contributors.

    7. Clique em Save.

    8. Clique em Executar.

    9. Quando a consulta for concluída, no painel Explorer, expanda github_source_data e clique em github_contributors.

    10. Para verificar se os dados foram gravados na tabela, clique na guia Visualização.

    Java

    Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.

    Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

    Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como 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

    Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.

    Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

    Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como 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

    Criar um conjunto de dados para armazenar sua visualização autorizada

    Depois de criar o conjunto de dados de origem, crie um conjunto de dados novo e separado para armazenar a visualização autorizada que você compartilhará com seus analistas de dados. Em uma etapa posterior, você concederá à visualização autorizada acesso aos dados no conjunto de dados de origem. Os analistas de dados terão acesso à visualização autorizada, mas não terão acesso direto aos dados de origem.

    As visualizações autorizadas precisam ser criadas em um conjunto de dados diferente dos dados de origem. Dessa forma, os proprietários dos dados podem conceder aos usuários acesso à visualização autorizada sem conceder acesso simultaneamente aos dados subjacentes. O conjunto de dados de dados de origem e o conjunto de dados de visualização autorizados precisam estar no mesmo local regional.

    Para criar um conjunto de dados e armazenar sua visualização, escolha uma das seguintes opções:

    Console

    1. Acessar a página do BigQuery.

      Acessar o BigQuery

    2. No painel Explorador, selecione o projeto em que você quer criar o conjunto de dados.

    3. Expanda a opção Ver ações e clique em Criar conjunto de dados.

    4. Na página Criar conjunto de dados, faça o seguinte:

      1. Para o código do conjunto de dados, insira shared_views.

      2. Em Tipo de local, verifique se Multirregional está selecionado.

      3. Em Multirregião, escolha EUA ou UE. Todos os recursos criados neste tutorial precisam estar no mesmo local multirregional.

      4. Clique em Criar conjunto de dados.

    SQL

    Use a instrução DDL CREATE SCHEMA.

    1. No console Trusted Cloud , acesse a página BigQuery.

      Acessar o BigQuery

    2. No editor de consultas, digite a seguinte instrução:

      CREATE SCHEMA shared_views;

    3. Clique em Executar.

    Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.

    Java

    Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.

    Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

    Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.

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

    Python

    Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.

    Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

    Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como 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

    Criar a visualização autorizada no novo conjunto de dados

    No novo conjunto de dados, crie a visualização que pretende autorizar. É a visualização que você compartilha com seus analistas de dados. Ela é criada com uma consulta SQL que exclui as colunas que você não quer que os analistas de dados vejam.

    A tabela de origem github_contributors contém dois campos do tipo RECORD: author e committer. Neste tutorial, sua visualização autorizada exclui todos os dados do autor, exceto o nome, e todos os dados do autor da confirmação, exceto o nome dele.

    Para criar a visualização no novo conjunto de dados, escolha uma das seguintes opções:

    Console

    1. Acessar a página do BigQuery.

      Acessar o BigQuery

    2. No editor de consultas, insira a seguinte consulta:

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

      Substitua PROJECT_ID pela ID do seu projeto.

    3. Clique em Salvar > Salvar visualização.

    4. Na caixa de diálogo Salvar visualização, faça o seguinte:

      1. Em Projeto, verifique se o projeto está selecionado.

      2. Em Conjunto de dados, insira shared_views.

      3. Em Tabela, insira github_analyst_view.

      4. Clique em Save.

    SQL

    Use a instrução DDL CREATE VIEW.

    1. No console Trusted Cloud , acesse a página BigQuery.

      Acessar o BigQuery

    2. No editor de consultas, digite a seguinte instrução:

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

      Substitua PROJECT_ID pela ID do seu projeto.

    3. Clique em Executar.

    Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.

    Java

    Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.

    Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

    Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como 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

    Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.

    Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

    Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como 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

    Conceder permissão aos analistas de dados para executar jobs de consulta

    Para consultar a visualização, os analistas de dados precisam da permissão bigquery.jobs.create para executar jobs de consulta e acesso à visualização. Nesta seção, você concede a função bigquery.user aos seus analistas de dados. O papel bigquery.user inclui a permissão bigquery.jobs.create. Em uma etapa posterior, você concede aos analistas de dados permissão para acessar a visualização.

    Para atribuir o grupo de analistas de dados ao papel bigquery.user para envolvidos no projeto, faça o seguinte:

    1. No console Trusted Cloud , acesse a página IAM.

      Acessar IAM

    2. Verifique se o projeto está selecionado no seletor.

    3. Clique em Conceder acesso.

    4. Na caixa de diálogo Conceder acesso a, faça o seguinte:

      1. No campo Novos participantes, insira o grupo que contém seus analistas de dados. Por exemplo, data_analysts@example.com.

      2. No campo Selecionar um papel, procure e selecione o papel Usuário do BigQuery.

      3. Clique em Salvar.

    Conceder permissão aos analistas de dados para consultar a visualização autorizada

    Para que seus analistas de dados consultem a visualização, eles precisam receber o papel bigquery.dataViewer no nível do conjunto de dados ou da visualização. Ao conceder esse papel no nível do conjunto de dados, seus analistas têm acesso a todas as tabelas e visualizações no conjunto. Como o conjunto de dados criado neste tutorial contém uma única visualização autorizada, você está concedendo acesso no nível do conjunto de dados. Se você tiver uma coleção de visualizações autorizadas a que precisa conceder acesso, use um conjunto de dados autorizado.

    O papel bigquery.user concedido aos analistas de dados anteriormente dá a eles as permissões necessárias para criar jobs de consulta. No entanto, eles não podem consultar a visualização a menos que também tenham acesso de bigquery.dataViewer à visualização autorizada ou ao conjunto de dados que contém a visualização.

    Para conceder acesso bigquery.dataViewer ao conjunto de dados que contém a visualização autorizada para os analistas de dados, faça o seguinte:

    Console

    1. Acessar a página do BigQuery.

      Acessar o BigQuery

    2. No painel Explorer, selecione o conjunto de dados shared_views para abrir a guia Detalhes.

    3. Clique em Compartilhamento > Permissões.

    4. No painel Permissões de compartilhamento, clique em Adicionar principal.

    5. Em Novos participantes, insira o grupo que contém seus analistas de dados. Por exemplo, data_analysts@example.com.

    6. Clique em Selecionar um papel e selecione BigQuery > Leitor de dados do BigQuery.

    7. Clique em Save.

    8. Clique em Fechar.

    Java

    Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.

    Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

    Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como 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

    Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.

    Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

    Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como 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

    Autorizar a visualização a acessar o conjunto de dados de origem

    Depois de criar controles de acesso para o conjunto de dados que contém a visualização autorizada, conceda a ela acesso ao conjunto de dados de origem. Essa autorização concede à visualização, mas não ao grupo de analistas de dados, acesso aos dados de origem.

    Para conceder à visualização autorizada acesso aos dados de origem, escolha uma destas opções:

    Console

    1. Acessar a página do BigQuery.

      Acessar o BigQuery

    2. No painel Explorer, selecione o conjunto de dados github_source_data para abrir a guia Detalhes.

    3. Clique em Compartilhamento > Autorizar visualizações.

    4. No painel Visualizações autorizadas, em Visualização autorizada, insira PROJECT_ID.shared_views.github_analyst_view.

      Substitua PROJECT_ID pela ID do seu projeto.

    5. Clique em Adicionar autorização.

    Java

    Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.

    Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

    Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como 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

    Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.

    Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

    Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como 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

    Verificar a configuração

    Quando a configuração estiver concluída, um membro do seu grupo de analistas de dados (por exemplo, data_analysts) poderá verificar a configuração consultando a visualização.

    Para verificar a configuração, um analista de dados precisa executar a seguinte consulta:

    1. Acessar a página do BigQuery.

      Acessar o BigQuery

    2. No editor de consultas, digite a seguinte instrução:

      SELECT
        *
      FROM
        `PROJECT_ID.shared_views.github_analyst_view`;

      Substitua PROJECT_ID pela ID do seu projeto.

    3. Clique em Executar.

    Os resultados da consulta são semelhantes aos mostrados a seguir. Apenas o nome do autor e do confirmador ficam visíveis nos resultados.

    Os resultados da consulta após consultar a visualização autorizada

    Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.

    Código-fonte completo

    Veja aqui o código-fonte completo do tutorial da sua referência.

    Java

    Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.

    Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

    Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como 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

    Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Python.

    Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

    Antes de executar exemplos de código, defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como 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

    Limpar

    Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.

    Excluir o projeto

    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.

    Excluir recursos individuais

    Como alternativa, para remover os recursos individuais usados neste tutorial, faça o seguinte:

    1. Exclua a visualização autorizada.

    2. Exclua o conjunto de dados que contém a visualização autorizada.

    3. Exclua a tabela no conjunto de dados de origem.

    4. Exclua o conjunto de dados de origem.

    Como você criou os recursos usados neste tutorial, não são necessárias outras permissões para excluí-los.

    A seguir