Выберите столбцы по имени, а не по букве в Google Query Language (GQL) с помощью электронных таблиц Google?
вопрос новичка, можно ли выбирать столбцы по имени, а не по букве при использовании языка запросов Google с электронными таблицами Google?
Это отлично работает для меня: "выберите A, COUNT (B) GROUP BY A"
было бы здорово, если бы я мог использовать заголовки столбцов в первой строке, больше похоже на базу данных, как в:
"выберите студента, подсчет (задержание) группы по студенту"
Я подозреваю, что это невозможно, но надеюсь, что это еще один случай, когда мой интернет поисковые навыки подвели меня.
3 ответов
в настоящее время не представляется возможным. В документации GQL указано[1] " на столбцы ссылаются идентификаторы (а не метки). Например, в электронной таблице Google идентификаторами столбцов являются одна или две символьные буквы столбцов (A, B, C,...)."
Если вы хотите сделать это в электронной таблице, можно с помощью следующей формулы преобразовать имя заголовка столбца в букву (может потребоваться некоторая настройка +1 (может быть +2)). Он также полагается на то, что заголовки столбцов уникальны и не содержит запятых
=REGEXEXTRACT(ADDRESS(1,COUNTA(SPLIT(LEFT(JOIN(",",TRANSPOSE(1:1)),FIND("your_column_name",JOIN(",",TRANSPOSE(1:1)))),","))+1,4);"[a-zA-Z]+")
[1] https://developers.google.com/chart/interactive/docs/querylanguage#Select
немного проще:
SELECT "&SUBSTITUTE(ADDRESS(1,MATCH("student",Sheet1!A1:B1,0),4),1,"")&", COUNT("&SUBSTITUTE(ADDRESS(1,MATCH("detention",Sheet1!A1:B1,0),4),1,"")&") GROUP BY "&SUBSTITUTE(ADDRESS(1,MATCH("student",Sheet1!A1:B1,0),4),1,"")
я обнаружил, что, когда вы используете IMPORTRANGE
функция на внешних диапазонах преобразуется из Буквы в номер столбца и поможет вам в этом вопросе.
Я хотел выбрать столбец на основе его имени поля, но проблема для меня заключалась в том, что столбец для просмотра, вероятно, изменится в будущем. Поэтому я использовал MATCH
функция для идентификации столбца, поэтому она выглядит примерно как
=QUERY(IMPORTRANGE("spreadsheet url","NamedRange"),"SELECT Col"&MATCH("FieldName",FieldNameRowAddress/RangeName,FALSE)")
самое смешное, что вы должны позволить разрешение на доступ к себе.
я назвал свои диапазоны, которые я импортирую, чтобы сделать его еще более будущим доказательством.