Criar uma visualização autorizada


Neste tutorial, você vai criar uma visualização autorizada no BigQuery que será usada pelos analistas de dados. As visualizações autorizadas permitem compartilhar resultados de consultas com usuários e grupos específicos sem conceder a eles acesso aos dados de origem. 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 para usar uma visualização autorizada seria configurar controles de acesso no nível da coluna nos dados de origem e, em seguida, conceder aos usuários acesso a uma visualização que consulta os dados controlados por acesso. Para mais informações sobre os 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, é possível autorizar 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 a visualização autorizada.
  • Crie uma visualização autorizada com base em 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 acesso de visualização ao conjunto de dados de origem.

Custos

Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços. Novos usuários do Google 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. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  4. Make sure that billing is enabled for your Google Cloud project.

  5. Enable the BigQuery API.

    Enable the API

  6. Verifique se você tem as permissões necessárias para realizar as tarefas neste documento.

Funções exigidas

Se você criar um projeto, será o proprietário dele e receberá todas as permissões do IAM necessárias para concluir este tutorial.

Se você estiver usando um projeto atual, precisará do seguinte papel.

Make sure that you have the following role or roles on the project:

Check for the roles

  1. In the Google Cloud console, go to the IAM page.

    Go to IAM
  2. Select the project.
  3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

  4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

Grant the roles

  1. In the Google Cloud console, go to the IAM page.

    Acessar o IAM
  2. Selecionar um projeto.
  3. Clique em CONCEDER ACESSO.
  4. No campo Novos principais, insira seu identificador de usuário. Normalmente, é o endereço de e-mail de uma Conta do Google.

  5. Na lista Selecionar um papel, escolha um.
  6. Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel adicional.
  7. Clique em Salvar.
  8. Para mais informações sobre papéis no BigQuery, consulte Papéis predefinidos do IAM.

    Permissões necessárias

    Para criar os recursos usados neste tutorial, as seguintes permissões são necessárias. O papel predefinido do administrador do BigQuery Studio concede todas essas permissões.

    • bigquery.datasets.create para criar o conjunto de dados de origem e o conjunto de dados que contém a visualização autorizada.
    • bigquery.tables.create para criar a tabela que armazena os dados de origem e para criar a visualização autorizada.
    • bigquery.jobs.create para executar o job de consulta que carrega dados na tabela de origem.
    • bigquery.datasets.getIamPolicy e bigquery.datasets.get para receber permissões do IAM para o conjunto de dados de origem e o conjunto de dados que contém a visualização autorizada.
    • bigquery.datasets.setIamPolicy e bigquery.datasets.update para atualizar as permissões do IAM no conjunto de dados de origem e no conjunto de dados que contém a visualização autorizada.

    Para mais informações sobre as permissões do IAM no BigQuery, consulte Permissões do BigQuery.

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.

    Ir para 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 que você cria neste tutorial precisam estar no mesmo local de várias regiões.

    4. Clique em Criar conjunto de dados.

SQL

Use a instrução DDL CREATE SCHEMA.

  1. No console do Google Cloud, acesse a página BigQuery Studio.

    Acessar o BigQuery Studio

  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.

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

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

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úblicos do GitHub.

Console

  1. Acessar a página do BigQuery.

    Ir para 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.

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

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

Criar um conjunto de dados para armazenar a 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 origem e o conjunto de dados de visualização autorizada 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.

    Ir para o BigQuery

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

  3. Expanda a opção 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 que você cria neste tutorial precisam estar no mesmo local de várias regiões.

    4. Clique em Criar conjunto de dados.

SQL

Use a instrução DDL CREATE SCHEMA.

  1. No console do Google Cloud, acesse a página BigQuery Studio.

    Acessar o BigQuery Studio

  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.

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

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 exclui todos os dados do autor da confirmação, exceto o nome.

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

Console

  1. Acessar a página do BigQuery.

    Ir para 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 do Google Cloud, acesse a página BigQuery Studio.

    Acessar o BigQuery Studio

  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.

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

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. O papel bigquery.studioUser inclui a permissão bigquery.jobs.create. O papel bigquery.studioUser não dá aos usuários permissão para visualizar ou consultar a visualização autorizada. 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.studioUser para envolvidos no projeto, faça o seguinte:

  1. No console do Google Cloud, abra 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 a função Usuário do BigQuery Studio e selecione-a.

    3. Clique em Salvar.

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

Para que os 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, os analistas têm acesso a todas as tabelas e visualizações no conjunto de dados. 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.studioUser que você concedeu 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 aos analistas de dados, faça o seguinte:

Console

  1. Acessar a página do BigQuery.

    Ir para o BigQuery

  2. No painel Explorador, selecione o conjunto de dados shared_views.

  3. Clique em Compartilhamento > Permissões.

  4. No painel Compartilhar permissões, clique em Adicionar participante.

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

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

# 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

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 acesso ao conjunto de dados de origem. Essa autorização concede à visualização acesso aos dados de origem, mas não ao grupo de analistas de dados.

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

Console

  1. Acessar a página do BigQuery.

    Ir para o BigQuery

  2. No painel Explorador, selecione o conjunto de dados github_source_data.

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

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

    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.

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

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

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.

    Ir para 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 autor da confirmação são mostrados 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.

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

# 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

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

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

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