Recopilación de archivos de Object Storage como entidades de datos lógicas
Normalmente, el lago de datos tiene muchos archivos que representan un único juego de datos. Las convenciones de denominación de archivos indican que varios archivos forman parte de una única entidad de datos lógica.
Puede agrupar varios archivos de Object Storage en entidades de datos lógicas en Data Catalog mediante patrones de nombre de archivo. Una entidad de datos lógica es como cualquier otra entidad de datos y se puede utilizar para la búsqueda y la detección. Mediante entidades de datos lógicas, puede organizar el contenido del lago de datos de forma significativa y evitar la explosión de atributos y entidades de datos en el catálogo de datos.
Tareas que normalmente realiza al recoger archivos de Object Storage como entidades de datos lógicas:
Entidades de datos lógicas
Imagine que tiene el siguiente juego de archivos:
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
Si recoge estos archivos en el origen de datos de Oracle Object Storage sin crear patrones de nombre de archivo, Data Catalog crea nueve entidades de datos individuales en el catálogo de datos. Imagine esta situación con cientos de archivos en el origen de datos: se crearían cientos de entidades de datos en el catálogo de datos.
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
Expresiones
En Data Catalog, un patrón de nombre de archivo se define mediante expresiones.
Una expresión puede tener uno o más componentes separados mediante un delimitador. Cada componente especifica una regla coincidente para el patrón. Los patrones de nombre de archivo se crean mediante expresiones regulares Java. Especifique la expresión regular que se debe utilizar para agrupar los archivos en las entidades de datos lógicas necesarias.
Puede especificar los calificadores que se utilizan al analizar la expresión. Puede utilizar los siguientes calificadores:
-
bucketName:
utilice este calificador para especificar que el nombre del cubo se debe derivar de la ruta que coincide con la expresión indicada. El calificadorbucketName
solo se utiliza una vez en la expresión y siempre como primer componente de la expresión. El valor del calificadorbucketName
puede ser un texto estático o una expresión. -
logicalEntity:
utilice este calificador para especificar que el nombre de la entidad de datos lógicas se debe derivar de la ruta que coincide con la expresión indicada. Puede utilizarlogicalEntity
varias veces en una expresión. Los valores del calificadorlogicalEntity
pueden ser texto estático o expresiones.
Imagine que tiene los siguientes nombres de archivo:
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 datos lógicas basadas en la frecuencia (hourly, daily, monthly) mencionada en el nombre de archivo, puede utilizar la siguiente expresión de patrón:
{bucketName:bling_metering}/[0-9]*_[a-z]*_{logicalEntity:[a-z]*}_.*.json
Esta expresión utiliza los calificadores bucketName
y logicalEntity
. En este ejemplo, [0-9]*
coincide con cualquier número; [a-z]*
coincide con cualquier letra minúscula; y.*
coincide con cualquier carácter. El resultado de la expresión son las siguientes entidades de datos 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
No coincidente
bling_metering/some_random_file_123.json
Para derivar entidades de datos lógicas basadas en las regiones (yny, hyd, zrh) mencionadas en el nombre de archivo, puede utilizar una de las dos siguientes expresiones de patrón:
{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
El resultado de esta expresión son las siguientes entidades de datos 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
No coincidente
bling_metering/some_random_file_123.json
Para derivar entidades de datos lógicas basadas en las regiones y la frecuencia (hourly, daily, monthly) mencionadas en el nombre de archivo, puede utilizar la siguiente expresión de patrón:
{bucketName:bling_metering}/[0-9]*_{logicalEntity:[a-z]*}_{logicalEntity:[a-z]*}_region_res_delayed.json
La expresión anterior utiliza un calificador bucketName
y dos calificadores logicalEntity
. El resultado de la expresión son las siguientes entidades de datos 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
No coincidente
bling_metering/some_random_file_123.json
Si no se especifica ningún calificador logicalEntity
, se utiliza el nombre del patrón de nombre de archivo como nombre de la entidad de datos lógica. Por ejemplo, imagine que existe la siguiente expresión para el patrón de nombre de archivo bling pattern
:
{bucketName:bling_metering}/[0-9]*_[a-z]*_[a-z]*_.*.json
La expresión anterior utiliza el calificador bucketName
, pero no utiliza ningún calificador logicalEntity
. El resultado de la expresión son las siguientes entidades de datos 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
No coincidente
bling_metering/some_random_file_123.json
Al probar esta expresión sin calificador
logicalEntity
, en la entidad de datos lógica resultante, la expresión se muestra como el nombre de la entidad lógica. Sin embargo, en un trabajo de recogida, el nombre del patrón de nombre de archivo se utiliza como nombre de la entidad de datos lógica.