Consultando dados do watsonx.data
Antes de Iniciar
Nos exemplos, são usados os dados de registro deviagem de táxi de Nova York disponíveis publicamente ' {: external} para táxis amarelos em janeiro de 2021 e 2022. Para seguir este exemplo, verifique se os dados estão em um bucket S3 acessível e se a tabela foi carregada em watsonx.data em uma tabela Apache Iceberg no servidor Hive Metastore (HMS).
1. Criar um banco de dados usando o metastoreuri necessário.
Os recursos de dados externos permitem que um administrador conceda acesso ao S3/Azure sem fornecer as chaves diretamente a um usuário.
ExemploS3):
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
ExemploAzure):
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
Consulte CREATE EXTERNAL DATASOURCE para obter mais detalhes sobre as opções de fonte de dados e as opções de autenticação para o Azure.
Apenas uma única fonte de dados pode ser atribuída a um banco de dados; se você precisar de outra fonte de dados, deverá criar outro banco de dados.
2. Conecte-se ao banco de dados.
LOCALDB.ADMIN(ADMIN)=> \c mylake
Agora você está conectado ao banco de dados mylake..
3. Listar os esquemas disponíveis
MYLAKE.NETEZZA_SCHEMA(ADMIN)=> show schema;
Por padrão, você é conectado a um esquema reservado chamado NETEZZA_SCHEMA
Saída:
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. Na lista de esquemas, configure o esquema ao qual você deseja se conectar.
MYLAKE.NETEZZA_SCHEMA(ADMIN)=> set schema taxidata;
SET SCHEMA
Também é possível consultar seus dados usando um caminho completo SELECT * de mydb.myschema.mytable.
5. Liste as tabelas disponíveis.
MYLAKE.TAXIDATA(ADMIN)=> show table;
Saída:
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. Selecione * de a tabela necessária.
MYLAKE.TAXIDATA(ADMIN)=> select * from YELLOW_TAXI_JANUARY_2021 limit 1;
Saída:
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)
-
Para identificar o número total de passageiros que viajaram de táxis em Nova York em janeiro de 2022, execute:
MYLAKE.TAXIDATA(ADMIN)=> select sum(PASSENGER_COUNT) FROM YELLOW_TAXI_JANUARY_2022;Saída:
SUM --------- 3324167 (1 row) -
Para identificar o fornecedor que tinha o maior número de passageiros entre 1h e 6h, execute:
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;Saída:
VENDORID | passengers ----------+------------ 2 | 122251 1 | 40807 6 | 5 | (4 rows)