View a markdown version of this page

Connexion de données dans plusieurs fichiers dans Amazon S3 - AWS Glue DataBrew Guide du développeur

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Connexion de données dans plusieurs fichiers dans Amazon S3

Avec la DataBrew console, vous pouvez parcourir les compartiments et les dossiers Amazon S3 et choisir un fichier pour votre ensemble de données. Cependant, un ensemble de données n'a pas besoin d'être limité à un seul fichier.

Supposons que vous disposiez d'un compartiment S3 nommé my-databrew-bucket contenant un dossier nommédatabrew-input. Dans ce dossier, supposons que vous avez plusieurs fichiers JSON, tous dotés du même format de fichier et de la même extension de .json fichier. Sur la console, vous pouvez spécifier l'URL source des3://my-databrew-bucket/databrew-input/. Sur la DataBrew console, vous pouvez ensuite choisir ce dossier. Votre ensemble de données comprend tous les fichiers JSON de ce dossier.

DataBrew peut traiter tous les fichiers d'un dossier S3, mais uniquement si les conditions suivantes sont remplies :

  • Tous les fichiers du dossier ont le même format.

  • Tous les fichiers du dossier ont la même extension de fichier.

Pour plus d'informations sur les formats de fichiers et les extensions pris en charge, consultezDataBrew input formats.

Schémas lors de l'utilisation de plusieurs fichiers en tant que jeu de données

Lorsque vous utilisez plusieurs fichiers en tant que DataBrew jeu de données, les schémas doivent être identiques dans tous les fichiers. Sinon, l'espace de travail du projet essaie automatiquement de choisir l'un des schémas parmi les multiples fichiers et essaie de conformer le reste des fichiers du jeu de données à ce schéma. En raison de ce comportement, l'affichage affiché dans Project Workspace est irrégulier et, par conséquent, le résultat du travail sera également irrégulier.

Si vos fichiers doivent avoir des schémas différents, vous devez créer plusieurs ensembles de données et les profiler séparément.

Utilisation de chemins paramétrés pour Amazon S3

Dans certains cas, vous souhaiterez peut-être créer un ensemble de données contenant des fichiers respectant une certaine convention de dénomination, ou un ensemble de données pouvant couvrir plusieurs dossiers Amazon S3. Vous pouvez également réutiliser le même ensemble de données pour des données structurées de manière identique qui sont générées périodiquement dans un emplacement S3 avec un chemin qui dépend de certains paramètres. Un chemin nommé d'après la date de production des données en est un exemple.

DataBrew prend en charge cette approche avec des chemins S3 paramétrés. Un chemin paramétré est une URL Amazon S3 contenant des expressions régulières ou des paramètres de chemin personnalisés, ou les deux.

Définition d'un ensemble de données avec un chemin S3 à l'aide d'expressions régulières

Les expressions régulières dans le chemin peuvent être utiles pour faire correspondre plusieurs fichiers d'un ou de plusieurs dossiers tout en filtrant les fichiers non liés présents dans ces dossiers.

Voici quelques exemples :

  • Définissez un ensemble de données comprenant tous les fichiers JSON d'un dossier dont le nom commence parinvoice.

  • Définissez un ensemble de données incluant tous les fichiers 2020 dans des dossiers portant leur nom.

Vous pouvez implémenter ce type d'approche en utilisant des expressions régulières dans le chemin S3 d'un ensemble de données. Ces expressions régulières peuvent remplacer n'importe quelle sous-chaîne de la clé de l'URL S3 (mais pas le nom du compartiment).

À titre d'exemple de clé dans une URL S3, reportez-vous à ce qui suit. my-bucketVoici le nom du compartiment, US East (Ohio) la AWS région et puppy.png le nom clé.

https://my-bucket.s3.us-west-2.amazonaws.com/puppy.png

Dans un chemin S3 paramétré, tous les caractères entre deux crochets (<et>) sont traités comme des expressions régulières. Voici deux exemples :

  • s3://my-databrew-bucket/databrew-input/invoice<.*>/data.jsoncorrespond à tous les fichiers nommésdata.json, dans tous les sous-dossiers databrew-input dont le nom commence invoice par.

  • s3://my-databrew-bucket/databrew-input/<.*>2020<.*>/fait correspondre tous les fichiers des dossiers dont 2020 le nom est indiqué.

Dans ces exemples, .* correspond à zéro caractère ou plus.

Note

Vous ne pouvez utiliser des expressions régulières que dans la partie clé du chemin S3, c'est-à-dire la partie qui suit le nom du compartiment. Donc, s3://my-databrew-bucket/<.*>-input/ c'est valide, mais ne l's3://my-<.*>-bucket/<.*>-input/est pas.

