我在S3上有文件,其中两列仅包含可以为10^26
的正整数。不幸的是,根据AWS Docs,雅典娜仅支持最高2^63-1
(约10^19
)范围内的值。因此,目前这些列表示为字符串。
当涉及到过滤时,它并不是什么大问题,因为我可以使用正则表达式。例如,如果我想获取5e^21
和6e^21
之间的所有记录,我的查询将类似于:
SELECT *
FROM database.table
WHERE (regexp_like(col_1, '^5[\d]{21}$'))
我大约有[[300M行(镶木地板中大约有12GB),大约需要7秒钟,所以性能上还可以。
但是,有时我想对这两个大列执行一些数学运算,例如从另一个大列中减去一个大列。由于近似误差,无法将这些记录转换为DOUBLE。理想情况下,我想留在雅典娜内。目前,我大约有[[100M行比2^63-1
大,但是这个数字将来可能会增加。解决数字记录超出可用范围的问题的正确方法是什么?另外,您对使用正则表达式进行过滤有何想法?有没有更好/更合适的方法呢?