Rechercher des éléments de données avec Data Catalog

Ce document explique comment utiliser Data Catalog pour effectuer une recherche d'éléments de données, par exemple:

  • Ensembles de données, tables, vues et modèles BigQuery
  • Flux de données Pub/Sub
  • Services, bases de données et tables Dataproc Metastore
  • Modèles de tag Data Catalog, groupes d'entrées et entrées personnalisées
  • Éléments de silos de données d'entreprise connectés à Data Catalog

Portée de la recherche

Les résultats de recherche peuvent varier selon les autorisations dont disposent les utilisateurs. Les résultats de recherche Data Catalog sont limités en fonction du rôle et des autorisations IAM de l'utilisateur.

Par exemple, si un utilisateur dispose de métadonnées BigQuery en lecture pour un objet, celui-ci apparaîtra dans ses résultats de recherche Data Catalog. Pour rechercher une table, vous devez disposer de l'autorisation bigquery.tables.get pour celle-ci. Pour rechercher un ensemble de données, vous devez disposer de l'autorisation bigquery.tables.get pour celui-ci. Le rôle Lecteur de métadonnées BigQuery (roles/bigquery.metadataViewer) inclut les autorisations minimales de lecture des métadonnées requises pour qu'un ensemble de données, une table ou une vue s'affiche dans les résultats de recherche.

La même logique d'accès s'applique à tous les systèmes actuellement compatibles tels que Pub/Sub et Data Catalog.

Tables segmentées par date

Data Catalog agrège les tables segmentées par date en une seule entrée logique. Cette entrée possède le même schéma que le segment de table avec la date la plus récente, et contient des informations agrégées sur le nombre total de segments. L'entrée dérive son niveau d'accès de l'ensemble de données auquel il appartient. La recherche Data Catalog n'affiche ces entrées logiques que si l'utilisateur a accès à l'ensemble de données qui les contient. Les tables segmentées par date ne sont pas visibles dans la recherche dans Data Catalog, même si elles sont présentes dans Data Catalog et peuvent être étiquetées.

Rechercher des éléments de données

Console

Console

  1. Pour rechercher des éléments de données, ouvrez la page d'accueil de Data Catalog dans Google Cloud Console et saisissez une requête de recherche.
  2. Lorsque vous cliquez sur Rechercher ou effectuez une sélection dans les panneaux Explorer les éléments de données et Conseils de recherche de la page d'accueil de Data Catalog, les options Rechercher s'ouvre. Si vous avez sélectionné un élément dans les panneaux de la page d'accueil, il sera transféré dans l'expression du champ de recherche pour être pris en compte dans votre recherche.
  3. Vous pouvez également filtrer vos résultats de recherche en effectuant des sélections dans le panneau Filtres sur la gauche.

Filtres

Les filtres vous permettent d'affiner les résultats de recherche. Tous les filtres sont regroupés par sections:

  • Des systèmes tels que BigQuery, Pub/Sub, Dataproc Metastore, les systèmes personnalisés et Data Catalog lui-même

  • Types de données tels que les flux de données, les ensembles de données, les ensembles de fichiers, les modèles, les tables, les vues, les services, les bases de données et les types personnalisés.

  • L'onglet Projets répertorie tous les projets disponibles.

  • La page Tags répertorie tous les modèles de tag disponibles.

  • Les ensembles de données proviennent de BigQuery.

La section Tags affiche les modèles de tag à filtrer. Un modèle sélectionné permet de filtrer les éléments de données comportant des tags qui utilisent le modèle choisi. Si aucune entrée ne correspond à ce type de tag, tous les résultats de recherche sont exclus, même si la requête de recherche initiale est susceptible de correspondre à certaines entrées.

Tous les ensembles de filtres, à l'exception des Tags, sont actualisés en fonction de la modification de la requête de recherche. Les filtres sont renseignés à partir d'un échantillon de résultats de recherche actuels. Par conséquent, l'ensemble des résultats de la recherche peut inclure des entrées correspondant à la requête en cours, mais les filtres correspondants peuvent ne pas s'afficher dans le panneau Filtres.

Vous pouvez ajouter manuellement les filtres suivants:

  • Dans Projets, dans un filtre de projet, cliquez sur le bouton AJOUTER UN PROJET, recherchez un projet spécifique, sélectionnez-le, puis cliquez sur OUVRIR.
  • Dans Tags, dans un filtre de modèle de tag, cliquez sur la liste déroulante Ajouter des tags, recherchez un modèle spécifique, sélectionnez-le, puis cliquez sur OK. (Installation de Python groupée).

En outre, vous pouvez:

  • Cochez la case Inclure les ensembles de données publics pour rechercher des éléments de données disponibles publiquement dans Google Cloud en plus des éléments disponibles.
  • Pour revenir à l'ancienne interface de recherche, cliquez sur le bouton correspondant en haut à droite. L'ancienne interface facilite le filtrage.

Exemple de recherche

Par exemple, recherchez la table "trips" que vous avez configurée dans le Guide de démarrage rapide pour ajouter des balises aux tables:

  1. Saisissez "trips" dans le champ de recherche, puis cliquez sur SEARCH (Rechercher).
  2. Sélectionnez BigQuery dans la section Systèmes pour exclure les éléments de données portant le même nom et qui appartiennent à d'autres systèmes.
  3. Sélectionnez l'ID de votre projet dans la section Projets pour exclure les éléments de données d'autres projets. Si votre projet ne figure pas dans la section, cliquez sur AJOUTER UN PROJET et sélectionnez-le dans la boîte de dialogue.
  4. Sélectionnez le modèle de tag de démonstration dans la section Tags pour voir si un tag utilisant ce modèle est associé au tableau "trips". Si ce modèle n'apparaît pas dans la section, cliquez sur le menu déroulant Ajouter d'autres tags, recherchez-le et sélectionnez-le, puis cliquez sur OK.

