Сообщение об ошибке AWS Kinesis Data Analytics SQL: java.lang.AssertionError: несоответствие типов: type1: DECIMAL (18, 6) type2: 7: DOUBLE - PullRequest
0 голосов
/ 03 июля 2019

Я не могу понять, почему я получаю эту ошибку с помощью 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 пока нет большого присутствия при переполнении стека.

...