Coletando Arquivos do Serviço Object Storage como Entidades de Dados Lógicos

Seu data lake geralmente tem muitos arquivos que representam um único conjunto de dados. As conversões de nomenclatura de arquivos indicam que vários arquivos fazem parte de uma única entidade de dados lógica.

Você pode agrupar vários arquivos de Armazenamento de Objetos em entidades de dados lógicas no catálogo de dados usando padrões de nome de arquivo. Uma entidade de dados lógica é como qualquer outra entidade de dados e pode ser usada para pesquisa e descoberta. Usando entidades de dados lógicas, você pode organizar o conteúdo do data lake de forma significativa e evitar a explosão de entidades de dados e atributos no catálogo de dados.

Tarefas típicas que você executa enquanto coleta arquivos do Object Storage como entidades de dados lógicas:

  1. Crie um padrão.
  2. Atribua o padrão a um ativo de dados de Armazenamento de Objetos.
  3. Colete o ativo de dados.
  4. Exiba as entidades de dados lógicas coletadas.

Noções Básicas sobre Entidades de Dados Lógicas

Considere o seguinte conjunto de arquivos:

myserv/20191205_yny_myIOTSensor.json
myserv/20191105_yny_myIOTSensor.json
myserv/20191005_yny_myIOTSensor.json
myserv/20190905_yny_myIOTSensor.json
myserv/20191005_hyd_my2ndIOTSensor.json
myserv/20190905_hyd_my2ndIOTSensor.json
myserv/20191005_bom_my3rdIOTSensor.json
myserv/20190905_bom_my3rdIOTSensor.json
myserv/somerandomfile_2019AUG05.json

Se você coletar esses arquivos na origem de dados do Oracle Object Storage sem criar padrões de nome de arquivo, o serviço Data Catalog criará nove entidades de dados individuais no catálogo de dados. Imagine essa situação com centenas de arquivos em sua origem de dados, resultando em centenas de entidades de dados em seu catálogo de dados.

Usando padrões de nome de arquivo, você pode agrupar o conjunto de arquivos de exemplos em entidades de dados lógicas. Todos os arquivos que não forem correspondidos serão criados como outras entidades de dados do tipo Arquivo.
myserv/20191205_yny_myIOTSensor.json
myserv/20191105_yny_myIOTSensor.json
myserv/20191005_yny_myIOTSensor.json
myserv/20190905_yny_myIOTSensor.json
myserv/20191005_hyd_my2ndIOTSensor.json
myserv/20190905_hyd_my2ndIOTSensor.json
myserv/20191005_bom_my3rdIOTSensor.json
myserv/20190905_bom_my3rdIOTSensor.json
myserv/somerandomfile_2019AUG05.json

Noções Básicas sobre Expressões

No serviço Data Catalog, um padrão de nome de arquivo é definido usando expressões.

Uma expressão pode ter um ou mais componentes que você separa usando um delimitador. Cada componente especifica uma regra de correspondência para o padrão. Os padrões de nome de arquivo são criados usando expressões regulares Java. Especifique a expressão regular que deverá ser usada para agrupar seus arquivos em entidades de dados lógicas obrigatórias.

Você pode especificar qualificadores que são usados ao fazer parsing da expressão. Você pode usar os seguintes qualificadores:

  • bucketName: Use este qualificador para especificar que o nome do bucket deve ser derivado do caminho que corresponde à expressão em questão. O qualificador bucketName é usado apenas uma vez na expressão e sempre como primeiro componente da expressão. O valor do qualificador bucketName pode ser um texto estático ou uma expressão.
  • logicalEntity: Use este qualificador para especificar que o nome da entidade de dados lógica deverá ser derivado do caminho que corresponde à expressão em questão. Você pode usar logicalEntity várias vezes em uma expressão. Os valores do qualificador logicalEntity podem consistir em texto estático ou expressões.
Exemplos de Entidades de Dados Lógicas

Considere os seguintes nomes de arquivo:

bling_metering/1970120520_yny_hourly_region_res_delayed.json
bling_metering/1973110523_yny_hourly_region_res_delayed.json
bling_metering/1988101605_hyd_daily_region_res_delayed.json
bling_metering/1991042302_yny_hourly_region_res_delayed.json
bling_metering/2019073019_zrh_daily_region_res_delayed.json
bling_metering/2019073020_zrh_monthly_region_res_delayed.json
bling_metering/some_random_file_123.json
Expressão com um qualificador logicalEntity

Para derivar entidades de dados lógicas com base na frequência (por hora, por dia, mensal) mencionadas no nome do arquivo, você pode usar a seguinte expressão de padrão:

