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)