watsonx.data 에서 데이터 쿼리
시작하기 전에
이 예에서는 2021년 1월과 2022년 1월의 노란색 택시에 대한 공개적으로 사용 가능한 뉴욕 택시 운행 기록 데이터 ' {: external} '을 사용했습니다. 이 예제를 따르려면 데이터가 액세스 가능한 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 에 대한 데이터 소스 옵션과 인증 옵션에 대한 자세한 내용은 CREATE EXTERNAL DATASOURCE를 참조하세요.
하나의 데이터베이스에는 단 하나의 데이터 소스만 할당할 수 있습니다. 다른 데이터 소스가 필요한 경우, 다른 데이터레이크 데이터베이스를 만들어야 합니다.
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시부터 오전 6시 사이에 가장 많은 승객을 태운 공급업체를 식별하려면 다음을 실행하세요.
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)