Guia de início rápido para usar a ferramenta de linha de comando bq

Este guia de início rápido explica como usar a ferramenta de linha de comando bq para executar consultas e carregar dados no BigQuery.

Antes de começar

  1. No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  2. Se você estiver usando um projeto preexistente, ative a API BigQuery. O BigQuery é ativado automaticamente em novos projetos.

    Ative a API

  3. 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.
  4. No Console do Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Neste guia de início rápido, você executará todos os comandos da ferramenta bq no Cloud Shell pelo Console do Cloud.

Examinar uma tabela

O BigQuery oferece várias tabelas de exemplo para consulta. Neste guia de início rápido, você executa algumas consultas na tabela shakespeare, que contém uma entrada para cada palavra em cada reprodução de Shakespeare.

  • Examine a tabela shakespeare no conjunto de dados samples:

     bq show bigquery-public-data:samples.shakespeare

    Este comando de exemplo examina o esquema de uma tabela específica. Se os IDs do projeto e do conjunto de dados forem os valores padrão da ferramenta bq, será possível omiti-los no comando bq show e especificar o ID da tabela:

     bq show shakespeare

    A saída será assim:

    Table bigquery-public-data:samples.shakespeare
    
     Last modified                  Schema                 Total Rows   Total Bytes   Expiration
    ----------------- ------------------------------------ ------------ ------------- ------------
    26 Aug 14:43:49   |- word: string (required)           164656       6432064
                      |- word_count: integer (required)
                      |- corpus: string (required)
                      |- corpus_date: integer (required)
    

Executar o comando de ajuda

  1. Veja informações detalhadas sobre a ferramenta bq:

    bq help
  2. Veja informações sobre um comando específico:

    bq help query

    Neste exemplo, a chamada para bq help recupera informações sobre o comando bq query.

Execute uma consulta

  1. Para ver quantas vezes a substring raisin aparece nas obras de Shakespeare, execute uma consulta usando o comando bq query:

    bq query --use_legacy_sql=false \
    'SELECT
     word,
     SUM(word_count) AS count
    FROM
     `bigquery-public-data`.samples.shakespeare
    WHERE
     word LIKE "%raisin%"
    GROUP BY
     word'

    A saída será assim:

    Waiting on job_dcda37c0bbed4c669b04dfd567859b90 ... (0s) Current status:
    DONE
    +---------------+-------+
    |     word      | count |
    +---------------+-------+
    | Praising      |   4   |
    | raising       |   5   |
    | raisins       |   1   |
    | praising      |   8   |
    | dispraising   |   2   |
    | dispraisingly |   1   |
    +---------------+-------+
    

  2. Para ver quantas vezes a substring huzzah aparece nas obras de Shakespeare, execute esta consulta:

    bq query --use_legacy_sql=false \
    'SELECT
     word
    FROM
     `bigquery-public-data`.samples.shakespeare
    WHERE
     word = "huzzah"'
    
    Como a substring não aparece nas obras de Shakespeare, nenhum resultado é retornado.

    A saída será assim:

    Waiting on job_e19 ... (4s) Current status: DONE
    

Criar uma tabela

Nas próximas seções, você criará uma nova tabela e a colocará em um novo conjunto de dados.

Fazer o download dos dados de amostra

Os dados de amostra são fornecidos pela Administração do Seguro Social dos EUA e contêm aproximadamente 7 MB de dados sobre nomes mais comuns de bebês.

  1. Faça o download e extraia o arquivo ZIP nomes de bebês.

    O arquivo zip contém um arquivo chamado NationalReadMe.pdf que descreve o esquema do conjunto de dados. Saiba mais sobre o conjunto de dados.

  2. Abra o arquivo yob2010.txt para ver como ele é. O arquivo contém valores separados por vírgula para as três colunas a seguir: nome, sexo (M ou F) e número de crianças com esse nome. O arquivo não tem linha de cabeçalho.

  3. Copie ou passe o arquivo yob2010.txt para o diretório em que você está executando a ferramenta de linha de comando bq. Se você estiver executando a ferramenta de linha de comando bq no Cloud Shell, faça o upload do arquivo yob2010.txt. Para mais informações, consulte Como gerenciar arquivos com o Cloud Shell.

