Я не могу понять, почему я получаю эту ошибку с помощью AWS Kinesis Data Analytics.
Сообщение об ошибке SQL: java.lang.AssertionError: несоответствие типов: type1: DECIMAL (18, 6) type2: 7: DOUBLE
Я пытаюсь выполнить некоторые агрегации в окне STAGGERED.Однако, похоже, между типами данных есть некоторая несогласованность.
Вот мой SQL:
CREATE OR REPLACE STREAM "FARM_SPECIFIC_YIELD_AGGREGATION"
(UTC_TIME BIGINT,
ASSET_ID BIGINT,
FARM_ID BIGINT,
SIGNAL_NAME VARCHAR(60),
SIGNAL_VALUE DECIMAL(18, 6),
ASSET_TYPE VARCHAR(32),
IN_OPERATIONAL_WINDOW BOOLEAN NOT NULL, -- boolean flag indicating whether the event time falls between sunrise and sunset for the associated farm
IS_AGGREGATE BOOLEAN NOT NULL);
CREATE OR REPLACE PUMP "FARM_SPECIFIC_YIELD_PUMP" AS INSERT INTO "FARM_SPECIFIC_YIELD_AGGREGATION"
SELECT STREAM
SRC.UTC_TIME AS UTC_TIME,
SRC.FARM_ID AS ASSET_ID,
SRC.FARM_ID AS FARM_ID,
CASE SRC.SIGNAL_NAME
WHEN 'generation.na.dtn' THEN 'specific_yield-avg.farm.10m'
ELSE NULL
END AS SIGNAL_NAME,
SUM(SRC.SIGNAL_VALUE) / SUM(FM.CAPACITY) AS SIGNAL_VALUE,
SRC.ASSET_TYPE AS ASSET_TYPE,
SRC.IN_OPERATIONAL_WINDOW AS IN_OPERATIONAL_WINDOW,
FALSE AS IS_AGGREGATE
FROM "SOURCE_SQL_STREAM_001" AS SRC
JOIN FARM_METADATA AS FM
ON SRC.ASSET_ID = FM.ASSET_ID
WHERE (SRC.SIGNAL_VALUE IS NOT NULL AND SRC.SIGNAL_VALUE > 0 AND SRC.SIGNAL_VALUE <= FM.CAPACITY)
AND SRC.SIGNAL_NAME IN ('generation.na.dtn')
WINDOWED BY STAGGER (
PARTITION BY SRC.UTC_TIME, SRC.FARM_ID, SRC.SIGNAL_NAME, SRC.ASSET_TYPE, SRC.IN_OPERATIONAL_WINDOW
RANGE INTERVAL '10' MINUTE);
Я попытался привести значения, но он не работал правильно.Может быть, агрегация SUM () может быть проблемой.
Если я приведу значение, я получаю следующую ошибку: Сообщение об ошибке SQL: java.lang.AssertionError: RexInputRef index 8 вне диапазона 0..7
Это типы данных.SIGNAL_VALUE - ДЕСЯТИЧНЫЙ (18, 6) FM.CAPACITY - ДВОЙНОЙ
Любая помощь будет принята с благодарностью.Я думаю, что в AWS KDA пока нет большого присутствия при переполнении стека.