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:
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.
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 qualificadorbucketName
é usado apenas uma vez na expressão e sempre como primeiro componente da expressão. O valor do qualificadorbucketName
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 usarlogicalEntity
várias vezes em uma expressão. Os valores do qualificadorlogicalEntity
podem consistir em texto estático ou expressões.
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
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:
- bling_metering_monthly
bling_metering/2019073020_zrh_monthly_region_res_delayed.json
- 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
- 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:
- bling_metering_zrh
bling_metering/2019073020_zrh_monthly_region_res_delayed.json bling_metering/2019073019_zrh_daily_region_res_delayed.json
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
- bling_metering_hyd
bling_metering/1988101605_hyd_daily_region_res_delayed.json
Não correspondido
bling_metering/some_random_file_123.json
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:
- bling_metering_zrh_monthly
bling_metering/2019073020_zrh_monthly_region_res_delayed.json
- bling_metering_hyd_daily
bling_metering/1988101605_hyd_daily_region_res_delayed.json
- bling_metering_zrh_daily
bling_metering/2019073019_zrh_daily_region_res_delayed.json
- 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
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:
- 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
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.