Cómo buscar con el Data Catalog

En este documento, se explica cómo puedes usar Data Catalog para realizar una búsqueda de recursos de datos, como los siguientes:

  • Conjuntos de datos, tablas, vistas y modelos de BigQuery
  • Flujos de datos de Pub/Sub
  • Servicios, bases de datos y tablas de Dataproc Metastore
  • Plantillas de etiquetas, grupos de entrada y entradas personalizadas de Data Catalog
  • Activos en sistemas aislados de datos empresariales conectados a Data Catalog

Alcance de la búsqueda

Los resultados de la búsqueda pueden ser diferentes para los usuarios con permisos diferentes. Los resultados de la búsqueda de Data Catalog se definen según la función y los permisos de IAM del usuario.

Por ejemplo, si un usuario tiene acceso de lectura a metadatos de BigQuery a un objeto, aparecerá ese objeto en sus resultados de búsqueda de Data Catalog. Para buscar una tabla, necesitas el permiso bigquery.tables.get. Para buscar un conjunto de datos, necesitas el permiso bigquery.tables.get para ese conjunto de datos. La función Visualizador de metadatos de BigQuery (roles/bigquery.metadataViewer) incluye los permisos mínimos de lectura de metadatos que se requieren para que un conjunto de datos, una tabla o una vista aparezcan en los resultados de la búsqueda.

La misma lógica de acceso se aplica a todos los sistemas compatibles en la actualidad, como Pub/Sub y Data Catalog.

Tablas fragmentadas por fecha

Data Catalog agrega tablas fragmentadas por fecha en una entrada lógica única. Esta entrada tiene el mismo esquema que la fragmentación de la tabla con la fecha más reciente y contiene información agregada sobre la cantidad total de fragmentos. La entrada deriva su nivel de acceso al conjunto de datos al que pertenece. La búsqueda de Data Catalog solo muestra estas entradas lógicas si el usuario tiene acceso al conjunto de datos que las contiene. Las tablas individuales fragmentadas por fecha no serán visibles en la búsqueda de Data Catalog, incluso si están en Data Catalog y se pueden etiquetar.

Cómo buscar recursos de datos

Console

  1. Puedes realizar una búsqueda de recursos de datos desde la página principal de Data Catalog en Google Cloud Console. También puedes realizar selecciones desde los paneles de recursos de datos y Sugerencias de búsqueda para filtrar la búsqueda.

  2. Cuando haces clic en Buscar o seleccionas los paneles recursos de datos y Sugerencias de búsqueda en la página principal de Data Catalog, se abre la página de búsqueda. Si seleccionaste un elemento de datos o una sugerencia de búsqueda en la página principal, se transferirá al panel Tipo o a la expresión del cuadro de búsqueda para calificar tu búsqueda.

  3. Para filtrar por tipos de recursos de datos en particular, haz clic en el cuadro Tipos de datos debajo de la barra de búsqueda y selecciona los tipos que quieras buscar.

    Ejemplo: Para enumerar los conjuntos de datos de viajes en taxi públicos, selecciona el tipo de Conjunto de datos (Dataset), ingresa “viajes” en el cuadro de búsqueda y, luego, haz clic en Buscar. Asegúrate de que la opción Incluir conjuntos de datos públicos (Include public datasets) esté marcada para mostrar estos resultados:

  4. Puedes filtrar tu búsqueda si agregas un keyword:value a los términos de búsqueda en el cuadro de búsqueda:

    KeywordDescripción
    name: Nombre del recurso de datos de coincidencia
    column: Hacer coincidir el nombre de la columna o el de la columna anidada
    description: Descripción de la tabla de coincidencias

  5. Para realizar una búsqueda de etiquetas, agrega uno de los siguientes prefijos de palabra clave de la etiqueta a los términos de búsqueda en el cuadro de búsqueda:

    EtiquetaDescripción
    tag:project-name.tag_template_name Nombre de la etiqueta de coincidencia
    tag:project-name.tag_template_name.key Hacer coincidir una clave de etiqueta
    tag:project-name.tag_template_name.key:value Coincidir con el par de etiqueta key:string value

Consola con filtros

  1. Para realizar una búsqueda de recursos de datos, abre la página principal de Data Catalog en Google Cloud Console y escribe una búsqueda.
  2. Al hacer clic en HALLAR o realizar una selección en los paneles Explorar recursos de datos y Sugerencias de búsqueda de la página principal de Data Catalog, se abre la página de búsqueda. Si lo seleccionó en los paneles de la página principal, se transferirá a la expresión del cuadro de búsqueda para calificar su búsqueda.
  3. También puedes filtrar tus resultados de búsqueda. Para ello, selecciona el panel Filtros que se encuentra a la izquierda.

Filtros

Los filtros te permiten restringir los resultados de la búsqueda. Todos los filtros se agrupan en secciones:

  • Sistemas como BigQuery, Pub/Sub, Dataproc Metastore, sistemas personalizados y el catálogo de datos.

  • Tipos de datos , como flujos de datos, conjuntos de datos, grupos de entrada, conjuntos de archivos, modelos, tablas, plantillas de etiquetas, vistas, servicios, bases de datos y tipos personalizados.
  • Projects enumera todos los proyectos disponibles para ti.
  • Tags enumera todas las plantillas de etiquetas disponibles.
  • Los conjuntos de datos provienen de BigQuery.

En la sección Etiquetas, se muestran plantillas de etiqueta con las que se puede filtrar. Una plantilla de filtros seleccionada para los recursos de datos con etiquetas que usan la plantilla elegida Si no hay entradas con esas etiquetas, se excluirán todos los resultados de la búsqueda aunque la búsqueda original coincida con algunas entradas.

