我正在尝试将一些数据从舞台加载到关系环境,但发生了一些我无法弄清楚的事情。
我正在尝试运行以下查询:
SELECT
CAST(SPLIT_PART(some_field,'_',2) AS BIGINT) cmt_par
FROM
public.some_table;
some_field 是一列,其中包含两个数字并用下划线连接的数据,如下所示:
some_field -> 38972691802309_48937927428392
我正在尝试获得第二部分。
也就是说,这是我得到的错误:
[Amazon](500310) Invalid operation: Invalid digit, Value '1', Pos 0,
Type: Long
Details:
-----------------------------------------------
error: Invalid digit, Value '1', Pos 0, Type: Long
code: 1207
context:
query: 1097254
location: :0
process: query0_99 [pid=0]
-----------------------------------------------;
Execution time: 2.61s
Statement 1 of 1 finished
1 statement failed.
从字面上看,有些数字不是有效数字。我已经尝试获取引发错误的确切数据,它似乎是一个正常的字段,就像我期望的那样。即使我抛出 NULL 字段也会发生这种情况。
我认为这将是一个编码错误,但我还没有找到任何参考来解决这个问题。有人有什么想法吗?
谢谢大家。
原文由 Maurício Borges 发布,翻译遵循 CC BY-SA 4.0 许可协议
当您使用 Glue 作业将数据从任何数据源插入到 Redshift 时:
Glue 将重新排列数据 然后 复制,这可能会导致此问题。即使在使用
apply-mapping
之后,这也发生在我身上。就我而言,
datatype
根本不是问题。在源代码中,它们被强制转换为与 Redshift 中的字段完全匹配。为了解决这个问题,我在 Glue 中使用了一个 SQL 查询来运行一个选择命令,该命令具有表中列的正确顺序。 .奇怪的是为什么 Glue 即使在使用
apply-mapping
之后也会这样做,但我使用的解决方法有所帮助。