将字符串强制转换为浮点/十进制-大查询



希望有人能就此向我提供建议。我在大查询中有两个表,第一个叫master,第二个叫daily_transfer。

在主表中,有一个名为impression_share的列,数据类型为float,所有数据都正常工作。

然而,我的问题是daily_transfer表。其想法是,我每天都会将这些数据传输到master中。两个表中的架构和列名完全相同。然而,问题是,在每日转移表中,在我的float列(impression_share)中,我有一个字符串值,它是<0.1.

这个字符串最初并不是一个问题,因为表是从谷歌工作表加载的,所以只有当我试图查询数据时,错误才会突出显示。

总之,列类型是浮动的,但循环值是字符串。我尝试了几件事,首先替换了'<0.1"到"0.1",但我收到一个错误,即replace只能与string、string、string的表达式一起使用。这对我来说很有意义。

因此,我尝试将列从float转换为字符串,然后替换该值。当我尝试投射时,我马上就得到了一个错误:

"读取表时出错:data-studio-reporting.analystics.daily_transfer,错误消息:无法将值转换为浮点值。第3排;第6栏";

列6是";impression_share";,第3行的值<0.1.

我尝试的查询是:

SELECT 

SAFE_CAST(mydata.impression_share AS STRING)
FROM `data-studio-reporting.analytics.daily_transfer` mydata

我只是不知道我想做什么是可能的,还是最好重新创建daily_transfer表,并将第6列(impression_share)设置为String,以便在转移到主表之前更容易替换和转换?

非常感谢您的帮助!

谢谢,

标记

感谢您的帮助,将我的daily_transfer_table中的列类型从float更改为string,然后进行替换和强制转换。

SELECT
mydata.Date,
CAST (REPLACE(mydata.Impression_share,'<','')  AS FLOAT64 ) as impression_share_final,
mydata.Available_impressions
FROM `data-studio-reporting.google_analytics.daily_transfer_temp_test` mydata

学习这门课对我的知识来说太棒了。谢谢

相关内容

  • 没有找到相关文章

最新更新