Crie um novo conjunto de dados

  1. Verifique se o projeto padrão já tem conjuntos de dados:

    bq ls
        

    A saída será assim:

      datasetId
     -------------
      olddataset
  2. Liste os conjuntos de dados em um projeto específico incluindo o ID do projeto seguido por dois-pontos (:):
    bq ls publicdata:

    Neste exemplo, listamos os conjuntos de dados do projeto publicdata.

    A saída será assim:

      datasetId
     -----------
      samples
  3. No projeto que você selecionou para este guia de início rápido, crie um novo conjunto de dados chamado babynames:
    bq mk babynames

    O nome do conjunto de dados pode ter até 1.024 caracteres e ser composto de A-Z, a-z, 0-9 e sublinhado. O nome não pode começar com um número ou sublinhado e não pode ter espaços.

    A saída será assim:

    Dataset 'myprojectid:babynames' successfully created.
  4. Confirme se o conjunto de dados agora aparece como parte do projeto padrão:
    bq ls

    A saída será assim:

      datasetId
     -------------
      olddataset
      babynames

Faça upload da tabela

  1. No conjunto de dados babynames que você criou, carregue o arquivo de origem yob2010.txt em uma nova tabela chamada names2010:

    bq load babynames.names2010 yob2010.txt name:string,gender:string,count:integer

    O comando bq load cria uma tabela e carrega os dados em uma única etapa.

    O comando inclui os seguintes argumentos:

    • datasetID: babynames.
    • tableID: names2010.
    • source: yob2010.txt (se necessário, inclua o caminho completo)
    • schema: name:string,gender:string,count:integer.

    A saída será assim:

    Upload complete.
    Waiting on job_4f0c0878f6184119abfdae05f5194e65 ... (35s)
    Current status: DONE
  2. Confirme se a tabela agora aparece no conjunto de dados:

    bq ls babynames

    A saída será assim:

       tableId    Type
     ----------- -------
      names2010   TABLE
    
  3. Confira o esquema:

    bq show babynames.names2010

    A saída será assim

    Table myprojectid:babynames.names2010
    
       Last modified         Schema         Total Rows   Total Bytes   Expiration
     ----------------- ------------------- ------------ ------------- ------------
      13 Mar 15:31:00   |- name: string     34041        653855
                        |- gender: string
                        |- count: integer
    

Por padrão, quando você carrega dados no BigQuery, espera-se que eles estejam no formato UTF-8. Caso você tenha dados na codificação ISO-8859-1 (ou Latin-1) e você esteja tendo problemas com ela, diga ao BigQuery para tratar os dados como Latin-1 usando a sinalização -E. Para ver mais informações, consulte Codificação.

Execute consultas

  1. Retorna os nomes mais populares de meninas:

    bq query "SELECT name,count FROM babynames.names2010 WHERE gender = 'F' ORDER BY count DESC LIMIT 5"

    A saída será assim:

    Waiting on job_58c0f5ca52764ef1902eba611b71c651 ... (0s) Current status: DONE
    +----------+-------+
    |   name   | COUNT |
    +----------+-------+
    | Isabella | 22731 |
    | Sophia   | 20477 |
    | Emma     | 17179 |
    | Olivia   | 16860 |
    | Ava      | 15300 |
    +----------+-------+
    
  2. Veja os nomes mais incomuns de meninos:
    bq query "SELECT name,count FROM babynames.names2010 WHERE gender = 'M' ORDER BY count ASC LIMIT 5"

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

    A saída será assim:

    Waiting on job_556ba2e5aad340a7b2818c3e3280b7a3 ... (1s) Current status: DONE
    +----------+-------+
    |   name   | COUNT |
    +----------+-------+
    | Aarian   |     5 |
    | Aaidan   |     5 |
    | Aamarion |     5 |
    | Aadhavan |     5 |
    | Aaqib    |     5 |
    +----------+-------+
    

Limpeza

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste guia de início rápido, siga estas etapas:

  1. Remova o conjunto de dados babynames:

    bq rm --recursive=true babynames

    A sinalização --recursive exclui todas as tabelas do conjunto de dados, incluindo a tabela names2010.

  2. Para confirmar o comando de exclusão, digite y.

Porém, se você seguiu este guia de início rápido em um novo projeto, exclua o projeto.

A seguir