Avec tous les filtres sélectionnés, les résultats de recherche ne doivent contenir qu'une seule entrée : la table BigQuery "trips" de votre projet avec un tag associé utilisant le modèle "Demo Tag Template".

Vous pouvez également effectuer les opérations suivantes:

  1. Filtrez votre recherche en ajoutant keyword:value aux termes de votre recherche dans le champ de recherche:

    Mot cléDescription
    name: Correspond au nom de l'élément de données
    column: Correspond au nom de colonne ou au nom de colonne imbriqué
    description: Correspond à la description du tableau

  2. Effectuez une recherche de tag en ajoutant l'un des préfixes de mots clés de tag suivants à vos termes de recherche dans le champ de recherche:

    TagDescription
    tag:project-name.tag_template_name Correspond au nom du tag
    tag:project-name.tag_template_name.key Faire correspondre une clé de tag
    tag:project-name.tag_template_name.key:value Correspond à la paire key:string value du tag

Java

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java décrite dans le guide de démarrage rapide de Data Catalog à l'aide de bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Data Catalog en langage Java.

import com.google.cloud.datacatalog.v1.DataCatalogClient;
import com.google.cloud.datacatalog.v1.DataCatalogClient.SearchCatalogPagedResponse;
import com.google.cloud.datacatalog.v1.SearchCatalogRequest;
import com.google.cloud.datacatalog.v1.SearchCatalogRequest.Scope;
import com.google.cloud.datacatalog.v1.SearchCatalogResult;
import java.io.IOException;

// Sample to search catalog
public class SearchAssets {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "my-project-id";
    String query = "type=dataset";
    searchCatalog(projectId, query);
  }

  public static void searchCatalog(String projectId, String query) throws IOException {
    // Create a scope object setting search boundaries to the given organization.
    // Scope scope = Scope.newBuilder().addIncludeOrgIds(orgId).build();

    // Alternatively, search using project scopes.
    Scope scope = Scope.newBuilder().addIncludeProjectIds(projectId).build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (DataCatalogClient dataCatalogClient = DataCatalogClient.create()) {
      // Search the catalog.
      SearchCatalogRequest searchCatalogRequest =
          SearchCatalogRequest.newBuilder().setScope(scope).setQuery(query).build();
      SearchCatalogPagedResponse response = dataCatalogClient.searchCatalog(searchCatalogRequest);

      System.out.println("Search results:");
      for (SearchCatalogResult result : response.iterateAll()) {
        System.out.println(result);
      }
    }
  }
}

Node.js

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Node.js décrite dans le guide de démarrage rapide de Data Catalog à l'aide de bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Data Catalog en langage Node.js.

// Import the Google Cloud client library.
const {DataCatalogClient} = require('@google-cloud/datacatalog').v1;
const datacatalog = new DataCatalogClient();

async function searchAssets() {
  // Search data assets.

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const projectId = 'my_project'; // Google Cloud Platform project

  // Set custom query.
  const query = 'type=dataset';

  // Create request.
  const scope = {
    includeProjectIds: [projectId],
    // Alternatively, search using Google Cloud Organization scopes.
    // includeOrgIds: [organizationId],
  };

  const request = {
    scope: scope,
    query: query,
  };

  const [result] = await datacatalog.searchCatalog(request);

  console.log(`Found ${result.length} datasets in project ${projectId}.`);
  console.log('Datasets:');
  result.forEach(dataset => {
    console.log(dataset.relativeResourceName);
  });
}
searchAssets();

Python

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python décrite dans le guide de démarrage rapide de Data Catalog à l'aide de bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Data Catalog en langage Python.

from google.cloud import datacatalog_v1

datacatalog = datacatalog_v1.DataCatalogClient()

# TODO: Set these values before running the sample.
project_id = "project_id"

# Set custom query.
search_string = "type=dataset"
scope = datacatalog_v1.types.SearchCatalogRequest.Scope()
scope.include_project_ids.append(project_id)

# Alternatively, search using organization scopes.
# scope.include_org_ids.append("my_organization_id")

search_results = datacatalog.search_catalog(scope=scope, query=search_string)

print("Results in project:")
for result in search_results:
    print(result)

API REST et ligne de commande

API REST et ligne de commande

Si vous n'avez pas accès aux bibliothèques clientes cloud pour votre langage ou si vous souhaitez tester l'API à l'aide de requêtes REST, consultez les exemples suivants et la documentation API REST de Data Catalog.

1. Rechercher dans le catalogue

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

Méthode HTTP et URL :

POST https://datacatalog.googleapis.com/v1/catalog:search

Corps JSON de la requête :

{
  "query":"trips",
  "scope":{
    "includeOrgIds":[
      "organization-id"
    ]
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "results":[
    {
      "searchResultType":"ENTRY",
      "searchResultSubtype":"entry.table",
"relativeResourceName":"projects/project-id/locations/US/entryGroups/@bigquery/entries/entry1-id",
      "linkedResource":"//bigquery.googleapis.com/projects/project-id/datasets/demo_dataset/tables/taxi_trips"
    },
    {
      "searchResultType":"ENTRY",
      "searchResultSubtype":"entry.table",
      "relativeResourceName":"projects/project-id/locations/US/entryGroups/@bigquery/entries/entry2-id",
      "linkedResource":"//bigquery.googleapis.com/projects/project-id/datasets/demo_dataset/tables/tlc_yellow_trips_2018"
    }
  ]
}