Busque recursos de datos con 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 de Data Catalog, grupos de entradas y entradas personalizadas
  • Activos en entornos 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. El alcance de los resultados de la búsqueda de Data Catalog se define según la función y los permisos de IAM del usuario.

Por ejemplo, si un usuario tiene acceso de lectura de metadatos de BigQuery a un objeto, ese objeto aparecerá en sus resultados de la búsqueda de Data Catalog. Si deseas buscar una tabla, necesitas el permiso bigquery.tables.get para esa tabla. A fin de buscar un conjunto de datos, necesitas el permiso bigquery.tables.get para ese conjunto de datos. La función de visualizador de metadatos de BigQuery (roles/bigquery.metadataViewer) incluye los permisos de lectura de metadatos mínimos requeridos para que un conjunto de datos, tabla o vista aparezca 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 fragmentadas por fecha individuales no serán visibles en la búsqueda de Data Catalog, incluso si están presentes en Data Catalog y se pueden etiquetar.

Cómo buscar recursos de datos

Console

Console

  1. Para realizar una búsqueda de los recursos de datos, abra la página principal de Data Catalog en Google Cloud Console y, luego, ingrese una búsqueda.
  2. Cuando hace clic en BUSCAR o hace una selección en los paneles Explorar recursos de datos y Sugerencias de búsqueda de la página principal de Data Catalog, la opción Buscar. Si seleccionas uno de los paneles de la página principal, este se transferirá a la expresión del cuadro de búsqueda a fin de calificar tu búsqueda.
  3. También puedes filtrar los resultados de la búsqueda haciendo selecciones en 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 Data Catalog

  • Tipos de datos, como flujos de datos, conjuntos de datos, conjuntos de archivos, modelos, tablas, vistas, servicios, bases de datos y tipos personalizados.

  • Proyectos muestra todos los proyectos disponibles para ti.

  • Etiquetas muestra una lista de todas las plantillas de etiquetas disponibles para usted.

  • Los conjuntos de datos provienen de BigQuery.

La sección Etiquetas muestra plantillas de etiquetas para filtrar. Una plantilla seleccionada filtra los recursos de datos con etiquetas que usan la plantilla que elegiste. Si ninguna entrada tiene estas etiquetas, todos los resultados de búsqueda se excluirán aunque la consulta de 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 los resultados de la búsqueda actuales. Por lo tanto, todo el conjunto de resultados de la búsqueda puede incluir entradas que coincidan con la búsqueda actual, pero es posible que los filtros correspondientes a esas entradas no se muestren en el panel Filtros.

Puedes agregar los siguientes filtros de forma manual:

  • En Proyectos, un filtro de proyecto hace clic en el botón AGREGAR PROYECTO, busca un proyecto específico, lo selecciona y hace clic en ABRIR.
  • En Etiquetas, un filtro de plantilla de etiqueta puede hacer clic en el menú desplegable Agregar más etiquetas, buscar una plantilla específica, seleccionarla y hacer clic en Aceptar. ,

Además, puedes hacer lo siguiente:

  • Marca Incluir conjuntos de datos públicos para buscar elementos de datos disponibles de forma pública en Google Cloud, además de los activos disponibles para ti.
  • Vuelve a la experiencia de búsqueda anterior. Para ello, 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, busquemos la tabla "viajes" que se 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 recursos de datos con el mismo nombre que pertenecen a otros sistemas.
  3. Seleccione el ID del proyecto en la sección Proyectos para excluir recursos de datos de otros proyectos. Si tu proyecto no aparece en la sección, haz clic en AGREGAR PROYECTO y selecciónalo en la ventana de diálogo.
  4. Seleccione la Plantilla de etiqueta de demostración en la sección Etiquetas para ver si una etiqueta que usa esta plantilla se adjunta a la tabla "viajes". Si no aparece esta plantilla en la sección, haz clic en el menú desplegable Agregar más etiquetas, búscala y selecciónala, y haz clic en Aceptar.

Con todos los filtros seleccionados, los resultados de la búsqueda deben contener solo una entrada: la tabla "viajes" de BigQuery en su proyecto con una etiqueta adjunta que utilice la "Plantilla de etiqueta de demostración".

Además, puedes hacer lo siguiente:

  1. Agrega un keyword:value a tus términos de búsqueda en el cuadro de búsqueda para filtrar tu búsqueda:

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

  2. Realice una búsqueda de etiquetas agregando uno de los siguientes prefijos de palabras 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

Java

Antes de probar esta muestra, sigue las instrucciones de configuración para Java que se encuentran en la guía de inicio rápido de Data Catalog mediante bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de Data Catalog para 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

Antes de probar esta muestra, sigue las instrucciones de configuración para Node.js que se encuentran en la guía de inicio rápido de Data Catalog mediante bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Data Catalog de 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

Antes de probar esta muestra, sigue las instrucciones de configuración para Python que se encuentran en la guía de inicio rápido de Data Catalog mediante bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de Data Catalog de 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)

LÍNEA DE REST Y CMD

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 a continuación, 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"
    }
  ]
}