2.4.5 Kafkaトピック内のJSONデータにアクセスするためのビューの作成

Kafkaトピック内の、JSONデータを含むデータを問い合せるには、トピック・レコードの形式としてJSON_VARCHAR2を指定してOracle SQL access to Kafka (OSaK)ビューを作成する必要があります。

Kafkaのレコード形式がJSON_VARCHAR2である場合、参照表は使用されず、NULLとして渡される必要があります。

次の例では、レコード形式がJSONのトピックsensorj内の単一のパーティションに対して1つのビューを作成します。

DECLARE
    views_created INTEGER;
    application_id VARCHAR2(128);
BEGIN
    ORA_KAFKA.CREATE_VIEWS
      ('MA1',                    –- The name of the cluster
       'QUERYAPP_JSON',          -- The name of the Kafka group
       'sensorj',                –- The name of the Kafka topic
       ‘JSON_VARCHAR2’,           -- The format of the topic record
       NULL,                     -- No reference table used for JSON
       views_created,            -- Output: number of views created
       application_id);          -- Output: the application id of the set of views
                                 -- created that uniquely identifies the view  
                                 –- objects
    dbms_output.put_line(‘views created = ‘ || views_created);
    dbms_output.put_line(‘application id = ‘ || application_id);
  END;
/
前述の例により、次のビューが作成されます。
SQL> describe KV_MA1_QUERYAPP_JSON_SENSORJ_0;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 KAFKA$PARTITION                                    NUMBER(38)
 KAFKA$OFFSET                                       NUMBER(38)
 KAFKA$EPOCH_TIMESTAMP                              NUMBER(38)
 KEY                                                VARCHAR2(32767)
 VALUE                                              VARCHAR2(32767)

ここでは、KAFKA$PARTITIONはKafkaパーティションID、KAFKA$OFFSETはKafkaレコードのオフセット、KAFKA$EPOCH_TIMESTAMPはKafkaレコードのタイムスタンプです。KEY列およびVALUE列にはJSONデータが含まれています。