如何在ksql中查询map字段?

az31mfrm  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(430)

我已经从一个主题i ksql创建了一个流。该流具有如下字段。我可以查询不同的字段,例如: select category from fake-data-119 . 我想知道如何从map字段中获取单个项,例如:status?
数据来源包括:

  1. ProducerRecord(topic=fake-data-119, partition=null, headers=RecordHeaders(headers = [], isReadOnly = true), key=null, value={"deviceId": 16, "category": "visibility sensors", "timeStamp": "Tue Jun 19 10:11:10 CEST 2018", "deviceProperties": {"visibility": "72", "status": "true"}}, timestamp=null)
  2. ProducerRecord(topic=fake-data-119, partition=null, headers=RecordHeaders(headers = [], isReadOnly = true), key=null, value={"deviceId": 6, "category": "fans", "timeStamp": "Tue Jun 19 10:11:11 CEST 2018", "deviceProperties": {"temperature": "22", "rotationSense": "1", "status": "false", "frequency": "56"}}, timestamp=null)
  3. ProducerRecord(topic=fake-data-119, partition=null, headers=RecordHeaders(headers = [], isReadOnly = true), key=null, value={"deviceId": 23, "category": "air quality monitors", "timeStamp": "Tue Jun 19 10:11:12 CEST 2018", "deviceProperties": {"coPpm": "136", "status": "false", "Co2Ppm": "450"}}, timestamp=null)

我使用下面的语句创建流:

  1. CREATE STREAM fakeData119 WITH (KAFKA_TOPIC='fake-data-119', VALUE_FORMAT='AVRO');
  2. Field | Type
  3. ---------------------------------------------------------
  4. ROWTIME | BIGINT (system)
  5. ROWKEY | VARCHAR(STRING) (system)
  6. DEVICEID | INTEGER
  7. CATEGORY | VARCHAR(STRING)
  8. TIMESTAMP | VARCHAR(STRING)
  9. DEVICEPROPERTIES | MAP[VARCHAR(STRING),VARCHAR(STRING)]
  10. ---------------------------------------------------------
  11. ksql> select * from fakeData119;
  12. 1529394182864 | null | 6 | fans | Tue Jun 19 09:43:02 CEST 2018 | {temperature=36, rotationSense=1, status=false, frequency=72}
  13. 1529394183869 | null | 5 | fans | Tue Jun 19 09:43:03 CEST 2018 | {temperature=23, rotationSense=1, status=true, frequency=76}
  14. 1529394184872 | null | 16 | visibility sensors | Tue Jun 19 09:43:04 CEST 2018 | {visibility=14, status=true}
  15. 1529394185875 | null | 25 | air quality monitors | Tue Jun 19 09:43:05 CEST 2018 | {coPpm=280, status=false, Co2Ppm=170}
w80xi6nr

w80xi6nr1#

您可以通过以下方式获取Map中的项目:

  1. select deviceproperties['status'] from fakedata119

相关问题