Interrogation des données à partir de watsonx.data
Avant de commencer
Dans les exemples, on utilise le " données de l'enregistrement Trajet en taxi à New York et le " {: external} disponibles publiquement pour les taxis jaunes en janvier 2021 et 2022. Pour suivre cet exemple, assurez-vous que les données se trouvent dans un bucket S3 accessible et que la table a été chargée dans watsonx.data dans une table Apache Iceberg dans le serveur Hive Metastore (HMS).
1. Créez une base de données à l'aide de la metastoreuri requise.
Les sources de données externes permettent à un administrateur d'accorder l'accès à S3/Azure sans fournir les clés directement à un utilisateur.
ExempleS3):
LOCALDB.ADMIN(ADMIN)=> create database mylake with metastoreuri 'thrift://mymetastoreserverhostname:9083' catalogtype 'hive' on awss3 using ( ACCESSKEYID 'xxxx' SECRETACCESSKEY 'xxxx' BUCKET 'example-bucket' REGION 'us-east-1');
NOTICE: 589 tables from the datalake are available in MYLAKE
ExempleAzure):
create database mylake with metastoreuri 'thrift://mymetastoreserverhostname:9083' catalogtype 'hive' on azureblob using (ACCOUNT 'xxxx' KEY 'xxxx' CONTAINER 'example_container');
NOTICE: 589 tables from the datalake are available in MYLAKE
Voir CREATE EXTERNAL DATASOURCE pour plus de détails sur les options de source de données et les options d'authentification pour Azure.
Une seule source de données peut être attribuée à une base de données. Si vous avez besoin d'une autre source de données, vous devez créer une autre base de données.
2. Se connecter à la base de données.
LOCALDB.ADMIN(ADMIN)=> \c mylake
Vous êtes maintenant connecté à la base de données mylake.
3. Répertoriez les schémas disponibles.
MYLAKE.NETEZZA_SCHEMA(ADMIN)=> show schema;
Par défaut, vous êtes connecté à un schéma réservé appelé NETEZZA_SCHEMA.
Sortie :
DATABASE | SCHEMA | OWNER
----------+--------------------------------------------+-------
MYLAKE | DEFAULT | ADMIN
MYLAKE | DEFINITION_SCHEMA | ADMIN
MYLAKE | DEMO | ADMIN
MYLAKE | INFORMATION_SCHEMA | ADMIN
MYLAKE | NETEZZA_SCHEMA | ADMIN
MYLAKE | TAXIDATA | ADMIN
MYLAKE | TEST | ADMIN
(7 rows)
4. A partir de votre liste de schémas, définissez le schéma auquel vous souhaitez vous connecter.
MYLAKE.NETEZZA_SCHEMA(ADMIN)=> set schema taxidata;
SET SCHEMA
Vous pouvez également interroger vos données à l'aide du chemin d'accès complet SELECT * from mydb.myschema.mytable.
5. Listez les tables disponibles.
MYLAKE.TAXIDATA(ADMIN)=> show table;
Sortie :
DATABASE | SCHEMA | TABLE | TYPE | OWNER
----------+----------+--------------------------+----------------+-------
MYLAKE | TAXIDATA | YELLOW_TAXI_JANUARY_2022 | DATALAKE TABLE | ADMIN
MYLAKE | TAXIDATA | YELLOW_TAXI_JANUARY_2021 | DATALAKE TABLE | ADMIN
(2 rows)
6. Sélectionnez * dans la table requise.
MYLAKE.TAXIDATA(ADMIN)=> select * from YELLOW_TAXI_JANUARY_2021 limit 1;
Sortie :
VENDORID | TPEP_PICKUP_DATETIME | TPEP_DROPOFF_DATETIME | PASSENGER_COUNT | TRIP_DISTANCE | RATECODEID | STORE_AND_FWD_FLAG | PULOCATIONID | DO
LOCATIONID | PAYMENT_TYPE | FARE_AMOUNT | EXTRA | MTA_TAX | TIP_AMOUNT | TOLLS_AMOUNT | IMPROVEMENT_SURCHARGE | TOTAL_AMOUNT | CONGESTION_SURCHARGE |AIRPORT_FEE
----------+----------------------+-----------------------+-----------------+---------------+------------+--------------------+--------------+---
-----------+--------------+-------------+-------+---------+------------+--------------+-----------------------+--------------+------------------
----+-------------
1 | 2021-01-01 00:30:10 | 2021-01-01 00:36:12 | 1 | 2.1 | 1 | N | 142 |
43 | 2 | 8 | 3 | 0.5 | 0 | 0 | 0.3 | 11.8 |
2.5 |
(1 row)
-
Pour identifier le nombre total de passagers ayant voyagé en taxis à New York en janvier 2022, exécutez:
MYLAKE.TAXIDATA(ADMIN)=> select sum(PASSENGER_COUNT) FROM YELLOW_TAXI_JANUARY_2022;Sortie :
SUM --------- 3324167 (1 row) -
Pour identifier le fournisseur qui a le plus de passagers entre 1:00 et 6:00, exécutez:
MYLAKE.TAXIDATA(ADMIN)=> SELECT VENDORID, SUM(PASSENGER_COUNT) as "passengers" FROM YELLOW_TAXI_JANUARY_2022 WHERE TPEP_PICKUP_DATETIME::time > '1:00am'AND "TPEP_PICKUP_DATETIME"::time < '6:00am' GROUP BY VENDORID;Sortie :
VENDORID | passengers ----------+------------ 2 | 122251 1 | 40807 6 | 5 | (4 rows)