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 :
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.
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 qualificatifbucketName
n'est utilisé qu'une seule fois dans l'expression, et toujours comme premier composant de l'expression. La valeur du qualificatifbucketName
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 utiliserlogicalEntity
plusieurs fois dans une expression. Les valeurs du qualificatiflogicalEntity
peuvent être constituées de texte statique ou d'expressions.
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
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 :
- 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
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 :
- 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
Non rapproché
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 bucketName
et deux qualificatifs logicalEntity
. Cette expression produit 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
Non rapproché
bling_metering/some_random_file_123.json
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 :
- 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
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.