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 :

  1. Créer un modèle
  2. Affecter le modèle à une ressource de données Object Storage
  3. Collecter la ressource de données
  4. Afficher les entités de données logiques collectées

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.

Vous pouvez vous servir de modèles de nom de fichier  pour regrouper l'ensemble de fichiers d'exemple en entités de données logiques. Tous les fichiers sans correspondance sont créés en tant qu'entités de données de type fichier distinctes.
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 qualificatif bucketName n'est utilisé qu'une seule fois dans l'expression et en est toujours le premier composant. La valeur du qualificatif bucketName 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 qualificatif logicalEntity plusieurs fois dans une expression. Les valeurs du qualificatif logicalEntity peuvent être constituées de texte statique ou d'expressions.
Exemples d'entités de données logiques

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
Expression avec un seul qualificatif logicalEntity

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 :

  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

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 :

  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
    

Sans correspondance

bling_metering/some_random_file_123.json
Expression avec plusieurs qualificatifs logicalEntity

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 :

  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

Sans correspondance

bling_metering/some_random_file_123.json
Expression sans qualificatif logicalEntity

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 :

  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

Sans correspondance

bling_metering/some_random_file_123.json
Remarque

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.