Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Étape 2 : créer une table

Mode de mise au point
Étape 2 : créer une table - Amazon Athena

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.

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.

Maintenant que vous avez une base de données, vous pouvez créer une table Athena pour celle-ci. Le tableau que vous créez sera basé sur des exemples de données de CloudFront journal Amazon indiquant l'emplacements3://athena-examples-myregion/cloudfront/plaintext/, où se myregion trouve votre emplacement actuel Région AWS.

Les exemples de données du journal sont au format valeurs séparées par des TSV tabulations (), ce qui signifie qu'un caractère de tabulation est utilisé comme séparateur pour séparer les champs. Les données ressemblent à l'exemple suivant. Pour plus de lisibilité, les onglets de l'extrait ont été convertis en espaces et le champ final a été raccourci.

2014-07-05 20:00:09 DFW3 4260 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-1.jpeg 200 - Mozilla/5.0[...] 2014-07-05 20:00:09 DFW3 4252 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-2.jpeg 200 - Mozilla/5.0[...] 2014-07-05 20:00:10 AMS1 4261 10.0.0.15 GET eabcd12345678.cloudfront.net /test-image-3.jpeg 200 - Mozilla/5.0[...]

Pour permettre à Athéna de lire ces données, vous pouvez créer une CREATE EXTERNAL TABLE déclaration simple comme celle-ci. L'instruction qui crée la table définit les colonnes qui correspondent aux données, spécifie comment les données sont délimitées et spécifie l'emplacement Simple Storage Service (Amazon S3) qui contient les exemples de données. Notez qu'Athena prévoit d'analyser tous les fichiers d'un dossier, la LOCATION clause indique l'emplacement du dossier Amazon S3, et non un fichier spécifique.

N'utilisez pas cet exemple pour l'instant car il comporte une limitation importante qui sera expliquée sous peu.

CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs ( `Date` DATE, Time STRING, Location STRING, Bytes INT, RequestIP STRING, Method STRING, Host STRING, Uri STRING, Status INT, Referrer STRING, ClientInfo STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' LOCATION 's3://athena-examples-my-region/cloudfront/plaintext/';

L'exemple crée une table appelée cloudfront_logs et spécifie un nom et un type de données pour chaque champ. Ces champs deviennent les colonnes de la table. Comme il date s'agit d'un mot réservé, il est masqué par des caractères backtick (`). ROW FORMAT DELIMITEDsignifie qu'Athena utilisera une bibliothèque par défaut appelée LazySimpleSerDepour effectuer le travail réel d'analyse des données. L'exemple spécifie également que les champs sont séparés par des tabulations (FIELDS TERMINATED BY '\t') et que chaque registre dans le fichier se termine par un saut de ligne (LINES TERMINATED BY '\n). Enfin, la clause LOCATION indique le chemin d'accès dans Simple Storage Service (Amazon S3) où se trouvent les données à lire.

Si vous avez vos propres données séparées par des tabulations ou des virgules, vous pouvez utiliser une CREATE TABLE déclaration comme dans l'exemple qui vient d'être présenté, à condition que vos champs ne contiennent pas d'informations imbriquées. Toutefois, si une colonne de ClientInfo ce type contient des informations imbriquées qui utilisent un séparateur différent, une approche différente est requise.

Extraction de données depuis le terrain ClientInfo

En regardant les exemples de données, voici un exemple complet du champ final ClientInfo :

Mozilla/5.0%20(Android;%20U;%20Windows%20NT%205.1;%20en-US;%20rv:1.9.0.9)%20Gecko/2009040821%20IE/3.0.9

Comme vous pouvez le voir, ce champ est à valeurs multiples. Comme l'exemple d'CREATE TABLEinstruction qui vient d'être présenté spécifie les onglets comme délimiteurs de champs, il ne peut pas diviser les différents composants du ClientInfo champ en colonnes distinctes. Une nouvelle CREATE TABLE déclaration est donc requise.

Pour créer des colonnes à partir des valeurs contenues dans le ClientInfo champ, vous pouvez utiliser une expression régulière (regex) contenant des groupes d'expressions régulières. Les groupes de regex que vous spécifiez deviennent des colonnes de table distinctes. Pour utiliser une regex dans votre instruction CREATE TABLE, utilisez une syntaxe comme la suivante. Cette syntaxe indique à Athena d'utiliser la bibliothèque Régex SerDe et l'expression rationnelle que vous spécifiez.

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ("input.regex" = "regular_expression")

Les expressions régulières peuvent être utiles pour créer des tables à partir de TSV données complexes CSV ou complexes, mais elles peuvent être difficiles à écrire et à gérer. Heureusement, il existe d'autres bibliothèques que vous pouvez utiliser pour des formats tels que JSON Parquet etORC. Pour de plus amples informations, veuillez consulter Choisissez un SerDe pour vos données.

Vous êtes maintenant prêt à créer la table dans l'éditeur de requête Athena. L'instruction CREATE TABLE et la regex sont fournies pour vous.

Pour créer une table dans Athena
  1. Dans le panneau de navigation, pour Database (Base de données), assurez-vous que mydatabase est sélectionnée.

  2. Pour vous donner plus d'espace dans l'éditeur de requêtes, vous pouvez choisir l'icône de flèche pour réduire le panneau de navigation.

    Choisissez la flèche pour réduire le panneau de navigation.
  3. Pour créer un onglet pour une nouvelle requète, choisissez le signe plus (+) dans l'éditeur de requête. Vous pouvez ouvrir jusqu'à dix onglets de requête à la fois.

    Sélection de l'icône plus pour créer une nouvelle requête.
  4. Pour fermer un ou plusieurs onglets de requête, choisissez la flèche à côté du signe plus. Pour fermer tous les onglets en même temps, choisissez la flèche, puis choisissez Close all tabs (Fermer tous les onglets).

    Choisissez l'icône en forme de flèche pour fermer un ou plusieurs onglets de requête.
  5. Dans le volet de requête, saisissez l'instruction CREATE EXTERNAL TABLE suivante. La regex extrait les informations relatives au système d'exploitation, au navigateur et à la version du navigateur du champ ClientInfo des données du journal.

    Note

    L'expression régulière utilisée dans l'exemple suivant est conçue pour fonctionner avec les données de CloudFront journal d'échantillons accessibles au public sur le site athena-examples Amazon S3 et n'est fournie qu'à titre indicatif. Pour d'autres up-to-date expressions régulières qui interrogent à la fois des fichiers CloudFront journaux standard et en temps réel, consultez. Interrogez les CloudFront journaux d'Amazon

    CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs ( `Date` DATE, Time STRING, Location STRING, Bytes INT, RequestIP STRING, Method STRING, Host STRING, Uri STRING, Status INT, Referrer STRING, os STRING, Browser STRING, BrowserVersion STRING ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex" = "^(?!#)([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+([^ ]+)\\s+[^\(]+[\(]([^\;]+).*\%20([^\/]+)[\/](.*)$" ) LOCATION 's3://athena-examples-myregion/cloudfront/plaintext/';
  6. Dans la LOCATION déclaration, remplacez myregion par celui Région AWS que vous utilisez actuellement (par exemple,us-west-1).

  7. Cliquez sur Run (Exécuter).

    La table cloudfront_logs est créée et apparaît sous la liste Tables pour la base de données mydatabase.

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.