Filtrare le risorse tramite le etichette

Per filtrare le risorse utilizzando le etichette, puoi eseguire una delle seguenti operazioni:

  • Utilizza la barra di ricerca nella console Google Cloud.
  • Crea una specifica del filtro da utilizzare nell'API, nello strumento a riga di comando bq o nel client librerie.

Limitazioni

  • L'API, lo strumento a riga di comando bq e le librerie client supportano il filtro solo per i set di dati.
  • Non puoi filtrare i job per etichetta in nessuno degli strumenti BigQuery.

Prima di iniziare

Concedi ruoli IAM (Identity and Access Management) che concedono agli utenti le autorizzazioni necessarie per eseguire ogni attività in questo documento.

Autorizzazioni obbligatorie

Per filtrare le risorse utilizzando le etichette, devi essere in grado di recuperare i metadati delle risorse. Per filtrare le risorse utilizzando le etichette, devi disporre delle seguenti autorizzazioni IAM:

  • bigquery.datasets.get (consente di filtrare i set di dati)
  • bigquery.tables.get (ti consente di filtrare tabelle e visualizzazioni)

Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per filtrare i set di dati:

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

Ciascuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per filtrare tabelle e visualizzazioni:

  • roles/bigquery.metadataViewer
  • roles/bigquery.dataViewer
  • roles/bigquery.dataOwner
  • roles/bigquery.dataEditor
  • roles/bigquery.admin

Inoltre, se disponi dell'autorizzazione bigquery.datasets.create, puoi filtrare le risorse che crei.

Per ulteriori informazioni sui ruoli e sulle autorizzazioni IAM in BigQuery, consulta Ruoli e autorizzazioni predefiniti.

Applicazione di filtri alle risorse nella console Google Cloud

Per generare un elenco filtrato di risorse, utilizza la console Google Cloud:

  1. Nella console Google Cloud, vai al riquadro Esplora.

  2. Nella barra di ricerca, inserisci la coppia key o key:value. Il tuo includono corrispondenze parziali.

    Ad esempio, per mostrare solo i set di dati con l'etichetta department:shipping, puoi inserire department o department:shipping.

Applicazione di filtri ai set di dati nell'API o nello strumento a riga di comando bq

Al momento, l'API, lo strumento a riga di comando bq e le librerie client supportano il filtro solo per i set di dati.

Per filtrare i set di dati utilizzando l'API, lo strumento bq o le librerie client, crea una specifica del filtro e utilizzala:

  • Come parametro per il flag --filter nello strumento bq
  • Come valore per la proprietà filter nel metodo datasets.list dell'API

Limitazioni delle specifiche dei filtri

Le specifiche dei filtri presentano le seguenti limitazioni:

  • È supportato solo l'operatore logico AND. I confronti separati da spazi sono considerati come operatori AND impliciti.
  • L'unico campo attualmente idoneo per il filtro è labels.key, dove key è il nome di un'etichetta.
  • Il filtro può includere fino a dieci espressioni.
  • L'applicazione dei filtri è sensibile alle maiuscole.
  • Al momento, l'API, lo strumento a riga di comando bq e le librerie client supportano il filtro solo per i set di dati.

Esempi di specifiche dei filtri

Le specifiche di un filtro utilizzano la seguente sintassi:

"field[:value][ field[:value]]..."

Sostituisci quanto segue:

  • field è espresso come labels.key dove key è una chiave di etichetta.
  • value è un valore facoltativo dell'etichetta.

Gli esempi riportati di seguito mostrano come generare espressioni di filtro.

Per elencare le risorse con un'etichetta department:shipping, usa quanto segue specifiche del filtro:

labels.department:shipping

Per elencare le risorse utilizzando più etichette, separa le coppie key:value con uno spazio. Lo spazio viene considerato come un operatore logico AND. Ad esempio, per elencare i set di dati con le etichette department:shipping e location:usa, utilizza la seguente specifica del filtro:

labels.department:shipping labels.location:usa

