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 par
invoice. -
Définissez un ensemble de données incluant tous les fichiers
2020dans 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-dossiersdatabrew-inputdont le nom commenceinvoicepar. -
s3://my-databrew-bucket/databrew-input/<.*>2020<.*>/fait correspondre tous les fichiers des dossiers dont2020le 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 exemple07ou03, 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 esta3abc/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, ouabc/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 que
folder/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.csvs3://databrew-dynamic-datasets/new-cases/UR/daily-report-2021-03-31.csvs3://databrew-dynamic-datasets/new-cases/US/daily-report-2021-03-30.csvs3://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 :
-
Accédez à un fichier spécifique.
-
Sélectionnez ensuite une partie variable, comme une date, et remplacez-la par un paramètre. Dans ce cas, remplacez une date.
-
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.
-
Choisissez Créer.
Après cela, le chemin mis à jour s'affiche, comme dans la capture d'écran suivante.
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.
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.
| 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.
| 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. |
| 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 |
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 |
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 |
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 |
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 ».
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.