Nous vous recommandons de tester vos expressions régulières pour vous assurer qu'elles correspondent uniquement aux URL S3 que vous souhaitez, et non à celles que vous ne souhaitez pas.

Voici d'autres exemples d'expressions régulières :

  • <\d{2}>correspond à une chaîne composée exactement de deux chiffres consécutifs, par exemple 07 ou03, mais non1a2.

  • <[a-z]+.*>correspond à une chaîne qui commence par une ou plusieurs lettres latines minuscules et qui est suivie de zéro ou de plusieurs autres caractères. Un exemple est a3abc/def, oua-z, mais nonA2.

  • <[^/]+>correspond à une chaîne contenant tous les caractères à l'exception d'une barre oblique (/). Dans une URL S3, des barres obliques sont utilisées pour séparer les dossiers du chemin.

  • <.*=.*>correspond à une chaîne contenant un signe égal (=), par exemplemonth=02, ou abc/day=2=10, mais nontest.

  • <\d.*\d>correspond à une chaîne qui commence et se termine par un chiffre et qui peut contenir n'importe quel autre caractère entre les chiffres1abc2, par exemple01-02-03, ou2020/Jul/21, mais pas123a.

Définition d'un ensemble de données avec un chemin S3 à l'aide de paramètres personnalisés

La définition d'un jeu de données paramétré à l'aide de paramètres personnalisés présente des avantages par rapport à l'utilisation d'expressions régulières lorsque vous souhaitez fournir des paramètres pour un emplacement S3 :

  • Vous pouvez obtenir les mêmes résultats qu'avec une expression régulière, sans avoir besoin de connaître la syntaxe des expressions régulières. Vous pouvez définir des paramètres en utilisant des termes courants tels que « commence par » et « contient ».

  • Lorsque vous définissez un jeu de données dynamique à l'aide des paramètres du chemin, vous pouvez inclure une plage de temps dans votre définition, telle que « le mois dernier » ou « les 24 dernières heures ». Ainsi, la définition de votre jeu de données sera utilisée ultérieurement avec les nouvelles données entrantes.

Voici quelques exemples de situations dans lesquelles vous souhaiterez peut-être utiliser des ensembles de données dynamiques :

  • Pour connecter plusieurs fichiers partitionnés en fonction de la date de dernière mise à jour ou d'autres attributs significatifs en un seul jeu de données. Vous pouvez ensuite capturer ces attributs de partition sous forme de colonnes supplémentaires dans un ensemble de données.

  • Limiter les fichiers d'un ensemble de données aux emplacements S3 qui répondent à certaines conditions. Supposons, par exemple, que votre chemin S3 contienne des dossiers basés sur des dates tels quefolder/2021/04/01/. Dans ce cas, vous pouvez paramétrer la date et la limiter à une certaine plage, comme « entre le 1er mars 2021 et le 1er avril 2021 » ou « La semaine dernière ».

Pour définir un chemin à l'aide de paramètres, définissez les paramètres et ajoutez-les à votre chemin en utilisant le format suivant :

s3://my-databrew-bucket/some-folder/{parameter1}/file-{parameter2}.json

Note

Comme pour les expressions régulières dans un chemin S3, vous ne pouvez utiliser des paramètres que dans la partie clé du chemin, c'est-à-dire la partie qui suit le nom du compartiment.

Deux champs sont obligatoires dans la définition d'un paramètre, le nom et le type. Le type peut être String, Number ou Date. Les paramètres de type Date doivent avoir une définition du format de date afin de DataBrew pouvoir interpréter et comparer correctement les valeurs de date. Vous pouvez éventuellement définir des conditions de correspondance pour un paramètre. Vous pouvez également choisir d'ajouter les valeurs correspondantes d'un paramètre sous forme de colonne à votre ensemble de données lorsqu'il est chargé par une DataBrew tâche ou une session interactive.

Exemple

Prenons un exemple de définition d'un jeu de données dynamique à l'aide de paramètres dans la DataBrew console. Dans cet exemple, supposons que les données d'entrée soient régulièrement écrites dans un compartiment S3 à l'aide d'emplacements tels que ceux-ci :

  • s3://databrew-dynamic-datasets/new-cases/UR/daily-report-2021-03-30.csv

  • s3://databrew-dynamic-datasets/new-cases/UR/daily-report-2021-03-31.csv

  • s3://databrew-dynamic-datasets/new-cases/US/daily-report-2021-03-30.csv

  • s3://databrew-dynamic-datasets/new-cases/US/daily-report-2021-03-31.csv

