Collecte de fichiers Object Storage en tant qu'entités de données logiques
Votre lac de données contient généralement de nombreux fichiers qui représentent un seul ensemble de données. Les conversions de dénomination des fichiers indiquent que plusieurs fichiers appartiennent à une même entité de données logique.
Vous pouvez regrouper plusieurs fichiers Object Storage en entités de données logiques dans le catalogue de données à l'aide de modèles de nom de fichier . Une entité de données logique s'apparente à toute autre entité de données et peut être utilisée à des fins de recherche et de repérage. Vous pouvez utiliser les entités de données logiques pour organiser le contenu de votre lac de données de façon claire et empêcher la multiplication des entités de données et des attributs dans votre catalogue de données.
Voici les tâches standard que vous effectuez lorsque vous collectez des fichiers Object Storage en tant qu'entités de données logiques :
Présentation des entités de données logiques
Prenons pour exemple l'ensemble de fichiers suivant :
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 vous collectez ces fichiers dans votre source de données Oracle Object Storage sans créer de modèle de nom de fichier , Data Catalog crée neuf entités de données distinctes dans votre catalogue de données. Imaginez cette situation avec une source de données contenant des centaines de fichiers. Des centaines d'entités de données seraient générées.
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
Présentation des expressions
Dans Data Catalog, un modèle de nom de fichier est défini à l'aide d'expressions.
Une expression peut comporter plusieurs composants séparés à l'aide d'un délimiteur. Chaque composant définit une règle de correspondance pour le modèle. Les modèles de nom de fichier sont créés à l'aide d'expressions régulières Java. Vous devez indiquer l'expression régulière à utiliser pour regrouper vos fichiers dans les entités de données logiques requises.
Vous pouvez indiquer des qualificatifs qui seront utilisés lors de l'analyse de l'expression. Vous pouvez utiliser les qualificatifs suivants :
bucketName
: utilisez ce qualificatif pour indiquer que le nom du bucket doit être dérivé à partir du chemin correspondant à l'expression donnée. Le qualificatifbucketName
n'est utilisé qu'une seule fois dans l'expression et en est toujours le premier composant. La valeur du qualificatifbucketName
peut être un texte statique ou une expression.logicalEntity
: utilisez ce qualificatif pour indiquer que le nom de l'entité de données logique doit être dérivé à partir du chemin correspondant à l'expression donnée. Vous pouvez utiliser le qualificatiflogicalEntity
plusieurs fois dans une expression. Les valeurs du qualificatiflogicalEntity
peuvent être constituées de texte statique ou d'expressions.
Prenons pour exemple les noms de fichier suivants :
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
Pour dériver des entités de données logiques en fonction de la fréquence (horaire, quotidienne, mensuelle) mentionnée dans le nom du fichier, vous pouvez utiliser l'expression de modèle suivante :
{bucketName:bling_metering}/[0-9]*_[a-z]*_{logicalEntity:[a-z]*}_.*.json
Cette expression utilise les qualificatifs bucketName
et logicalEntity
. Dans cet exemple, [0-9]*
correspond à n'importe quel nombre, [a-z]*
correspond à n'importe quelle lettre minuscule et .*
correspond à n'importe quel caractère. L'expression génère les entités de données logiques suivantes :
- 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
Sans correspondance
bling_metering/some_random_file_123.json
Pour dériver des entités de données logiques en fonction des régions (yny, hyd, zrh) mentionnées dans le nom de fichier, vous pouvez utiliser l'une des expressions de modèle suivantes :
{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
Cette expression génère les entités de données logiques suivantes :
- 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
Sans correspondance
bling_metering/some_random_file_123.json
Pour dériver des entités de données logiques en fonction des régions et de la fréquence (horaire, quotidienne, mensuelle) mentionnées dans le nom de fichier, vous pouvez utiliser l'expression de modèle suivante :
{bucketName:bling_metering}/[0-9]*_{logicalEntity:[a-z]*}_{logicalEntity:[a-z]*}_region_res_delayed.json
L'expression ci-dessus utilise le qualificatif bucketName
, ainsi que deux qualificatifs logicalEntity
. L'expression génère les entités de données logiques suivantes :
- 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
Sans correspondance
bling_metering/some_random_file_123.json
Si aucun qualificatif logicalEntity
n'est indiqué, le nom du modèle de nom de fichier est utilisé comme nom de l'entité de données logique. Par exemple, prenons l'expression suivante pour le modèle de nom de fichier bling pattern
:
{bucketName:bling_metering}/[0-9]*_[a-z]*_[a-z]*_.*.json
L'expression ci-dessus utilise le qualificatif bucketName
, mais aucun qualificatif logicalEntity
. L'expression génère les entités de données logiques suivantes :
- 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
Sans correspondance
bling_metering/some_random_file_123.json
Lorsque vous testez cette expression sans qualificatif
logicalEntity
, l'expression est affichée en tant que nom de l'entité de données logique qui en résulte. En revanche, lors de la collecte, le nom du modèle de nom de fichier est utilisé en tant que nom de l'entité de données logique.