Puoi filtrare in base alla presenza di una sola chiave, invece di trovare una corrispondenza in base a una coppia chiave-valore. La seguente specifica del filtro elenca tutti i set di dati помечены department indipendentemente dal valore.

labels.department

Una specifica del filtro equivalente utilizza un asterisco per rappresentare tutti i possibili valori associati alla chiave department.

labels.department:*

Puoi anche utilizzare i tag in una specifica di filtro. Ad esempio, per elencare le risorse con l'etichetta department:shipping e il tag test_data, utilizza la seguente specifica del filtro:

labels.department:shipping labels.test_data

Applicazione di filtri ai set di dati nello strumento a riga di comando bq e nell'API

Per filtrare i set di dati utilizzando l'API, lo strumento a riga di comando bq o le librerie client:

bq

Esegui il comando bq ls con il flag --filter. Se stai elencando in un progetto diverso da quello predefinito, specifica --project_id flag.

bq ls \
--filter "filter_specification" \
--project_id project_id

Sostituisci quanto segue:

  • filter_specification è una specifica di filtro valida.
  • project_id è l'ID progetto.

Esempi:

Inserisci il comando seguente per elencare i set di dati nel progetto predefinito che hanno un'etichetta department:shipping:

bq ls --filter "labels.department:shipping"

Inserisci il comando seguente per elencare i set di dati nel progetto predefinito che hanno un'etichetta department:shipping e un tag test_data.

bq ls --filter "labels.department:shipping labels.test_data"

Inserisci il seguente comando per elencare i set di dati in myotherproject che hanno un'etichetta department:shipping:

bq ls --filter "labels.department:shipping" --project_id myotherproject

L'output di ciascuno di questi comandi restituisce un elenco di set di dati come il seguente.

+-----------+
| datasetId |
+-----------+
| mydataset |
| mydataset2|
+-----------+

API

Chiama il metodo dell'API datasets.list e fornisci la specifica del filtro utilizzando la proprietà filter.

Vai

Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Go BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.

import (
	"context"
	"fmt"
	"io"

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

// listDatasetsByLabel demonstrates walking the collection of datasets in a project, and
// filtering that list to a subset that has specific label metadata.
func listDatasetsByLabel(w io.Writer, projectID string) 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)
	it.Filter = "labels.color:green"
	for {
		dataset, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return err
		}
		fmt.Fprintf(w, "dataset: %s\n", dataset.DatasetID)
	}
	return nil
}

Java

Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Java.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.

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

// Sample to get list of datasets by label
public class ListDatasetsByLabel {

  public static void runListDatasetsByLabel() {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String filter = "MY_LABEL_FILTER";
    listDatasetsByLabel(projectId, filter);
  }

  public static void listDatasetsByLabel(String projectId, String filter) {
    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,
              BigQuery.DatasetListOption.pageSize(100),
              BigQuery.DatasetListOption.labelFilter(filter)); // "labels.color:green"
      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

Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Node.js BigQuery documentazione di riferimento.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per le librerie client.

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

async function listDatasetsByLabel() {
  // Lists all datasets in current GCP project, filtering by label color:green.

  const options = {
    filter: 'labels.color:green',
  };
  // Lists all datasets in the specified project
  const [datasets] = await bigquery.getDatasets(options);

  console.log('Datasets:');
  datasets.forEach(dataset => console.log(dataset.id));
}

Python

Prima di provare questo esempio, segui le istruzioni di configurazione Python riportate nella guida rapida all'utilizzo di BigQuery con le librerie client. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API BigQuery Python.

Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.


from google.cloud import bigquery

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

label_filter = "labels.color:green"
datasets = list(client.list_datasets(filter=label_filter))  # Make an API request.

if datasets:
    print("Datasets filtered by {}:".format(label_filter))
    for dataset in datasets:
        print("\t{}.{}".format(dataset.project, dataset.dataset_id))
else:
    print("No datasets found with this filter.")

Passaggi successivi