我正在分析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
如何分析这些数字变量,而不是数据库中错误设置的字符串变量?
答案 0 :(得分:1)
您的查询将在标准SQL中按以下方式运行:
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 EXTRACT(month FROM dropoff_datetime) = 12
) x;
您可以在查询之前包含此提示,以确保使用标准SQL运行该提示:
#standardSQL
答案 1 :(得分:1)
以下是用于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旧版SQL不支持NUMERIC数据类型,而是将其视为STRING,并且不能将其CAST转换为FLOAT或INTEGER
因此,解决方法是使用上面的示例中的BigQuery Standard SQL-正如您在此处看到的那样,您无需进行任何CAST操作,因为此字段已经是NUMERIC