通过 google BigQuery 将 unsigned int 转换为 signed int

Posted

技术标签:

【中文标题】通过 google BigQuery 将 unsigned int 转换为 signed int【英文标题】:Convert unsigned int to signed int through google BigQuery 【发布时间】:2012-06-16 00:32:29 【问题描述】:

我尝试在 google BigQuery api 上运行查询并得到如下异常:

“函数 IF 中的参数类型不匹配:'distinctPlayers' 是 'TYPE_UINT64' 类型,'0' 是 'TYPE_INT32' 类型。”

查询太大,所以我只写了它失败的部分。

QUERY : sum(if(action_type == 3, distinctPlayers, 0)) as Game_Viral_Acceptor_Count

我的理解是:

if condition is true 
then set distinctPlayers of type unsigned int64 
otherwise set 0 which is of type int32

谁能说明如何将unsigned int64 转换为signed intBigQuery

提前致谢, 奥姆卡尔

【问题讨论】:

【参考方案1】:

要回答您的问题,您转换为 signed int 的方式是通过 INTEGER 函数。所以你应该可以成功运行

... SUM(IF(action_type == 3, INTEGER(distinctPlayers), 0)) AS ...

但是,您看到的消息实际上指向 BigQuery 中的一个错误 - 我现在正在内部提交该错误。

【讨论】:

这个bug好像还在,我今天也遇到了同样的错误。我必须这样做才能使其工作:INTEGER(count (distinct myField, 10000))

以上是关于通过 google BigQuery 将 unsigned int 转换为 signed int的主要内容,如果未能解决你的问题,请参考以下文章

通过 PHP 将 MySQL 数据发送到 Google BigQuery

从 Google 脚本将数据插入 BigQuery:遇到“”

通过 google BigQuery 将 unsigned int 转换为 signed int

通过 Google BigQuery API 将查询结果导出为 JSON

Google BigQuery 通过 API 访问公共数据集

Google Sheets AddOn - 通过服务帐户集成 AppScript 和 BigQuery