我试图读取一个csv文件使用雅典娜。其中一个字段是双精度的,用逗号作为小数点分隔符而不是点。有办法读吗?或者是唯一的方法是转换(使用每点替换逗号)?
oymdgrw71#
没有办法改变一个设置,使雅典娜读取值的两倍,但有办法绕过它。你必须使用 string 作为两种情况下列的数据类型:创建一个将值转换为双倍值的视图(使用 CAST(replace(text, ',', '.') AS double) 正如piotr所说)。这样就不必在每个查询中都包含转换表达式。使用createtableas(ctas)并将值转换为double(使用相同的表达式)到一个新表中。如果你这样做,你也可以转换为例如Parquet地板,并获得其他好处。不过,每次数据发生变化时都必须这样做,这可能会带来不便。
string
CAST(replace(text, ',', '.') AS double)
1条答案
按热度按时间oymdgrw71#
没有办法改变一个设置,使雅典娜读取值的两倍,但有办法绕过它。你必须使用
string
作为两种情况下列的数据类型:创建一个将值转换为双倍值的视图(使用
CAST(replace(text, ',', '.') AS double)
正如piotr所说)。这样就不必在每个查询中都包含转换表达式。使用createtableas(ctas)并将值转换为double(使用相同的表达式)到一个新表中。如果你这样做,你也可以转换为例如Parquet地板,并获得其他好处。不过,每次数据发生变化时都必须这样做,这可能会带来不便。