Use a ferramenta bq

Neste tutorial, vai aprender a usar o bq, a ferramenta de interface de linha de comandos (CLI) baseada em Python para o BigQuery, para criar um conjunto de dados, carregar dados de amostra e consultar tabelas. Após concluir este tutorial, vai ficar familiarizado com o bq e como trabalhar com o BigQuery através de uma CLI.

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


Para seguir orientações passo a passo para esta tarefa diretamente na Google Cloud consola, clique em Orientar-me:

Visita guiada


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.

    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. Se estiver a usar um projeto existente para este guia, verifique se tem as autorizações necessárias para concluir este guia. Se criou um novo projeto, já tem as autorizações necessárias.

  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. Se estiver a usar um projeto existente para este guia, verifique se tem as autorizações necessárias para concluir este guia. Se criou um novo projeto, já tem as autorizações necessárias.

  6. Enable the BigQuery API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

    Para novos projetos, a API BigQuery é ativada automaticamente.

  7. Opcional: Ative a faturação para o projeto. Se não quiser ativar a faturação nem fornecer um cartão de crédito, os passos neste documento continuam a funcionar. O BigQuery oferece-lhe um sandbox para realizar os passos. Para mais informações, consulte o artigo Ative o sandbox do BigQuery.
  8. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    Funções necessárias

    Para receber as autorizações de que precisa para criar um conjunto de dados, criar uma tabela, carregar dados e consultar dados, peça ao seu administrador para lhe conceder as seguintes funções do IAM no projeto:

    Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

    Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

    Transfira o ficheiro que contém os dados de origem

    O ficheiro que está a transferir contém aproximadamente 7 MB de dados sobre nomes de bebés populares. É fornecido pela Social Security Administration dos EUA.

    Para mais informações acerca dos dados, consulte as Informações gerais sobre nomes populares da Social Security Administration.

    1. Transfira os dados da Administração da Segurança Social dos EUA abrindo o seguinte URL num novo separador do navegador:

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

      Para mais informações sobre o esquema do conjunto de dados, consulte o ficheiro NationalReadMe.pdf que extraiu.

    3. Para ver o aspeto dos dados, abra o ficheiro yob2024.txt. Este ficheiro contém valores separados por vírgulas para o nome, o sexo atribuído à nascença e o número de crianças com esse nome. O ficheiro não tem uma linha de cabeçalho.

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

      • Se estiver a trabalhar no Cloud Shell, clique em Mais Carregar, clique em Escolher ficheiros, escolha o ficheiro yob2024.txt e, de seguida, clique em Carregar.

      • Se estiver a trabalhar numa shell local, copie ou mova o ficheiro yob2024.txt para o diretório onde está a executar a ferramenta bq.

    Crie um conjunto de dados

    1. Se iniciou o Cloud Shell a partir da documentação, introduza o seguinte comando para definir o ID do projeto. Isto evita que tenha de especificar o ID do projeto em cada comando da CLI.

      gcloud config set project PROJECT_ID
      

      Substitua PROJECT_ID pelo ID do seu projeto.

    1. Introduza o seguinte comando para criar um conjunto de dados denominado babynames:

      bq mk --dataset babynames
      

      O resultado é semelhante ao seguinte:

      Dataset 'babynames' successfully created.
      
    2. Confirme se o conjunto de dados babynames é agora apresentado no seu projeto:

      bq ls --datasets=true
      

      O resultado é semelhante ao seguinte:

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

    Carregue dados numa tabela

    1. No conjunto de dados babynames, carregue o ficheiro de origem yob2024.txt numa nova tabela denominada names2024:

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

      O resultado é semelhante ao seguinte:

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

      bq ls --format=pretty babynames
      

      O resultado é semelhante ao seguinte. Algumas colunas são omitidas para simplificar o resultado.

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

      bq show babynames.names2024
      

      O resultado é semelhante ao seguinte. Algumas colunas são omitidas para simplificar o resultado.

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

    Consultar dados da tabela

    1. Determinar os nomes de raparigas mais populares nos dados:

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

      O resultado é semelhante ao seguinte:

      +-----------+-------+
      |   name    | count |
      +-----------+-------+
      | Olivia    | 14718 |
      | Emma      | 13485 |
      | Amelia    | 12740 |
      | Charlotte | 12552 |
      | Mia       | 12113 |
      +-----------+-------+
      
    2. Determinar os nomes masculinos menos populares nos dados:

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

      O resultado é semelhante ao seguinte:

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

      A contagem mínima é 5 porque os dados de origem omitem nomes com menos de 5 ocorrências.

    Limpar

    Para evitar incorrer em custos na sua Google Cloud conta pelos recursos usados nesta página, elimine o Google Cloud projeto com os recursos.

    Elimine o projeto

    Se usou o sandbox do BigQuery para consultar o conjunto de dados público, a faturação não está ativada para o seu projeto e não precisa de eliminar o projeto.

    A forma mais fácil de eliminar a faturação é eliminar o projeto que criou para o tutorial.

    Para eliminar o projeto:

    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.

    Elimine os recursos

    Se usou um projeto existente, elimine os recursos que criou:

    1. Elimine o conjunto de dados babynames:

      bq rm --recursive=true babynames
      

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

      O resultado é semelhante ao seguinte:

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

    O que se segue?