watsonx.data からのデータの照会

開始前に

例では、2021年1月と2022年1月のイエロー・タクシーに関する、一般に入手可能な ニューヨークのタクシー走行記録データ「{: external}」が使用されている。 この例に従うには、データがアクセス可能なS3バケットにあり、テーブルがwatsonx.dataにロードされ、Hiveメタストア・サーバー(HMS)のApacheIcebergテーブルにロードされていることを確認します。

1. 必要な metastoreuri を使用してデータベースを作成します。

外部データソースは、管理者がユーザーにキーを直接提供することなく、S3/Azureへのアクセスを許可することを可能にする。

例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

例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

Azureのデータソースオプションと認証オプションの詳細については、CREATE EXTERNAL DATASOURCE を参照してください。

1つのデータベースには1つのデータソースしか割り当てることができませんので、別のデータソースが必要な場合は、別のdatalakeデータベースを作成する必要があります。

2.データベースに接続する。

LOCALDB.ADMIN(ADMIN)=> \c mylake

これで、 mylake データベースに接続できました。

3. 使用可能なスキーマをリストします。

MYLAKE.NETEZZA_SCHEMA(ADMIN)=> show schema;

デフォルトでは、 NETEZZA_SCHEMA という予約済みスキーマに接続されます。

出力:

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. スキーマ・リストから、接続先のスキーマを設定します。

MYLAKE.NETEZZA_SCHEMA(ADMIN)=> set schema taxidata;
SET SCHEMA

絶対パス **mydb.myschema.mytable からの SELECT ***を使用してデータを照会することもできます。

5. 使用可能な表をリストします。

MYLAKE.TAXIDATA(ADMIN)=> show table;

出力:

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. 必要なテーブルから *を選択します

MYLAKE.TAXIDATA(ADMIN)=> select * from YELLOW_TAXI_JANUARY_2021 limit 1;

出力:

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)
  • 2022 年 1 月にニューヨークのタクシーで旅行した乗客の総数を確認するには、以下を実行します。

    MYLAKE.TAXIDATA(ADMIN)=> select sum(PASSENGER_COUNT) FROM YELLOW_TAXI_JANUARY_2022;
    

    出力:

    SUM
    ---------
    3324167
    (1 row)
    
  • 午前 1:00 から午前 6:00 の間に乗客が最も多かったベンダーを識別するには、以下を実行します。

    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;
    

    出力:

    VENDORID | passengers
    ----------+------------
           2 |     122251
           1 |      40807
           6 |
           5 |
    (4 rows)