Преобразование неподписанного целого числа в подписанное целое через Google BigQuery

Я попытался выполнить запрос в Google BigQuery API и получил следующее исключение:

"Несоответствие типа аргумента в функции ЕСЛИ: "distinctPlayers" — это тип "TYPE_UINT64", "0" — это тип "TYPE_INT32".

Запрос слишком большой, поэтому я написал только его часть, где он не работает.

ЗАПРОС: сумма (если (action_type == 3, DifferentPlayers, 0)) как 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 int через BigQuery.

Заранее спасибо, Омкар


person user1459963    schedule 16.06.2012    source источник


Ответы (1)


Чтобы ответить на ваш вопрос, способ, которым вы приводите к подписанному int, - это функция INTEGER. Таким образом, вы должны быть в состоянии успешно запустить

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

Однако сообщение, которое вы видите, на самом деле указывает на ошибку в BigQuery — я прямо сейчас регистрирую ошибку внутри компании.

person Craig Citro    schedule 17.06.2012
comment
Кажется, что ошибка все еще там, у меня была такая же ошибка сегодня. Мне пришлось сделать это, чтобы заставить его работать: INTEGER(count (distinct myField, 10000)) - person YABADABADOU; 11.04.2014