Todos los conjuntos de filtros, excepto las Etiquetas, se actualizan según el cambio de búsqueda. Los filtros se propagan con una muestra de resultados de búsqueda actuales. Por lo tanto, todo el conjunto de resultados de la búsqueda puede incluir entradas que coincidan con la consulta actual, pero es posible que los filtros que corresponden a esas entradas no se muestren en el panel Filtros.

Puedes agregar de forma manual los siguientes filtros:

  • En Proyectos, haga clic en el botón AGREGAR PROYECTO, busque un proyecto específico, selecciónelo y haga clic en ABRIR.
  • En Etiquetas, un filtro de plantillas de etiqueta haciendo clic en el menú desplegable Agregar más etiquetas, buscar una plantilla específica, seleccionarla y hacer clic en Aceptar. las rutas "a GCP".

Además, puede hacer lo siguiente:

  • Marque Incluir conjuntos de datos públicos para buscar recursos de datos disponibles de forma pública en Google Cloud, además de los recursos que tiene disponibles.
  • Para volver a la experiencia anterior de búsqueda, haz clic en el botón correspondiente en la esquina superior derecha. La experiencia anterior proporciona filtros más simples.

Ejemplo de búsqueda

Por ejemplo, busque la tabla "trips" que configuró en la Guía de inicio rápido para etiquetar tablas:

  1. Ingresa "viajes" en el cuadro de búsqueda y haz clic en BUSCAR.
  2. Seleccione BigQuery en la sección Sistemas para excluir los recursos de datos con el mismo nombre que pertenecen a otros sistemas.
  3. Selecciona el ID del proyecto en la sección Proyectos para excluir los recursos de datos de otros proyectos. Si no se muestra su proyecto en la sección, haga clic en AGREGAR PROYECTO y selecciónelo en la ventana de diálogo.
  4. Seleccione la Plantilla de etiqueta de demostración en la sección Etiquetas para ver si se adjunta una etiqueta que usa esta plantilla a la tabla "trips". Si esta plantilla no aparece en la sección, haga clic en el menú desplegable Agregar más etiquetas, búsquela y selecciónela y haga clic en Aceptar.

Con todos los filtros seleccionados, los resultados de la búsqueda deberían contener solo una entrada: la tabla "trips" de BigQuery de su proyecto con una etiqueta adjunta que use la "Plantilla de etiqueta de demostración":

Python

"""This application demonstrates how to perform search operations with the
Cloud Data Catalog API.

For more information, see the README.md under /datacatalog and the
documentation at https://cloud.google.com/data-catalog/docs.
"""

import argparse

def search(organization_id, search_string):
    """Searches Data Catalog entries for a given organization."""
    from google.cloud import datacatalog_v1

    datacatalog = datacatalog_v1.DataCatalogClient()

    scope = datacatalog_v1.types.SearchCatalogRequest.Scope()
    scope.include_org_ids.append(organization_id)

    # Alternatively, search using project scopes.
    # scope.include_project_ids.append("my_project_id")

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

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter
    )

    parser.add_argument('organization_id',
                        help='Your Google Cloud organization ID')
    parser.add_argument('query', help='Your custom query')

    args = parser.parse_args()

    search_results = None

    if args.query:
        search_results = search(args.organization_id, args.query)
    else:
        raise Exception('Please provide valid search input.')

    for result in search_results:
        print(result)

Java

/*
This application demonstrates how to perform search operations with the
Cloud Data Catalog API.

For more information, see the README.md under /datacatalog and the
documentation at https://cloud.google.com/data-catalog/docs.
*/

package com.example.datacatalog;

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

public class SearchCatalog {

  public static void searchCatalog() {
    // TODO(developer): Replace these variables before running the sample.
    String orgId = "111111000000";
    String query = "type=dataset";
    searchCatalog(orgId, query);
  }

  /**
   * Search Data Catalog entries for a given organization.
   *
   * @param orgId The organization ID to which the search will be scoped, e.g. '111111000000'.
   * @param query The query, e.g. 'type:dataset'.
   */
  public static void searchCatalog(String orgId, String query) {
    // 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().addAllIncludeProjectIds("my-project").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);
      }

    } catch (Exception e) {
      System.out.print("Error during SearchCatalog:\n" + e.toString());
    }
  }
}

Node.js

.
// This application demonstrates how to perform search operations with the
// Cloud Data Catalog API.

async function search() {

  // -------------------------------
  // Import required modules.
  // -------------------------------
  const { DataCatalogClient } = require('@google-cloud/datacatalog').v1;
  const datacatalog = new DataCatalogClient();

  // -------------------------------
  // Set your Google Cloud Organization ID.
  // -------------------------------
  // TODO: Replace your organization ID in the next line.
  const organizationId = 111111000000;

  // -------------------------------
  // Set your custom query.
  // -------------------------------
  // TODO: If applicable, edit the query string in the next line.
  const query = 'type=dataset'

  // Create request.
  const scope = {
    includeOrgIds: [organizationId],
    // Alternatively, search using project scopes.
    // includeProjectIds: ['my-project'],
  };

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

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

search().then(response => { console.log(response) });

LÍNEA DE REST Y CMD

Si no tienes acceso a las bibliotecas cliente de Cloud en tu idioma o quieres probar la API con solicitudes de REST, consulta los siguientes ejemplos y la documentación de la API de REST de Data Catalog.

1. Buscar en el catálogo

Antes de usar cualquiera de los datos de solicitud siguientes, realiza los siguientes reemplazos:

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, expande una de estas opciones:

Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

{
  "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"
    }
  ]
}