Il y a deux parties dynamiques ici : un code de pays, comme États-Unis, et une date dans le nom du fichier, comme 2021-03-30. Ici, vous pouvez appliquer la même recette de nettoyage pour tous les fichiers. Supposons que vous souhaitiez effectuer votre travail de nettoyage tous les jours. Voici comment définir un chemin paramétré pour ce scénario :

  1. Accédez à un fichier spécifique.

  2. Sélectionnez ensuite une partie variable, comme une date, et remplacez-la par un paramètre. Dans ce cas, remplacez une date.

    Le chemin S3 avec la date du 23 mars 2021 est surligné pour être remplacé par un paramètre.
  3. Ouvrez le menu contextuel (clic droit) pour créer un paramètre personnalisé et définissez ses propriétés :

    • Nom : date du rapport

    • Type : date

    • Format de date : yyyy- MM-dd (sélectionné parmi les formats prédéfinis)

    • Conditions (plage horaire) : 24 heures passées

    • Ajouter en tant que colonne : vrai (coché)

    Conservez les valeurs par défaut des autres champs.

  4. Choisissez Créer.

Après cela, le chemin mis à jour s'affiche, comme dans la capture d'écran suivante.

Chemin S3 avec espace réservé aux paramètres indiquant les 6 fichiers correspondants trouvés dans le compartiment.

Vous pouvez maintenant faire de même pour le code de pays et le paramétrer comme suit :

  • Nom : code du pays

  • Type : Chaîne

  • Ajouter en tant que colonne : vrai (coché)

Il n'est pas nécessaire de spécifier des conditions si toutes les valeurs sont pertinentes. Dans le new-cases dossier, par exemple, nous n'avons que des sous-dossiers contenant des codes de pays, il n'est donc pas nécessaire de définir des conditions. Si vous deviez exclure d'autres dossiers, vous pouvez utiliser la condition suivante.

Champ de valeur de chaîne contenant le modèle regex A-Z suivi de 2 entre crochets.

Cette approche limite les sous-dossiers des nouvelles affaires à deux caractères latins majuscules.

Après ce paramétrage, vous n'avez que les fichiers correspondants dans notre jeu de données et vous pouvez choisir Create Dataset.

Note

Lorsque vous utilisez des plages de temps relatives dans des conditions, celles-ci sont évaluées lors du chargement du jeu de données. Cela est vrai qu'il s'agisse de plages de temps prédéfinies telles que « 24 dernières heures » ou de plages de temps personnalisées telles que « il y a 5 jours ». Cette approche d'évaluation s'applique que l'ensemble de données soit chargé lors de l'initialisation d'une session interactive ou lors du démarrage d'une tâche.

Une fois que vous avez sélectionné Create Dataset, votre jeu de données dynamique est prêt à être utilisé. Par exemple, vous pouvez d'abord l'utiliser pour créer un projet et définir une recette de nettoyage à l'aide d'une DataBrew session interactive. Vous pouvez ensuite créer une tâche dont l'exécution est planifiée tous les jours. Cette tâche peut appliquer la recette de nettoyage aux fichiers de jeux de données qui répondent aux conditions de vos paramètres au moment du démarrage de la tâche.

Conditions prises en charge pour les ensembles de données dynamiques

Vous pouvez utiliser des conditions pour filtrer les fichiers S3 correspondants à l'aide de paramètres ou de l'attribut de date de dernière modification.

Vous trouverez ci-dessous la liste des conditions prises en charge pour chaque type de paramètre.

Conditions utilisées avec les paramètres String
Nom dans le DataBrew SDK Synonymes du SDK Nom dans la DataBrew console Description

est

éq, ==

C'est exactement

La valeur du paramètre est identique à la valeur fournie dans la condition.

n'est pas

pas EQ, ! =

Is not (N’est pas)

La valeur du paramètre n'est pas la même que celle fournie dans la condition.

contient

Contains

La valeur de chaîne du paramètre contient la valeur fournie dans la condition.

ne contient pas

Ne contient pas

La valeur de chaîne du paramètre ne contient pas la valeur fournie dans la condition.

commence_par

Starts with

La valeur de chaîne du paramètre commence par la valeur fournie dans la condition.

ne commence pas par

Ne commence pas par

La valeur de chaîne du paramètre ne commence pas par la valeur fournie dans la condition.

se termine_par

Termine par

La valeur de chaîne du paramètre se termine par la valeur fournie dans la condition.

ne se termine pas par

Ne se termine pas par

La valeur de chaîne du paramètre ne se termine pas par la valeur fournie dans la condition.

allumettes

Correspondance

La valeur du paramètre correspond à l'expression régulière fournie dans la condition.

ne correspond pas

Ne correspond pas

La valeur du paramètre ne correspond pas à l'expression régulière fournie dans la condition.

Note

