Como listar conjuntos de dados

Neste documento, descrevemos como listar conjuntos de dados no BigQuery.

É possível listar conjuntos de dados das seguintes maneiras:

  • usando o Console do Cloud.
  • Usando a consulta SQL INFORMATION_SCHEMA.
  • use o comando bq ls na ferramenta de linha de comando bq.
  • Chamada do método de API datasets.list
  • usando bibliotecas de cliente.

Antes de começar

Atribua papéis do Identity and Access Management (IAM) que concedam aos usuários as permissões necessárias para realizar cada tarefa deste documento.

Permissões necessárias

Para listar conjuntos de dados, você precisa da permissão bigquery.datasets.get do IAM.

Cada um dos seguintes papéis predefinidos do IAM inclui as permissões necessárias para criar uma visualização:

  • roles/bigquery.user
  • roles/bigquery.dataOwner
  • roles/bigquery.dataEditor
  • roles/bigquery.admin

Além disso, roles/bigquery.metadataViewer e roles/bigquery.dataViewer, quando aplicados no nível do projeto ou da organização, podem listar todos os conjuntos de dados no projeto.

Para mais informações sobre papéis e permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.

Como listar conjuntos de dados em um projeto

Para listar os conjuntos de dados em um projeto, faça o seguinte:

Console

  1. No menu de navegação, clique em Espaço de trabalho do SQL.

  2. No painel Explorador, expanda um nome de projeto para ver os conjuntos de dados dele ou use a caixa de pesquisa para procurar pelo nome do conjunto de dados.

SQL

Use um qualificador de projeto na consulta INFORMATION_SCHEMA para listar todos os conjuntos de dados em um projeto.

O exemplo a seguir lista todos os conjuntos de dados disponíveis no projeto especificado:

SELECT
 schema_name
FROM
'PROJECT_ID'.INFORMATION_SCHEMA.SCHEMATA

Substitua PROJECT_ID pelo ID do projeto que você quer listar os conjuntos de dados disponíveis.

Para mais informações sobre INFORMATION_SCHEMA, consulte Introdução ao INFORMATION_SCHEMA do BigQuery.

bq

Emita o comando bq ls para listar conjuntos de dados pelo ID deles. A sinalização --format pode ser usada para controlar a saída. Se você estiver listando o conjunto de dados em um projeto diferente do padrão, adicione a sinalização --project_id ao comando.

Para listar todos os conjuntos de dados em um projeto, incluindo conjuntos de dados anônimos, use a sinalização --all ou o atalho -a.

Para listar todos os conjuntos de dados em um projeto, mas sem conjuntos de dados anônimos, use a sinalização --datasets ou o atalho -d. Essa sinalização é opcional. Por padrão, os conjuntos de dados anônimos não são listados.

Veja a seguir algumas outras sinalizações:

  • --filter: conjuntos de dados de listas que correspondem à expressão do filtro. Use uma lista separada por espaço de chaves e valores de rótulo no formato labels.key:value. Para mais informações sobre como filtrar conjuntos de dados usando rótulos, consulte Como adicionar e usar rótulos.
  • --max_results ou -n: um número inteiro que indica o valor máximo de resultados. O valor padrão é 50.
bq ls --filter labels.key:value \
--max_results integer \
--format=prettyjson \
--project_id project_id

Substitua:

  • key:value é uma chave de rótulo e um valor;
  • integer é um valor inteiro que representa a quantidade de conjuntos de dados a serem listados;
  • project_id é o nome do projeto.

Exemplos:

Digite o comando a seguir para listar conjuntos de dados no projeto padrão. -- format é definido como pretty para retornar uma tabela formatada básica.

bq ls --format=pretty

Insira o seguinte comando para listar conjuntos de dados em myotherproject. --format é definido como prettyjson para retornar resultados detalhados no formato JSON.

bq ls --format=prettyjson --project_id myotherproject

Insira o comando a seguir para listar todos os conjuntos de dados, incluindo conjuntos de dados anônimos no projeto padrão. Na saída, os conjuntos de dados anônimos começam com um sublinhado.

