gpt4 book ai didi

sql - 在 Google BigQuery 中使用 SQL 将字符串列转换为数字列

转载 作者:行者123 更新时间:2023-12-04 10:52:05 30 4
gpt4 key购买 nike

我正在分析 data of New York City taxi trips of yellow cars in 2018 . (您需要一个 Google BigQuery 帐户才能访问此数据集。)

架构说大多数列都是数字。但是,当我尝试计算关键美元数字(tip_amount、tolls_amount、total_amount)的总和时,我收到一条错误消息,指出它们是字符串变量。

SELECT sum(total_amount) 
FROM [bigquery-public-data:new_york_taxi_trips.tlc_yellow_trips_2018]
WHERE month(dropoff_datetime) = 12

Error: Field total_amount is of type STRING which is not supported for SUM

然后我尝试使用 cast() 函数将其转换为数字变量,但这不起作用。
SELECT sum(total_amount_numeric) FROM 
(
SELECT cast(total_amount as numeric) as total_amount_numeric
FROM [bigquery-public-data:new_york_taxi_trips.tlc_yellow_trips_2018]
WHERE month(dropoff_datetime) = 12
)

Error: Field total_amount_numeric is of type STRING which is not supported for SUM

如何按我的意图分析这些数字变量,而不是在数据库中错误设置的字符串变量?

最佳答案

下面是 BigQuery 标准 SQL

#standardSQL
SELECT SUM(total_amount)
FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2018`
WHERE EXTRACT(MONTH FROM dropoff_datetime) = 12

您遇到的问题是因为 BigQuery Legacy SQL 不支持 NUMERIC 数据类型,而是被视为 STRING 并且不能 CAST 到 FLOAT 和 INTEGER

因此,解决方法是在上面的示例中使用 BigQuery Standard SQL - 正如您在此处看到的,您不需要执行任何 CAST'ing,因为该字段已经是 NUMERIC

关于sql - 在 Google BigQuery 中使用 SQL 将字符串列转换为数字列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59432662/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com