Collecte de fichiers de stockage d'objets 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 jeu de données. Les conventions d'attribution de nom de fichier indiquent que plusieurs fichiers font partie d'une entité de données logique.

Vous pouvez regrouper plusieurs fichiers de stockage d'objets dans des 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, comme toute autre entité de données, peut être utilisée pour la recherche et la détection. À l'aide d'entités de données logiques, vous pouvez organiser le contenu de votre lac de données de manière pertinente et éviter que le nombre d'entités de données et d'attributs dans votre catalogue de données soit trop élevé.

Tâches types effectuées lors de la collecte des fichiers de stockage d'objets 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 de stockage d'objets.
  3. Collectez la ressource de données.
  4. Consulter les entités de données logiques collectées.

Présentation des entités de données logiques

Prenons l'exemple de 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 du service de stockage d'objets Oracle sans créer de modèles de nom de fichier , le catalogue de données crée neuf entités de données individuelles dans votre catalogue de données. Imaginez cette situation avec des centaines de fichiers dans votre source de données, entraînant la présence de centaines d'entités de données dans votre catalogue de données.

L'utilisation de modèles de nom de fichier  vous permet de regrouper l'exemple de jeu de fichiers dans des entités de données logiques. Tous les fichiers sans correspondance sont créés en tant qu'entités de données distinctes de type fichier.
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 le catalogue de données, un modèle de nom de fichier est défini à l'aide d'expressions.

Une expression peut comporter un ou plusieurs composants séparés par un délimiteur. Chaque composant spécifie 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 spécifiez l'expression régulière qui doit être utilisée pour regrouper vos fichiers dans les entités de données logiques requises.

Vous pouvez spécifier des qualificatifs à utiliser lors de l'analyse de l'expression. Vous pouvez utiliser les qualificatifs suivants :

  • bucketName : Utilisez ce qualificatif pour spécifier que le nom du seau soit dérivé du chemin correspondant à l'expression donnée. Le qualificatif bucketName n'est utilisé qu'une seule fois dans l'expression, et toujours comme premier composant de l'expression. La valeur du qualificatif bucketName peut être un texte statique ou une expression.
  • logicalEntity : Utilisez ce qualificatif pour spécifier que le nom de l'entité de données logique soit dérivé du chemin correspondant à l'expression donnée. Vous pouvez utiliser 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 les exemples de 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 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 de 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 de l'alphabet et .* correspond à n'importe quel caractère. Cette expression produit 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

Non rapproché

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 produit 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
    

Non rapproché

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 bucketName et deux qualificatifs logicalEntity. Cette expression produit 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

Non rapproché

bling_metering/some_random_file_123.json
Expression sans qualificatif logicalEntity

Si aucun qualificatif logicalEntity n'est spécifié, le nom de modèle de nom de fichier est utilisé comme nom d'entité de données logique. Prenons l'exemple de 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. Cette expression produit 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

Non rapproché

bling_metering/some_random_file_123.json
Note

Lorsque vous testez cette expression sans qualificatif logicalEntity, dans l'entité de données logique résultante, l'expression est utilisée comme nom de l'entité logique. Mais lors de la collecte, le nom du modèle de nom de fichier est utilisé comme nom de l'entité de données logique.