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.
Exemples : requêtes géospatiales
Les exemples présentés dans cette rubrique créent deux tables à partir d'échantillons de données disponibles sur GitHub et interrogent les tables en fonction de ces données. Les exemples de données, qui sont à titre d'illustration seulement et dont l'exactitude n'est pas garantie, se trouvent dans les fichiers suivants :
-
earthquakes.csv
– Répertorie les tremblements de terre qui se sont produits en Californie. La table earthquakes
d'exemple utilise des champs provenant de ces données. -
california-counties.json
– Répertorie les données de comté de l'État de Californie au format GeoJSON conforme ESRI . Les données comprennent de nombreux champs tels que AREA
,PERIMETER
,STATE
,COUNTY
etNAME
, mais lacounties
table d'exemple en utilise seulement deux :Name
(chaîne) etBoundaryShape
(binaire).Note
Athena utilise le format
com.esri.json.hadoop.EnclosedEsriJsonInputFormat
pour convertir les données JSON au format binaire géospatial.
L'exemple de code suivant crée une table appelée earthquakes
:
CREATE external TABLE earthquakes ( earthquake_date string, latitude double, longitude double, depth double, magnitude double, magtype string, mbstations string, gap string, distance string, rms string, source string, eventid string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE LOCATION 's3://amzn-s3-demo-bucket/my-query-log/csv/';
L'exemple de code suivant crée une table appelée counties
:
CREATE external TABLE IF NOT EXISTS counties ( Name string, BoundaryShape binary ) ROW FORMAT SERDE 'com.esri.hadoop.hive.serde.EsriJsonSerDe' STORED AS INPUTFORMAT 'com.esri.json.hadoop.EnclosedEsriJsonInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://amzn-s3-demo-bucket/my-query-log/json/';
L'exemple de requête suivant utilise la fonction CROSS JOIN
sur les tables counties
et earthquake
. L'exemple utilise ST_CONTAINS
pour interroger les comtés dont les limites incluent des zones sismiques, qui sont spécifiées avec ST_POINT
. La requête regroupe ces comtés par nom, les ordonne par nombre et les renvoie en ordre décroissant.
SELECT counties.name, COUNT(*) cnt FROM counties CROSS JOIN earthquakes WHERE ST_CONTAINS (ST_GeomFromLegacyBinary(counties.boundaryshape), ST_POINT(earthquakes.longitude, earthquakes.latitude)) GROUP BY counties.name ORDER BY cnt DESC
Cette requête renvoie :
+------------------------+
| name | cnt |
+------------------------+
| Kern | 36 |
+------------------------+
| San Bernardino | 35 |
+------------------------+
| Imperial | 28 |
+------------------------+
| Inyo | 20 |
+------------------------+
| Los Angeles | 18 |
+------------------------+
| Riverside | 14 |
+------------------------+
| Monterey | 14 |
+------------------------+
| Santa Clara | 12 |
+------------------------+
| San Benito | 11 |
+------------------------+
| Fresno | 11 |
+------------------------+
| San Diego | 7 |
+------------------------+
| Santa Cruz | 5 |
+------------------------+
| Ventura | 3 |
+------------------------+
| San Luis Obispo | 3 |
+------------------------+
| Orange | 2 |
+------------------------+
| San Mateo | 1 |
+------------------------+
Ressources supplémentaires
Pour obtenir des exemples supplémentaires de requêtes géospatiales, veuillez consulter les billets de blog suivants :