正在從 watsonx.data 查詢資料

開始之前

在範例中,使用了 2021 年 1 月和 2022 年黃色計程車的公開 紐約計程車行程記錄資料。 若要遵循此範例,請確保資料位於可存取的S3儲存桶中,watsonx.data該表已載入至Hive Metastore 伺服器 (HMS) 中的Apache Iceberg 表中。

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資料來源選項和身份驗證選項的更多詳細信息,請參閱 建立外部資料來源

一個資料庫只能分配一個資料來源,如果需要其他資料來源,則必須建立另一個資料湖資料庫。

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

您也可以使用完整路徑 SELECT * from mydb.myschema.mytable來查詢資料。

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 AM 與 6:00 AM 之間乘客最多的供應商,請執行:

    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)