我无法弄清楚为什么我使用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索引8超出范围0..7
这些是数据类型。 SIGNAL_VALUE为DECIMAL(18,6) FM.CAPACITY是双重的
任何帮助将不胜感激。我认为AWS KDA在堆栈溢出方面还没有很大的规模。