Нельзя использовать вложенные поля в параметре TIMESTAMP
.Вам нужно сначала извлечь его, а затем использовать.Например:
CREATE STREAM X (COL1 INT, COL2 VARCHAR, HEADER STRUCT<StoreID int,BusinessDate VARCHAR>)
WITH (KAFKA_TOPIC='hermes__output__tfrema__v1',VALUE_FORMAT='JSON')
CREATE STREAM Y AS
SELECT COL1, COL2, HEADER->BusinessDate AS BusinessDate, HEADER
FROM X;
CREATE STREAM Z COL1 INT, COL2 VARCHAR, BusinessDate VARCHAR, HEADER STRUCT<StoreID int,BusinessDate VARCHAR>)
WITH (KAFKA_TOPIC='Y',VALUE_FORMAT='JSON',timestamp='BusinessDate',timestamp_format='yyyy-MMM-dd');)
Если вы используете Avro, вы можете упростить задачу, потому что схема не нуждается в повторении:
CREATE STREAM X (COL1 INT, COL2 VARCHAR, HEADER STRUCT<StoreID int,BusinessDate VARCHAR>)
WITH (KAFKA_TOPIC='hermes__output__tfrema__v1',VALUE_FORMAT='JSON')
CREATE STREAM Y WITH (VALUE_FORMAT='AVRO')
AS SELECT COL1, COL2, HEADER->BusinessDate, HEADER FROM X;
CREATE STREAM Z
WITH (KAFKA_TOPIC='Y',VALUE_FORMAT='JSON',timestamp='BusinessDate',timestamp_format='yyyy-MMM-dd');)