列表

详情


在大数据计算服务(MaxCompute, 原ODPS)的数据仓库中的订单表fact_order,建表语句如下:create table fact_order(order_id string,order_amt bigint,order_dt string)partitioned by (dt string);此表中的数据是从ods_ order 加工而来。ods_order 建表语句如下:create table ods_order(order_id string,order_amt double,order_dt string);ods_order中有一条记录数据值是:order_id order _amt order dt0001 100.5 20160301运行SQL语句将数据从ods_order 加载到fact order中:insert overwrite table fact_order partition(dt='20160301') select * from ods _order;对此语句的执行结果描述正确的是_____


A. 目标表与源表中的数据类型不数,执行出错

B. 语句可以执行,但是这条数据合被当作脏数据丢弃

C. 语句可以执行,order_am的值会被自动的转为bigint类型,order_amt=100.5的值在目标表中值是101

D. 语句可以执行,order_am的值会被自动的转为bigint类型,order_amt=100.5的值在目标表中值是100

参考答案: D

详细解析:

double类型可以隐式转换成bigint,只是会造成精度丢失。odps@ yyc_ odps>read ods_ order ;order_ id order_ amt order_dt0001 100.5 20160301odps@ yyc_ odps>insert overwrite table fact_ order partition(dt= ' 20160301') select * from ods_ order ;odps@ yyc_ odps>read fact_ order ;order_ id order_ amt order_dt0001 100 20160301

上一题