Daten aus watsonx.data abfragen
Vorbereitende Schritte
In den Beispielen wird der öffentlich verfügbare " New Yorker Taxifahrt Datensatzdaten " {: external} für gelbe Taxis im Januar 2021 und 2022 verwendet. Um diesem Beispiel zu folgen, stellen Sie sicher, dass sich die Daten in einem zugänglichen S3 befinden und die Tabelle in watsonx.data in eine Apache Iceberg-Tabelle im Hive Metastore Server (HMS) geladen wurde.
1. Erstellen Sie eine Datenbank mit dem erforderlichen metastoreuri.
Externe Datenquellen ermöglichen es einem Administrator, Zugriff auf S3/Azure zu gewähren, ohne einem Benutzer die Schlüssel direkt bereitzustellen.
Beispiel ( S3 ):
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
Beispiel ( Azure ):
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
Weitere Einzelheiten zu Datenquellenoptionen und Authentifizierungsoptionen für Azure finden Sie unter CREATE EXTERNAL DATASOURCE.
Einer Datenbank kann nur eine einzige Datenquelle zugewiesen werden. Wenn Sie eine andere Datenquelle benötigen, müssen Sie eine weitere Datalake-Datenbank erstellen.
2. Verbinden Sie sich mit der Datenbank.
LOCALDB.ADMIN(ADMIN)=> \c mylake
Sie sind jetzt mit der Datenbank mylake verbunden.
3. Die verfügbaren Schemas auflisten.
MYLAKE.NETEZZA_SCHEMA(ADMIN)=> show schema;
Standardmäßig werden Sie mit einem reservierten Schema namens NETEZZA_SCHEMA verbunden.
Ausgabe:
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. Legen Sie in Ihrer Schemaliste das Schema fest, zu dem Sie eine Verbindung herstellen wollen.
MYLAKE.NETEZZA_SCHEMA(ADMIN)=> set schema taxidata;
SET SCHEMA
Sie können Ihre Daten auch abfragen, indem Sie den vollständigen Pfad SELECT * aus mydb.myschema.mytableverwenden.
5. Listen Sie die verfügbaren Tabellen auf.
MYLAKE.TAXIDATA(ADMIN)=> show table;
Ausgabe:
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. Wählen Sie * aus der erforderlichen Tabelle aus.
MYLAKE.TAXIDATA(ADMIN)=> select * from YELLOW_TAXI_JANUARY_2021 limit 1;
Ausgabe:
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)
-
Um die Gesamtzahl der Passagiere zu ermitteln, die im Januar 2022 mit Taxis in New York gefahren sind, führen Sie den folgenden Befehl aus:
MYLAKE.TAXIDATA(ADMIN)=> select sum(PASSENGER_COUNT) FROM YELLOW_TAXI_JANUARY_2022;Ausgabe:
SUM --------- 3324167 (1 row) -
Führen Sie den folgenden Befehl aus, um den Anbieter zu ermitteln, der die meisten Passagiere zwischen 1:00 und 6:00 Uhr hatte:
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;Ausgabe:
VENDORID | passengers ----------+------------ 2 | 122251 1 | 40807 6 | 5 | (4 rows)