大数据计算MaxCompute外部表映射了oss中的csv文件,csv文件中的数据有的是\N,然后映射到maxcomputer中\N数据变成了N,这是什么原因么?
如果数据需要是\N的话,可以用函数替换下
https://help.aliyun.com/zh/maxcompute/user-guide/string-functions?spm=a2c4g.11186623.0.0.26ab3761uHEyk1#section-k2w-2d1-wdb,此回答整理自钉群“MaxCompute开发者社区2群”
在CSV文件中,"\N"通常被用作空字符串的表示方式。然而,在MaxCompute中,"\N"会被解析为一个特殊的NULL值。
如果你在MaxCompute中看到"\N"被解析为"N",那可能是因为你在创建外部表的时候,没有正确地配置NULL值的表示方式。
在创建外部表的时候,你需要在模式定义中指定NULL值的表示方式。例如,如果你想要让NULL值在MaxCompute中表示为"\N",你可以这样定义模式:
CREATE EXTERNAL TABLE my_table (
id INT,
name STRING,
age INT
)
PARTITION BY (dt STRING)
FORMAT 'CSV'
TBLPROPERTIES ('skip.header.line.count'='1');
在这个例子中,TBLPROPERTIES ('skip.header.line.count'='1')
就是一个属性,它告诉MaxCompute在读取CSV文件时,跳过第一行(通常是列名)。
然后,你需要在模式定义中添加NULL_VALUE
属性,以指定NULL值的表示方式。例如,如果你想要让NULL值在MaxCompute中表示为"\N",你可以这样定义模式:
CREATE EXTERNAL TABLE my_table (
id INT,
name STRING,
age INT
)
PARTITION BY (dt STRING)
FORMAT 'CSV'
TBLPROPERTIES (
'skip.header.line.count'='1',
'NULL_VALUE'='\\N'
);
在这个例子中,'NULL_VALUE'='\\N'
就是一个属性,它告诉MaxCompute在读取CSV文件时,将"\N"解析为NULL值。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。