bq ls -a

Digite o comando a seguir para retornar mais de 50 conjuntos de dados do seu projeto, que é a saída padrão.

bq ls --max_results 60

Digite o comando a seguir para listar os conjuntos de dados no projeto padrão com o rótulo org:dev.

bq ls --filter labels.org:dev

API

Para listar conjuntos de dados usando a API, chame o método datasets.list da API.

C#

Antes de testar esta amostra, siga as instruções de configuração do C# 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 C#.


using Google.Cloud.BigQuery.V2;
using System;
using System.Collections.Generic;
using System.Linq;

public class BigQueryListDatasets
{
    public void ListDatasets(
        string projectId = "your-project-id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        // Retrieve list of datasets in project
        List<BigQueryDataset> datasets = client.ListDatasets().ToList();
        // Display the results
        if (datasets.Count > 0)
        {
            Console.WriteLine($"Datasets in project {projectId}:");
            foreach (var dataset in datasets)
            {
                Console.WriteLine($"\t{dataset.Reference.DatasetId}");
            }
        }
        else
        {
            Console.WriteLine($"{projectId} does not contain any datasets.");
        }
    }
}

Go

Antes de testar esta amostra, siga as instruções de configuração do Go 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 Go.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
	"google.golang.org/api/iterator"
)

// listDatasets demonstrates iterating through the collection of datasets in a project.
func listDatasets(projectID string, w io.Writer) error {
	// projectID := "my-project-id"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	it := client.Datasets(ctx)
	for {
		dataset, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return err
		}
		fmt.Fprintln(w, dataset.DatasetID)
	}
	return nil
}

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.

import com.google.api.gax.paging.Page;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQuery.DatasetListOption;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Dataset;

public class ListDatasets {

  public static void runListDatasets() {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    listDatasets(projectId);
  }

  public static void listDatasets(String projectId) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      Page<Dataset> datasets = bigquery.listDatasets(projectId, DatasetListOption.pageSize(100));
      if (datasets == null) {
        System.out.println("Dataset does not contain any models");
        return;
      }
      datasets
          .iterateAll()
          .forEach(
              dataset -> System.out.printf("Success! Dataset ID: %s ", dataset.getDatasetId()));
    } catch (BigQueryException e) {
      System.out.println("Project does not contain any datasets \n" + e.toString());
    }
  }
}

Node.js

Antes de testar esta amostra, siga as instruções de configuração do Node.js 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 Node.js.

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function listDatasets() {
  // Lists all datasets in current GCP project.

  // Lists all datasets in the specified project
  const [datasets] = await bigquery.getDatasets();
  console.log('Datasets:');
  datasets.forEach(dataset => console.log(dataset.id));
}

PHP

Antes de testar esta amostra, siga as instruções de configuração do PHP 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 PHP.

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId  = 'The Google project ID';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$datasets = $bigQuery->datasets();
foreach ($datasets as $dataset) {
    print($dataset->id() . PHP_EOL);
}

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.


from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

datasets = list(client.list_datasets())  # Make an API request.
project = client.project

if datasets:
    print("Datasets in project {}:".format(project))
    for dataset in datasets:
        print("\t{}".format(dataset.dataset_id))
else:
    print("{} project does not contain any datasets.".format(project))

Ruby

Antes de testar esta amostra, siga as instruções de configuração do Ruby 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 Ruby.

require "google/cloud/bigquery"

def list_datasets project_id = "your-project-id"
  bigquery = Google::Cloud::Bigquery.new project: project_id

  puts "Datasets in project #{project_id}:"
  bigquery.datasets.each do |dataset|
    puts "\t#{dataset.dataset_id}"
  end
end

Segurança do conjunto de dados

Para controlar o acesso a conjuntos de dados no BigQuery, consulte Como controlar o acesso a conjuntos de dados. Para saber mais sobre criptografia de dados, consulte Criptografia em repouso.

Próximas etapas