Como pesquisar com o Data Catalog

Neste documento, explicamos como é possível usar o Data Catalog para realizar uma pesquisa de recursos de dados, como:

  • Conjuntos de dados, tabelas, visualizações e modelos do BigQuery
  • Streams de dados do Pub/Sub
  • Serviços do metastore, bancos de dados e tabelas do Dataproc
  • Modelos de tag do Data Catalog, grupos de entrada e entradas personalizadas
  • Recursos em silos de dados corporativos conectados ao Data Catalog

Escopo de pesquisa

Os resultados da pesquisa podem ser diferentes para usuários com permissões distintas. Os resultados da pesquisa do Data Catalog são definidos de acordo com o papel do IAM e as permissões do usuário.

Por exemplo, se um usuário tiver acesso de leitura de metadados do BigQuery a um objeto, esse objeto aparecerá nos resultados de pesquisa do Data Catalog. Para pesquisar uma tabela, você precisa da permissão bigquery.tables.get para ela. Para pesquisar um conjunto de dados, você precisa da permissão bigquery.tables.get para ele. O papel de Leitor de metadados do BigQuery (roles/bigquery.metadataViewer) inclui as permissões de leitura mínimas de metadados necessárias para um conjunto de dados, uma tabela ou uma visualização para aparecer nos resultados da pesquisa.

A mesma lógica de acesso se aplica a todos os sistemas compatíveis no momento, como o Pub/Sub e o próprio Data Catalog.

Tabelas fragmentadas por data

O Data Catalog agrega tabelas fragmentadas por data em uma única entrada lógica. Essa entrada tem o mesmo esquema que o fragmento da tabela com a data mais recente e contém informações agregadas sobre o número total de fragmentos. A entrada deriva o nível de acesso dela usando o conjunto de dados a que ela pertence. A pesquisa do Data Catalog mostrará essas entradas lógicas somente se o usuário tiver acesso ao conjunto de dados que as contém. Tabelas individuais fragmentadas por data não serão visíveis na pesquisa do Data Catalog, mesmo que estejam presentes no Data Catalog e possam ser marcadas.

Como pesquisar recursos de dados

Console

  1. Para pesquisar recursos de dados, abra a página inicial do Data Catalog no Console do Google Cloud e insira uma consulta de pesquisa.
  2. Quando você clicarPESQUISA ou fazer uma seleção naExplorar recursos de dados quantoDicas de pesquisa na página inicial do Data Catalog, oPesq. abrir. Se você fez uma seleção nos painéis na página inicial, isso vai para a expressão na caixa de pesquisa para qualificar sua pesquisa.
  3. Também é possível filtrar os resultados da pesquisa fazendo seleções no painel Filtros à esquerda.

Filtros

Com os filtros, você pode restringir os resultados da pesquisa. Todos os filtros são agrupados em seções:

  • Sistemas, como BigQuery, Pub/Sub, metastore do Dataproc, sistemas personalizados e o próprio Data Catalog.

  • Tipos de dados, como streams de dados, conjuntos de dados, conjuntos de arquivos, modelos, tabelas, visualizações, serviços, bancos de dados e tipos personalizados.

  • Projetos lista todos os projetos disponíveis para você.

  • Tags: lista todos os modelos de tag disponíveis para você.

  • Os conjuntos de dados vêm do BigQuery.

A seção Tags mostra os modelos de tag para filtragem. Um modelo selecionado filtra recursos de dados com tags que usam o modelo escolhido. Se nenhuma entrada tiver essas tags, todos os resultados de pesquisa serão excluídos, mesmo que a consulta de pesquisa original corresponda a algumas entradas.

Todos os conjuntos de filtros, exceto Tags, serão atualizados dependendo da alteração da consulta de pesquisa. Os filtros são preenchidos usando uma amostra dos resultados da pesquisa atual. Portanto, todo o conjunto de resultados da pesquisa pode incluir entradas que correspondem à consulta atual. No entanto, os filtros que correspondem a essas entradas podem não ser exibidos no painel Filtros.

Você pode adicionar manualmente os seguintes filtros:

  • Em Projetos, um filtro de projeto pode clicar no botão ADICIONAR PROJETO, pesquisar um projeto específico, selecioná-lo e clicar em ABRIR.
  • Em Tags, um filtro de modelo de tag clicando na lista suspensa Adicionar mais tags, pesquisando um modelo específico, selecionando-o e clicando em OK para começar.

Além disso, você pode:

  • Marque Incluir conjuntos de dados públicos para pesquisar recursos de dados disponíveis publicamente no Google Cloud, além dos recursos disponíveis para você.
  • Retorne à experiência de pesquisa antiga clicando no botão correspondente no canto superior direito. A experiência antiga oferece uma filtragem mais simples.

Exemplo de pesquisa

Por exemplo, vamos procurar a tabela "trips" que você configurou no Guia de início rápido para marcar tabelas:

  1. Digite "viagens" na caixa de pesquisa e clique em Pesquisar.
  2. Selecione BigQuery na seção Sistemas para excluir recursos de dados com o mesmo nome que pertencem a outros sistemas.
  3. Selecione o ID do projeto na seção Projetos para excluir recursos de dados de outros projetos. Caso seu projeto não seja mostrado na seção, clique em ADICIONAR PROJETO e selecione-o na janela de diálogo.
  4. Selecione o Modelo de tag de demonstração na seção Tags para ver se uma tag que usa esse modelo está anexada à tabela "viagens". Se esse modelo não for exibido na seção, clique na lista suspensa Adicionar mais tags, encontre e selecione-o e clique em OK.

Com todos os filtros selecionados, os resultados da pesquisa devem conter apenas uma entrada: a tabela "trips" do BigQuery no seu projeto com uma tag anexada que usa o "Modelo de tag de demonstração".

Além disso, há outras possibilidades:

  1. Filtre sua pesquisa adicionando keyword:value aos termos de pesquisa na caixa de pesquisa:

    KeywordDescrição
    name: Corresponder a um nome de recurso de dados
    column: Corresponder ao nome de coluna ou ao nome de coluna aninhada
    description: Corresponder à descrição de uma tabela

  2. Faça uma pesquisa de tag adicionando um dos seguintes prefixos de palavra-chave de tag aos termos de pesquisa na caixa de pesquisa:

    TagDescrição
    tag:project-name.tag_template_name Corresponde ao nome da tag.
    tag:project-name.tag_template_name.key Corresponder a uma chave de tag
    tag:project-name.tag_template_name.key:value Par de key:string value tag de correspondência

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) });

REST e LINHA DE CMD

Se você não tiver acesso às bibliotecas do Cloud Client para seu idioma ou desejar testar a API usando solicitações REST, consulte os exemplos a seguir e consulte a documentação da API REST.

1. Pesquisar no catálogo

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

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