BigQuery - Нет подходящей подписи для оператора = для типов аргументов: INT64, STRING - PullRequest
0 голосов
/ 02 мая 2019

Я получаю странную ошибку (возможно, я получаю эту ошибку в первый раз) от BQ.

No matching signature for operator = for argument types: INT64, STRING. Supported signatures: ANY = ANY at [27:1]

Запрос:

SELECT col1
    ,col2
    ,col3
FROM tbl1
JOIN t2 ON t1.id = t2.id
JOIN t3 on t2.id = t3.id
JOIN t4 on t4.id = t1.id

Строка ошибки JOIN t2.id = t3.id t2.id показывает эту ошибку.

это целочисленный столбец.

Ответы [ 2 ]

3 голосов
/ 02 мая 2019

Одно из ваших сравнений - типы смешивания.Это плохая идея - как показывает сообщение об ошибке.Вам необходимо выяснить, какая пара (или пары), и выполнить одно из следующих действий:

cast(t2.id as string) = t3.id
t2.id = safe.cast(t3.id as int64)
0 голосов
/ 02 мая 2019

В вашем запросе вы создали соединение с таблицей t2, но имена таблиц t3 и t4 не указаны в соединении.Ниже приведен правильный запрос.

SELECT col1
    ,col2
    ,col3
FROM tbl1 as t1
JOIN t2 ON t1.id = t2.id
JOIN t3 ON t2.id = t3.id
JOIN t4 ON t4.id = t1.id

Попробуйте это.Я думаю, что это будет работать.

После редактирования

вам нужно дать имя таблицы с полем в полях выбора, таких как

select 
    t1.field1, 
    t2.field1, 
    t3.field3, 
    t4.field 
From tbl1 as t1
JOIN t2 ON t1.id = t2.id
JOIN t3 ON t2.id = t3.id
JOIN t4 ON t4.id = t1.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...