Hive AWS Glue(或Athena或Presto)-更改十进制格式

Hive AWS Glue(或Athena或Presto)-更改十进制格式,hive,presto,amazon-athena,aws-glue,Hive,Presto,Amazon Athena,Aws Glue,我正在尝试使用雅典娜读取CSV文件。其中一个字段是双精度的,用逗号作为十进制分隔符,而不是点 有没有办法读懂它?或者唯一的方法是转换(使用替换逗号/点)?没有办法更改设置,使雅典娜将值读取为双倍值,但有办法解决这一问题。在这两种情况下,您都必须使用string作为列的数据类型: 创建一个将值转换为双精度的视图(使用CAST(将(文本“,”,“.”)替换为双精度)如Piotr所建议)。这样,您就不必在每个查询中都包含转换表达式 使用(CTA)并将值转换为双精度(使用相同的表达式)到新表中。如果你

我正在尝试使用雅典娜读取CSV文件。其中一个字段是双精度的,用逗号作为十进制分隔符,而不是点


有没有办法读懂它?或者唯一的方法是转换(使用替换逗号/点)?

没有办法更改设置,使雅典娜将值读取为双倍值,但有办法解决这一问题。在这两种情况下,您都必须使用
string
作为列的数据类型:

  • 创建一个将值转换为双精度的视图(使用
    CAST(将(文本“,”,“.”)替换为双精度)
    如Piotr所建议)。这样,您就不必在每个查询中都包含转换表达式
  • 使用(CTA)并将值转换为双精度(使用相同的表达式)到新表中。如果你这样做,你也可以转换为例如拼花地板,并获得其他好处。但是,每次数据更改时都必须执行此操作,这可能会带来不便

AFAICT CSV文件被读取为
varchar
列,因此问题是如何在SQL中将类似
'123,45'
的文本解析为
双精度
,对吗?如果是这样的话,那么我认为你能得到的最好的方法是
CAST(将(文本,,,,,,,,。)替换为double)