Usar a ferramenta bq

Neste tutorial, você vai aprender a usar o bq, a ferramenta de interface de linha de comando (CLI) baseada em Python para o BigQuery, para criar um conjunto de dados, carregar dados de amostra e consultar tabelas. Depois de concluir este tutorial, você vai conhecer o bq e saber como trabalhar com o BigQuery usando uma CLI.

Para obter uma referência completa de todos os comandos e flags bq, consulte a referência da ferramenta de linha de comando bq.


Para seguir as instruções detalhadas desta tarefa diretamente no console do Google Cloud , clique em Orientação:

Orientações


Antes de começar

  1. Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  6. Ative a API BigQuery.

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    Ativar a API

    Para novos projetos, a API BigQuery é ativada automaticamente.

  7. Opcional: ative o faturamento do projeto. Se você não quiser ativar o faturamento ou informar um cartão de crédito, as etapas deste documento ainda funcionarão. O BigQuery fornece um sandbox para executar as etapas. Para mais informações, consulte Ativar o sandbox do BigQuery.
  8. No console do Google Cloud , ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte de baixo do console Google Cloud , uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

Funções exigidas

Para receber as permissões necessárias para criar um conjunto de dados, uma tabela, carregar e consultar dados, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Fazer o download do arquivo que contém os dados de origem

Você está fazendo o download de um arquivo que tem aproximadamente 7 MB de dados com os nomes mais comuns de bebês. Ele é fornecido pela Administração da Previdência Social dos EUA.

Para mais informações sobre os dados, consulte as Informações básicas sobre nomes populares da Administração da Previdência Social.

  1. Faça o download dos dados da Administração de Previdência Social dos EUA abrindo o URL a seguir em uma nova guia do navegador:

    https://www.ssa.gov/OACT/babynames/names.zip
    
  2. Extraia o arquivo.

    Para mais informações sobre o esquema do conjunto de dados, consulte o arquivo NationalReadMe.pdf extraído.

  3. Para conferir os dados, abra o arquivo yob2024.txt. Esse arquivo contém valores separados por vírgula para nome, sexo atribuído no nascimento e número de crianças com esse nome. O arquivo não tem linha de cabeçalho.

  4. Mova o arquivo para o diretório de trabalho.

    • Se você estiver trabalhando no Cloud Shell, clique em Mais Fazer upload, clique em Escolher arquivos, escolha o arquivo yob2024.txt e clique em Fazer upload.

    • Se estiver trabalhando em um shell local, copie ou mova o arquivo yob2024.txt para o diretório em que você está executando a ferramenta bq.

crie um conjunto de dados

  1. Se você iniciou o Cloud Shell na documentação, insira o comando a seguir para definir o ID do projeto. Assim, você não precisa especificar o ID do projeto em cada comando da CLI.

    gcloud config set project PROJECT_ID
    

    Substitua PROJECT_ID pela ID do seu projeto.

  1. Insira o comando a seguir para criar um conjunto de dados chamado babynames:

    bq mk --dataset babynames
    

    O resultado será semelhante ao seguinte:

    Dataset 'babynames' successfully created.
    
  2. Verifique se o conjunto de dados babynames agora aparece no seu projeto:

    bq ls --datasets=true
    

    O resultado será assim:

      datasetId
    -------------
      babynames
    

Carregar dados em uma tabela

  1. No conjunto de dados babynames, carregue o arquivo de origem yob2024.txt em uma nova tabela chamada names2024:

    bq load babynames.names2024 yob2024.txt name:string,assigned_sex_at_birth:string,count:integer
    

    O resultado será semelhante ao seguinte:

    Upload complete.
    Waiting on bqjob_r3c045d7cbe5ca6d2_0000018292f0815f_1 ... (1s) Current status: DONE
    
  2. Confirme se a tabela names2024 agora aparece no conjunto de dados babynames:

    bq ls --format=pretty babynames
    

    O resultado será semelhante ao seguinte: Algumas colunas são omitidas para simplificar o resultado.

    +-----------+-------+
    |  tableId  | Type  |
    +-----------+-------+
    | names2024 | TABLE |
    +-----------+-------+
    
  3. Confirme se o esquema da nova tabela names2024 é name: string, assigned_sex_at_birth: string e count: integer:

    bq show babynames.names2024
    

    O resultado será semelhante ao seguinte: Algumas colunas são omitidas para simplificar a saída.

      Last modified        Schema                      Total Rows   Total Bytes
    ----------------- ------------------------------- ------------ ------------
    14 Mar 17:16:45   |- name: string                    31904       607494
                      |- assigned_sex_at_birth: string
                      |- count: integer
    

Consultar os dados da tabela

  1. Determine os nomes de meninas mais comuns nos dados:

    bq query \
        'SELECT
          name,
          count
        FROM
          babynames.names2024
        WHERE
          assigned_sex_at_birth = "F"
        ORDER BY
          count DESC
        LIMIT 5'
    

    O resultado será semelhante ao seguinte:

    +-----------+-------+
    |   name    | count |
    +-----------+-------+
    | Olivia    | 14718 |
    | Emma      | 13485 |
    | Amelia    | 12740 |
    | Charlotte | 12552 |
    | Mia       | 12113 |
    +-----------+-------+
    
  2. Determine os nomes de meninos menos comuns nos dados:

    bq query \
        'SELECT
          name,
          count
        FROM
          babynames.names2024
        WHERE
          assigned_sex_at_birth = "M"
        ORDER BY
          count ASC
        LIMIT 5'
    

    O resultado será semelhante ao seguinte:

    +---------+-------+
    |  name   | count |
    +---------+-------+
    | Aaran   |     5 |
    | Aadiv   |     5 |
    | Aadarsh |     5 |
    | Aarash  |     5 |
    | Aadrik  |     5 |
    +---------+-------+
    

    A contagem mínima é 5, porque os nomes com menos de 5 ocorrências não são exibidos nos dados de origem.

Limpar

Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Google Cloud e os recursos.

Excluir o projeto

Se você usou o sandbox do BigQuery para consultar o conjunto de dados público, o faturamento não está ativado para seu projeto, e não é necessário excluir o projeto.

O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.

Para excluir o projeto:

  1. No console Google Cloud , acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

Excluir os recursos

Se você usou um projeto atual, exclua os recursos criados:

  1. Exclua o conjunto de dados babynames:

    bq rm --recursive=true babynames
    

    A flag --recursive exclui todas as tabelas do conjunto de dados, incluindo a tabela names2024.

    O resultado será semelhante ao seguinte:

    rm: remove dataset 'myproject:babynames'? (y/N)
    
  2. Para confirmar o comando de exclusão, insira y.

A seguir