Redshift Spectrum 返回 null WITHOUT 错误

Redshift Spectrum returns null WITHOUT error

提问人:RSHAP 提问时间:10/27/2023 更新时间:10/27/2023 访问量:31

问:

我正在查询红移频谱,某些字段显示为空,没有任何解释。我已经检查过了

  • SVL_S3LOG
  • SVL_SPECTRUM_SCAN_ERROR
  • SYS_EXTERNAL_QUERY_ERROR

而且它们都是空的。

在下面的示例中,如何强制 redshift 出错,而不仅仅是返回 null?

我尝试过使用表属性,例如“data_cleansing_enabled”和相关属性。我也试过了

set spectrum_query_maxerror=0

但结果总是一样的。

CREATE EXTERNAL TABLE myschema.test (
    numberfield decimal(18,3),
    "timestamp" text
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
STORED AS TEXTFILE
location 's3://mybucket/data/'

select * from myschema.test

s3://mybucket/data/test.json 中文件的内容:

-- note numberfield has more than 3 decimal digits 
{"numberfield":"98.7400000", "timestamp": "2023-01-01T20:21:40.100226269+00:00"}

在上面的文件中,“numberfield”值有 3 个十进制数字,因此返回 Null。我不确定为什么会发生这种情况 - 我本来希望它会四舍五入到 redshift 文档所述的适当位置

sql amazon-s3 amazon-redshift 外部表 amazon-redshift-spectrum

评论

0赞 MP24 10/27/2023
number字段是一个字符串。您是否尝试将其声明为 varchar 并在以后将其转换为小数?
0赞 RSHAP 10/31/2023
是的,这确实有效,但能够输入频谱表会很好。

答: 暂无答案