Toutes les conditions relatives aux paramètres de chaîne utilisent la comparaison entre majuscules et minuscules. Si vous n'êtes pas sûr du cas utilisé dans un chemin S3, vous pouvez utiliser la condition « matches » avec une valeur d'expression régulière commençant par(?i). Cela permet d'effectuer une comparaison qui ne fait pas la distinction majuscules/majuscules.

Supposons, par exemple, que vous souhaitiez que votre paramètre de chaîne commence parabc, mais ABC que cela Abc soit également possible. Dans ce cas, vous pouvez utiliser la condition « correspond » (?i)^abc comme valeur de condition.

Conditions utilisées avec les paramètres numériques
Nom dans le DataBrew SDK Synonymes du SDK Nom dans la DataBrew console Description

est

éq, ==

C'est exactement

La valeur du paramètre est identique à la valeur fournie dans la condition.

n'est pas

pas EQ, ! =

Is not (N’est pas)

La valeur du paramètre n'est pas la même que celle fournie dans la condition.

inférieur_que

lt, <

Inférieur à

La valeur numérique du paramètre est inférieure à la valeur fournie dans la condition.

moins_que_égal

Oui, <=

Inférieur ou égal à

La valeur numérique du paramètre est inférieure ou égale à la valeur fournie dans la condition.

supérieur_que

gt, >

Supérieur à

La valeur numérique du paramètre est supérieure à la valeur fournie dans la condition.

supérieur à l'égal

lit, >=

Supérieur ou égal à

La valeur numérique du paramètre est supérieure ou égale à la valeur fournie dans la condition.

Conditions utilisées avec les paramètres de date
Nom dans le DataBrew SDK Nom dans la DataBrew console Format de valeur de condition (SDK) Description

after

Démarrer

Format de date ISO 8601 comme ou 2021-03-30T01:00:00Z 2021-03-30T01:00-07:00

La valeur du paramètre de date est postérieure à la date indiquée dans la condition.

before

Fin

Format de date ISO 8601 comme ou 2021-03-30T01:00:00Z 2021-03-30T01:00-07:00

La valeur du paramètre de date est antérieure à la date indiquée dans la condition.

relative_après

Début (relatif)

Nombre d'unités de temps positif ou négatif, comme -48h ou+7d.

La valeur du paramètre de date est postérieure à la date relative spécifiée dans la condition.

Les dates relatives sont évaluées lorsque l'ensemble de données est chargé, soit lorsqu'une session interactive est initialisée, soit lorsqu'une tâche associée est démarrée. C'est le moment appelé « maintenant » dans les exemples.

relative_avant

Fin (relative)

Nombre d'unités de temps positif ou négatif, comme -48h ou+7d.

La valeur du paramètre de date est antérieure à la date relative spécifiée dans la condition.

Les dates relatives sont évaluées lorsque l'ensemble de données est chargé, soit lorsqu'une session interactive est initialisée, soit lorsqu'une tâche associée est démarrée. C'est le moment appelé « maintenant » dans les exemples.

Si vous utilisez le SDK, fournissez des dates relatives au format suivant :±{number_of_time_units}{time_unit}. Vous pouvez utiliser les unités de temps suivantes :

  • -1h (il y a 1 heure)

  • +2d (dans 2 jours)

  • -120m (il y a 120 minutes)

  • 5000 s (5 000 secondes dans 5 000 secondes)

  • -3w (il y a 3 semaines)

  • +4M (dans 4 mois)

  • -1y (il y a 1 an)

Les dates relatives sont évaluées lorsque l'ensemble de données est chargé, soit lorsqu'une session interactive est initialisée, soit lorsqu'une tâche associée est démarrée. C'est le moment appelé « maintenant » dans les exemples précédents.

Configuration des paramètres pour les ensembles de données dynamiques

Outre le fait de fournir un chemin S3 paramétré, vous pouvez configurer d'autres paramètres pour les ensembles de données contenant plusieurs fichiers. Ces paramètres filtrent les fichiers S3 en fonction de leur date de dernière modification et limitent le nombre de fichiers.

Comme pour définir un paramètre de date dans un chemin, vous pouvez définir une plage de temps pendant laquelle les fichiers correspondants ont été mis à jour et inclure uniquement ces fichiers dans votre ensemble de données. Vous pouvez définir ces plages en utilisant soit des dates absolues telles que « 30 mars 2021 », soit des plages relatives telles que « 24 dernières heures ».

La case Spécifier la dernière plage de dates mise à jour est cochée dans le menu déroulant des dernières 24 heures.

Pour limiter le nombre de fichiers correspondants, sélectionnez un nombre de fichiers supérieur à 0 et indiquez si vous voulez les fichiers correspondants les plus récents ou les plus anciens.

Case à cocher sélectionnée pour Spécifier le nombre de fichiers à inclure dans la liste déroulante Dernière version et 10 fichiers.