{bucketName:bling_metering}/[0-9]*_[a-z]*_{logicalEntity:[a-z]*}_.*.json

Essa expressão usa os qualificadores bucketName e logicalEntity. Neste exemplo, [0-9]* corresponde a qualquer número, [a-z]* a qualquer letra minúscula e.* a qualquer caractere. A expressão resulta nas seguintes entidades de dados lógicas:

  1. bling_metering_monthly
    bling_metering/2019073020_zrh_monthly_region_res_delayed.json
  2. bling_metering_hourly
    bling_metering/1970120520_yny_hourly_region_res_delayed.json
    bling_metering/1973110523_yny_hourly_region_res_delayed.json
    bling_metering/1991042302_yny_hourly_region_res_delayed.json
  3. bling_metering_daily
    bling_metering/1988101605_hyd_daily_region_res_delayed.json
    bling_metering/2019073019_zrh_daily_region_res_delayed.json

Não correspondido

bling_metering/some_random_file_123.json

Para derivar entidades de dados lógicas com base em regiões (yny, hyd, zrh) mencionadas no nome do arquivo, você pode usar uma das seguintes expressões de padrão:

{bucketName:bling_metering}/[0-9]*_{logicalEntity:yny|hyd|zrh}_[a-z]*_region_res_delayed.json
{bucketName:bling_metering}/[0-9]*_{logicalEntity:[a-z]*}_[a-z]*_.*.json

Essa expressão resulta nas seguintes entidades de dados lógicas:

  1. bling_metering_zrh
    bling_metering/2019073020_zrh_monthly_region_res_delayed.json
    bling_metering/2019073019_zrh_daily_region_res_delayed.json
  2. bling_metering_yny
    bling_metering/1970120520_yny_hourly_region_res_delayed.json
    bling_metering/1973110523_yny_hourly_region_res_delayed.json
    bling_metering/1991042302_yny_hourly_region_res_delayed.json
  3. bling_metering_hyd
    bling_metering/1988101605_hyd_daily_region_res_delayed.json
    

Não correspondido

bling_metering/some_random_file_123.json
Expressão com vários qualificadores logicalEntity

Para derivar entidades de dados lógicas com base nas regiões e na frequência (por hora, por dia, mensal) mencionadas no nome do arquivo, você pode usar a seguinte expressão de padrão:

{bucketName:bling_metering}/[0-9]*_{logicalEntity:[a-z]*}_{logicalEntity:[a-z]*}_region_res_delayed.json

A expressão acima usa bucketName e dois qualificadores logicalEntity. A expressão resulta nas seguintes entidades de dados lógicas:

  1. bling_metering_zrh_monthly
    bling_metering/2019073020_zrh_monthly_region_res_delayed.json
  2. bling_metering_hyd_daily
    bling_metering/1988101605_hyd_daily_region_res_delayed.json
  3. bling_metering_zrh_daily
    bling_metering/2019073019_zrh_daily_region_res_delayed.json
  4. bling_metering_yny_hourly
    bling_metering/1970120520_yny_hourly_region_res_delayed.json
    bling_metering/1973110523_yny_hourly_region_res_delayed.json
    bling_metering/1991042302_yny_hourly_region_res_delayed.json

Não correspondido

bling_metering/some_random_file_123.json
Expressão sem qualificador logicalEntity

Se nenhum qualificador logicalEntity for especificado, o nome do padrão de nome de arquivo será usado como nome da entidade de dados lógica. Por exemplo, considere a seguinte expressão para o padrão de nome de arquivo bling pattern:

{bucketName:bling_metering}/[0-9]*_[a-z]*_[a-z]*_.*.json

A expressão acima usa bucketName, mas nenhum qualificador logicalEntity. A expressão resulta nas seguintes entidades de dados lógicas:

  1. bling pattern
    bling_metering/2019073020_zrh_monthly_region_res_delayed.json
    bling_metering/1970120520_yny_hourly_region_res_delayed.json
    bling_metering/1973110523_yny_hourly_region_res_delayed.json
    bling_metering/1991042302_yny_hourly_region_res_delayed.json
    bling_metering/1988101605_hyd_daily_region_res_delayed.json
    bling_metering/2019073019_zrh_daily_region_res_delayed.json

Não correspondido

bling_metering/some_random_file_123.json
Observação

Quando você testa essa expressão sem qualificador logicalEntity, na entidade de dados lógica resultante, a expressão é mostrada como nome da entidade lógica. Mas na coleta, o nome do padrão de nome de arquivo é usado como nome da entidade de dados lógica.