что такое query параметр
QUERY. Функция для создания запросов в Google-Таблицах
Спасибо Евгению Намоконову за помощь в подготовке материала.
Функция QUERY позволяет сделать выборку нужных строк из таблицы с помощью SQL-запроса и отсортировать их.
=QUERY(данные; запрос; [заголовки])
Итак, правила формирования запросов:
Рассмотрим несколько примеров применения QUERY на практике.
Простой пример: выбираем книги определенной тематики из таблицы
Из простой исходной таблицы будем формировать список книг по тематике:
При этом тематику будем выбирать из выпадающего списка на отдельном листе:
Функция QUERY для решения этой задачи будет выглядеть следующим образом:
Мы извлекаем данные из столбцов A и C в диапазоне ‘Книги’!A1:C. Фильтруем данные по столбцу B (тематике) этого диапазона по выбранному критерию из выпадающего списка в ячейке A1. Сортируем по убыванию по столбцу C исходного диапазона и добавляем к нашей выборке заголовки (последний аргумент функции QUERY = 1).
Группируем данные с помощью GROUP BY и PIVOT
Сгруппировать данные, используя QUERY, можно с помощью двух ключевых слов: GROUP BY и PIVOT, ниже рассмотрим примеры с ними.
Таблица, с которой мы будем работать:
Задачей будет вывести сумму продаж по каждой тематике, то есть сгруппировать данные по столбцу B.
Начнем с GROUP BY, текст функции будет таким:
=QUERY(‘Книги‘!A1:C6;»select B, sum(C) group by B»)
Обратите внимание: чтобы функция работала, помимо группировки (group by B) нужна хотя бы одна аггрегирующая функция, в нашем случае это sum(C). Напишу, на всякий случай, все аггрегирующие функции для QUERY: sum(), max(), min(), avg() и count().
Результат нашей формулы:
С помощью GROUP BY возможна группировка и по нескольким столбцам, для этого просто перечислите их, как в функции ниже и не забудьте добавить эти столбцы в SELECT:
Группировка с помощью PIVOT.
Обратите внимание, что здесь в SELECT не нужно писать столбец B, по которому данные будут сгруппированы.
Пока отличие в том, что сгрупированные элементы расположены по столбцам, а не по строкам, как в GROUP BY.
Добавим еще один столбец для группировки.
Строим сводную таблицу со средними/максимальными значениями по тематикам
В этом примере мы построим небольшую сводную таблицу, где будут отображены средние значения по тематикам за два года:
Мы используем похожий диапазон (в отличие от предыдущего в нем есть продажи за 2015 и 2016 годы), извлекаем средние значения по столбцам C и D (SELECT avg(C), avg(D)) и группируем их по столбцу B (тематика).
Полученный результат транспонируем для удобного отображения (с помощью функции TRANSPOSE (ТРАНСП)):
Можно использовать и другие функции вместо avg (среднего), например max (максимальные значения):
Или отобразить и среднее, и максимум, но только по столбцу D:
Кейс «Считаем средний чек, выбирая данные с определенной даты»
На скриншоте массив данных, с которым мы будем работать:
Наша задача: отобрать строки с продажами начиная с 1 апреля и посчитать по ним средний чек, используя количество клиентов, то есть получить среднее взвешенное.
Начнем. Создадим QUERY с умножением количества клиентов (столбец B) на средний чек (столбец С) начиная с определенной даты:
Правильно использовать дату в формуле QUERY так:
Вернемся к тому, что у нас получилось. Наша формула выдала вот такой массив данных:
Это построчные произведения количества клиентов на средний чек. Нам нужно просуммировать их, для этого введем перед формулой СУММ (SUM):
Чтобы получить средний чек, получившееся число нужно разделить на общую сумму клиентов в отобранных строках. Чтобы закрепить использование QUERY, опять воспользуемся этой формулой.
Берем предыдущую формулу, меняем B*C на sum(B) и получаем такую конструкцию:
Наконец, совмещаем формулы:
Все работает, ура! 53 (этот результат видно на всплывающей подсказке в верхнем левом углу) — средний чек с учетом количества клиентов, рассчитанный через среднее взвешенное.
Кейс «QUERY и выпадающий список»
Возьмем табличку с продажами книг. На ее основе будем делать отчет с выпадающим списком, в котором будут все тематики, и формулой QUERY, выводящей книги выбранной тематики и сортирующей их по продажам.
Итак, выпадающий список. Вначале создадим новый лист (допустим, наша исходная таблица огромна, и всю аналитику мы хотим производить на другом листе). Кликаем правой кнопкой мыши на ячейку А1, выбираем Проверка данных.
В Правилах выбираем Значение из списка, перечисляем все наши тематики через запятую и нажимаем Сохранить:
Список получился вот таким:
В соседнюю ячейку А2 впишем следующую формулу:
И разберем ее по частям:
Изменив тематику в ячейке А1 на философию, мы получим книги только по философии, отсортированные по продажам. Удобно.
Если бы в нашей исходной таблице была дата, мы могли бы добавить ее в условие QUERY и выводить данные за выбранный день, месяц, неделю — таким образом можно получить готовый отчет по продажам, который не нужно каждый раз заново собирать.
Query по нескольким диапазонам данных
В качестве первого аргумента функции QUERY можно указать массив, состоящий из нескольких диапазонов данных. Главное, чтобы эти диапазоны были таблицами с одинаковой структурой.
Диапазоны указываются через точку с запятой в фигурных скобках:
Спасибо Евгению Намоконову за помощь в подготовке кейсов для этой статьи. Мы с Евгением ведем канал в Телеграме по Google Таблицам.
Регулярно публикуем новые кейсы и советы. Заглядывайте в гости:
Параметры URL-запроса в отчетах Google Analytics и инструмент для их извлечения
Специалисты, работающие с Google Analytics, видели или знают, что в отчетах с параметром “Страница” (Page) одна и та же страница может дублироваться за счет добавления разных параметров.
В этой статье я расскажу, откуда берутся эти параметры, почему их наличие может мешать, а главное — что с ними делать.
Что такое параметры запроса URL
Параметры запроса URL (URL Query Parameters) — это дополнительная информация, которую можно добавить в URL-адрес. Состоит из двух обязательных элементов: из самого параметра и его значения, разделенных знаком равенства (=).
Параметры указываются в конце URL, отделяясь от основного адреса знаком вопроса (?). Можно указать более одного параметра, для этого каждый параметр со значениями отделяется от следующего знаком амперсанда (&).
Виды параметров
Есть параметры, которые влияют на страницу, к URL-адресу которой они добавлены.
И есть параметры, никак не влияющие на страницу, к URL-адресу которой они добавлены. Их обычно используются для передачи какой-то информации о посещении сайта.
Как посмотреть параметры запросов
Чтобы увидеть все параметры запросов, с которыми взаимодействовали пользователи на сайте, в Google Analytics надо:
На многих сайтах можно увидеть большое количество страниц с разными параметрами.
Что плохого в параметрах запросов
Основная причина, по которой наличие большого количества параметров —плохо, это “размытие” данных о странице.
Посмотрите на отчет ниже. Это данные по взаимодействию с главной страницей и её параметрами за последние 6 месяцев.
В нижнем правом углу показано количество строк в отчете. Более 55 тысяч уникальных параметров, на которые приходится около 20% от всех просмотров главной страницы.
При этом, если сравнить выведенные метрики качества основной главной страницы (/) и главной страницы с параметрами, мы видим существенные отличия.
То есть неконтролируемые параметры могут сильно искажать данные о странице.
Что делать с параметрами
Самое просто решение — исключать их из отчетов Google Analytics. При этом исключаются не сами взаимодействия, а удаляются параметры из URL-адресов страниц, “приклеивая” оставшуюся информацию к основной странице. То есть, если в отчете есть информация о 10 взаимодействиях с основной страницей и информация о 10 взаимодействиях с параметрами этой страницы, после исключения параметров мы получим 20 взаимодействий с основной страницей.
Google Analytics по умолчанию сам умеет исключать параметры (_ga, UTM-метки). Для исключения других параметров в Google Analytics есть удобный встроенный инструмент исключения параметров запросов URL. Находится он в разделе “Администратор > Представление > Настройки представления”.
Достаточно указать в данном поле через запятую все параметры, которые надо исключать из отчетов, и в момент внесения изменений данные в представлении будут отображаться без параметров.
Тут стоит сделать две важные ремарки:
Какие параметры запросов исключать
Из отчетов надо исключать параметры второго вида, то есть те, которые не влияют на работу сайта, но передают дополнительные параметры.
Но перед удалением параметров обязательно надо обсудить с командой проекта, не связан ли какой-нибудь отчет с этими параметрами.
Ниже пример параметров, которые мы обычно исключаем:
Без предварительной подготовки из отчетов не рекомендуется исключать параметры, которые влияют на работу сайта: пагинация, фильтрация, сортировка, действия пользователей. Так как эти параметры могут служить хорошим источником информации для разных исследований и гипотез. Например, какие фильтры с какими значениями предпочитают выбирать пользователи из разных рекламных кампаний.
Отойду от темы и скажу, что часть информации из параметров лучше отправлять в пользовательские параметры. Но это тема отдельной статьи.
Инструмент сбора параметров URL запроса
Раньше для сбора параметров из отчетов Google Analytics необходимо было выгрузить данные из отчетов, выделить параметры, подчистить их, проанализировать.
Но коллеги из 3whitehats разработали инструмент “Google Analytics Query Parameter Extractor”, который позволяет автоматизировать весь процесс, сведя его к нескольким простым шагам. Сам инструмент работает на базе Google Таблиц + расширения Google Analytics Spreadsheet Add-on.
Как пользоваться инструментом:
Все настройки проводятся на первом листе “Query Parameter Extractor”.
Данные в полях с датами необходимо указывать в формате YYYY-MM-DD.
Может потребоваться авторизация скрипта.
В поле ниже будут собраны все найденные параметры, а в круговой диаграмме – частота появления этих параметров.
Надеюсь, эта статья поможет вам внести ясность в тему параметров URL-запросов, а инструмент позволит обрабатывать эти параметры эффективнее и быстрее.
Передача данных query string — Протокол HTTP
Помимо того, что данные на сервер можно передавать через body, которое используется при POST запросах и отправке форм, мы также можем передать так называемую строку запроса query string. Это параметры ключ=значение которые располагаются в request line после указания глагола POST или GET.
Стоит сказать, что указатель на конкретную страницу может отсутствовать и параметры можно передавать на основную страницу домена.
Но как понять, когда и для чего использовать query string? Для этого нужно определить, что на самом деле значат глаголы HTTP. Семантика HTTP-глаголов выражается не только в том, какой вам будет возвращён ответ, а еще и в том, как можно с ним работать. глагол GET считается идемпотентным. Это означает, что его повторное выполнение всегда возвращает один и тот же результат, т.е. это обычный запрос. Мы спрашиваем систему о чём-то, она возвращает нам данные и при этом не изменяет своего внутреннего состояния. Таким образом любой повторный запрос отработает точно так же — детерминировано. В качестве аналогии можно привести чистую функцию. В реальности состояние системы конечно же может поменяться и мы не можем это контролировать, поэтому кэширование не является тривиальной задачей.
POST-запрос, напротив, не является идемпотентным и предназначен для изменения данных. Таким образом повторный запрос может приводить к другим результатам. Если первым POST-запросом мы удаляем данные, то вторым получим ошибку 404. Такие запросы никогда не кешируются.
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.
Настройка ответов с помощью параметров запроса
В Microsoft Graph поддерживаются необязательные параметры запросов, с помощью которых можно указывать и регулировать объем возвращаемых данных. Поддержка определенных параметров запросов варьируется для разных операций API и в зависимости от API может отличаться в конечных точках версии 1.0 и бета-версии.
Параметрами запроса могут быть системные параметры запроса OData или другие параметры запроса.
Системные параметры запроса OData
API Microsoft Graph может поддерживать один или несколько из указанных ниже системных параметров запроса OData. Эти параметры запроса совместимы с языком запросов OData версии 4.
Примечание. OData 4.0 поддерживает системные параметры запросов только в операциях GET.
Щелкните примеры, чтобы попробовать поработать с ними в песочнице Graph.
Другие параметры запроса
Другие возможности URL-адресов OData
Следующие возможности OData 4.0 являются сегментами URL-адресов, а не параметрами запросов.
Имя | Описание | Пример |
---|---|---|
$count | Получает целочисленную сумму коллекции. | GET /users/$count GET /groups/ |
$ref | Обновляет принадлежность объектов к коллекции. | POST /groups/ |
$value | Возвращает или обновляет двоичное значение элемента. | GET /me/photo/$value |
Кодирование параметров запроса
К значениям параметров запросов нужно применить процентное кодирование. Многие клиенты HTTP, браузеры и инструменты (например, песочница Graph) помогут вам в этом. Если запрос неудачный, одна из возможных причин — не удалось должным образом закодировать значения параметров запросов.
URL-адрес, который не было закодирован, выглядит так:
Закодированный должным образом URL-адрес выглядит так:
Пропуск одинарных кавычек
В запросах, использующих одинарные кавычки, если любой параметр также содержит одинарные кавычки, их нужно пропустить дважды; в противном случае запрос завершится сбоем из-за недопустимого синтаксиса. В приведенном примере строковое значение let»s meet for lunch? содержит пропускаемую одинарную кавычку.
Параметр count
Параметр expand
Многие ресурсы Microsoft Graph возвращают как объявленные свойства ресурса, так и его связи с другими ресурсами. Эти связи также называются свойствами ссылки или навигации и могут ссылаться как на один ресурс, так и на коллекцию ресурсов. Например, папки почты, руководитель и подчиненные пользователя выводятся как связи.
В приведенном ниже примере возвращаются сведения о корневом каталоге, а также дочерние элементы верхнего уровня на диске.
Параметр filter
В следующем примере выполняется поиск пользователей, чье отображаемое имя начинается с буквы J.
Фильтрация с помощью лямбда-операторов
OData определяет операторы any и all для проверки совпадений у свойств с несколькими значениями (т. е. либо коллекции примитивов, например типа String, либо коллекции сущностей).
Примечание. Для объектов каталога, например пользователей, операторы NOT и ne поддерживаются только в расширенных запросах.
Примеры использования оператора фильтрации запросов
Примечание. Щелкните примеры, чтобы попробовать поработать с ними в песочнице Graph.
Параметр format
Например, указанный ниже запрос возвращает список пользователей организации в формате JSON.
Параметр orderby
Например, следующий запрос возвращает список пользователей в организации, упорядоченный по отображаемому имени:
Вы также можете сортировать данные по объектам сложного типа. Приведенный ниже запрос позволяет получить сообщения и отсортировать их по полю address свойства from, принадлежащего к сложному типу emailAddress.
Некоторые API дают возможность упорядочивать результаты по нескольким свойствам. Например, следующий запрос позволяет упорядочить сообщения в папке «Входящие» пользователя сначала по имени отправителя по убыванию (от Я до А), а затем — по теме по возрастанию (по умолчанию).
В приведенном ниже примере показан запрос, отфильтрованный по свойствам subject и importance, а затем отсортированный по свойствам subject, importance и receivedDateTime в порядке убывания.
Параметр search
Параметр select
Например, при получении сообщений вошедшего пользователя можно указать, что необходимо вернуть только свойства from и subject:
Параметр skip
Заголовок ConsistencyLevel требуется для расширенных запросов объектов каталога. Этот заголовок по умолчанию не включен в запросы последующих страниц. Его необходимо явным образом задавать на последующих страницах.
Параметр skipToken
Заголовок ConsistencyLevel требуется для расширенных запросов объектов каталога. Этот заголовок по умолчанию не включен в запросы последующих страниц. Его необходимо явным образом задавать на последующих страницах.
Параметр top
Например, следующий запрос сообщений списка возвращает первые пять сообщений в почтовом ящике пользователя:
Заголовок ConsistencyLevel требуется для расширенных запросов объектов каталога. Этот заголовок по умолчанию не включен в запросы последующих страниц. Его необходимо явным образом задавать на последующих страницах.
Обработка ошибок параметров запроса
При этом необходимо отметить, что указанные в запросе параметры могут просто не сработать. Это может произойти, если не поддерживаются либо сами параметры, либо их сочетание. В таких случаях необходимо проверить возвращенные запросом данные и определить, дали ли указанные параметры запроса желаемый результат.
Использование параметров
Параметр служит способом простого хранения и управления значением, которое можно использовать повторно.
Параметры обеспечивают гибкость для динамического изменения выходных данных запросов в зависимости от их значения и могут использоваться для:
Создание параметра
Power Query предоставляет два простых способа создания параметров:
Из существующего запроса — Можно легко щелкнуть правой кнопкой мыши запрос, значение которого является простой неструктурированной константой, такой как, но не ограничена, датой, текстом или числом, и выбрать команду преобразовать в параметр.
Можно также преобразовать параметр в запрос, щелкнув правой кнопкой мыши параметр и выбрав преобразовать в запрос, как показано на следующем рисунке.
Свойства параметра
Параметр сохраняет значение, которое можно использовать для преобразований в Power Query. Помимо имени параметра и значения, которое он хранит, у него также есть другие свойства, которые предоставляют метаданные. Ниже приведены свойства параметра.
Имя — Укажите имя этого параметра, которое позволит легко распознать его и отличать от других параметров, которые вы можете создать.
Описание — Описание отображается рядом с именем параметра при отображении сведений о параметрах, что помогает пользователям, которые задают значение параметра, понять его назначение и его семантику.
Обязательное требование — Флажок указывает, могут ли следующие пользователи указывать, должно ли быть указано значение параметра.
Предлагаемые значения — Предоставляет пользователю предложение выбрать значение для текущего значения из доступных параметров:
Любое значение — Текущим значением может быть любое значение, указанное вручную.
Вы по-прежнему можете вручную ввести любое значение, которое требуется передать в параметр. Список предлагаемых значений служит только в качестве простых предложений.
Запрос — Использует запрос списка (запрос, вывод которого представляет собой список) для предоставления списка предлагаемых значений, которые позже можно выбрать для текущего значения.
Текущее значение — Значение, которое будет храниться в этом параметре.
Где использовать параметры
Параметр может использоваться различными способами, но чаще всего используется в двух сценариях:
В следующих разделах вы увидите пример для этих двух сценариев.
Аргумент Step
В настоящее время эта функция недоступна в Power Query в сети.
Например, можно просмотреть следующие запросы заказов с полями OrderID, Units и Margin.
Можно создать новый параметр с минимальным полем имени с типом десятичного числа и текущим значением 0,2, как показано на следующем рисунке.
Можно открыть запрос заказы и в поле поля выбрать параметр больше чем фильтр.
После нажатия кнопки ОК можно увидеть, что таблица отфильтрована с использованием текущего значения параметра.
Если изменить Текущее значение параметра минимального поля на 0,3, можно сразу же увидеть, как обновляется запрос заказов и отображаются только те строки, в которых маржа превышает 30%.
Множественные преобразования в Power Query предлагают эту возможность выбора параметра из раскрывающегося списка. Поэтому рекомендуется всегда искать и использовать преимущества параметров, которые могут предложить вам.
Аргумент пользовательской функции
Вы можете присвоить имя этой новой функции. В демонстрационных целях имя этой новой функции будет иметь значение MyFunction. После нажатия кнопки ОК в области запросы будет создана новая группа с именем новой функции. В этой группе вы найдете параметры, используемые для функции, запрос, который использовался для создания функции, и саму функцию.
Дополнительные сведения о создании пользовательских функций см. в статье Создание пользовательской функции.