Ошибка запроса электронной таблицы Google - столбец не существует

Еще одна проблема с Google Spreadsheet API. Я пытаюсь использовать функцию QUERY(), чтобы получить из нашей базы данных всех клиентов из Варшавы. Однако у Google API, похоже, возникла большая проблема с анализом моего запроса. Проверял несколько раз, все в порядке. Пробовал использовать точки с запятой, разные апострофы и имена столбцов - все равно не работает. Я набираю этот код в ячейке листа:

=QUERY(IMPORTRANGE("0ArsOaWajjzv9dEdGTUZCWFc1NnFva05uWkxETVF6Q0E"; "Kuchnia polska!A3:G40"); "select B where E contains 'Warszawa'")

И получите такую ​​ошибку:

Invalid query: Column [E] does not exist in table.

И я на 110% уверен, что столбец существует и ключ электронной таблицы в порядке. ;)


person KamilG    schedule 25.07.2012    source источник


Ответы (2)


Если вы используете функцию Query с прямой ссылкой на прямоугольник ячеек, вы используете заглавные буквы для обозначения столбцов. Однако, если вы используете Query для вывода формулы массива, такой как возврат из ImportRange, вам вместо этого нужно использовать Col1, Col2, ... для ссылки на столбцы. Итак, ваша примерная строка запроса должна читать:

"select Col2 where Col5 contains 'Warszawa'"

Рабочий пример:

=Query(ImportRange("0AtEH2Kw9zfIodEQ2dFNFam9sdEFEZlVnNEV3ZEZMZEE", "data!A:G"), "select Col3, count(Col4) group by Col3 order by count(Col4) desc label count(Col4) 'count'")

Понятия не имею, почему он не позволяет вам просто использовать имена из строки заголовка.

person George    schedule 28.11.2012
comment
Спасибо! Любопытно, где вы нашли эту подсказку! К вашему сведению, это также проблема, когда вы выполняете вложения запросов / сортировок / транспонирования, таких как =query(transpose(query(A1:B3;"select * where B>=2"));"select A") (он говорит, что столбец [A] не существует). Но это работает, если я использую Col1. - person Fuhrmanator; 16.02.2013
comment
У меня возникли проблемы с запросом импортированного диапазона, поэтому я поискал в Google google spreadsheet query importrange и нашел пример, в котором использовалось соглашение Col1 ... Coln. - person George; 19.02.2013
comment
@ Джордж. Есть ли какие-либо настройки, которые мне нужно сделать в исходной электронной таблице? Я успешно импортировал данные, но импортируются только числа, ячейки, которые должны содержать строки, пусты. - person putoshop; 10.12.2013
comment
По какой-то причине я получаю сообщение об ошибке NO_COLUMN: Col1, когда пытаюсь применить запрос, относящийся к одной ячейке, содержащей формулу =filter.... - person Kalin; 22.11.2016
comment
Да, и если вам нужно преобразовать массив, на который ссылаются A, B, C, в массив, на который ссылаются Col1, Col2, Col3. просто заключите его в { } - person vstepaniuk; 12.10.2020

В качестве альтернативы вы можете попробовать функцию FILTER в этом случае, и тогда вам не нужно возиться с SQL. :)

=FILTER(ImportRange("0ArsOaWajjzv9dEdGTUZCWFc1NnFva05uWkxETVF6Q0E"; "Kuchnia polska!B3:B40"); ImportRange("0ArsOaWajjzv9dEdGTUZCWFc1NnFva05uWkxETVF6Q0E"; "Kuchnia polska!e3:e40")="Warszava")

Хотя признаю, что это не так красиво из-за двух importRange функций.

Надеюсь, это все равно помогло.

person zolley    schedule 25.04.2014