Примеры использования функций
Задача | Функция | Пример использования | Расшифровка примера |
---|---|---|---|
Извлечь числовое id из utm-метки (или иной параметр). | REGEXP_EXTRACT(value, regex) | REGEXP_EXTRACT(ga_adcontent, "\\\\\|cid\\\\\|(\\\\d+)") | Извлечет id кампании из метки utm_content. |
Извлечь и заменить любое значение из utm-метки (или из названия кампании, и т.д.). | REGEXP_REPLACE(value, regex, replacement) | REGEXP_REPLACE(ga_campaign, "\\\\\|(\\w+)","Название кампании") | Заменит в стандартной utm-метке К50 "техническое" название кампании на заданное пользователем. |
Обрезать лишнюю временную детализацию. | DATETIME_TRUNC(Название столбца, Уровень "обрезки" - напр., DAY) | DATETIME_TRUNC(date, DAY) | Обрежет часы на звонках. |
Посчитать разницу в днях (и др. временных промежутках) между стартовой и конечной датой. | DATETIME_DIFF(datetime_expression, datetime_expression, part) | Calls_plan/(DATETIME_DIFF(Date_end, Date_start, DAY)+1) | Считает разницу между date_end и date_start в днях, +1 добавлено чтобы корректно учесть возможный 0; все выражение считает среднее кол-во звонков на один день флайта. |
Извлечь номер недели в текстовом формате. | CAST(EXTRACT(ISOWEEK FROM date) AS STRING) | CAST(EXTRACT(ISOWEEK FROM date) AS STRING) | Извлечет номер недели в текстовом формате. |
Извлечь номер месяца в текстовом формате. | CAST(EXTRACT(MONTH FROM date) AS STRING) | CAST(EXTRACT(MONTH FROM date) AS STRING) | Извлечет номер месяца в текстовом формате. |
Используется, чтобы при разных условиях совершать разные действия. | CASE WHEN - THEN - ELSE - END | Пример использования CASE WHEN utmsource LIKE "yandex" AND utmmedium LIKE "cpc" THEN REGEXP_EXTRACT(utmcontent, "\\\\\|cid_(\\d+)") WHEN utmsource LIKE "google" AND utmmedium LIKE "cpc" THEN REGEXP_EXTRACT(utmcontent, "\\\\\|cid_(\\d+)") ELSE "No CampaignId" END | Выводим название системы, вместо "технических" значений. |
Используется, чтобы при разных условиях совершать разные действия. | CASE WHEN - THEN - ELSE - END | Пример использования CASE WHEN utmsource LIKE "yandex" AND utmmedium LIKE "cpc" THEN "Директ" WHEN utmsource LIKE "google" AND utmmedium LIKE "cpc" THEN "AdWords" ELSE "Else" END | Декомпозиция id кампании. |
Используется, чтобы при разных условиях совершать разные действия. | CASE WHEN - THEN - ELSE - END | CASE WHEN uniqtargetcall THEN 1 ELSE 0 END | Подсчет ун-цел звонков в системе колл-трекинга, для дальнейшего получения суммы звонков. |
Объединить 2 строки в одну (аналог СЦЕПИТЬ в EXCEL). | CONCAT(value1[, ...]) | - | - |
Узнать количество символов в строке. | LENGTH(value) | - | - |
Привести строку к нижнему регистру. | LOWER(value) | LOWER(ga_campaign) | Используется, чтобы привести все к одному регистру для дальнейшей работы с данными и игнорирования фактора регистра. |
Заменить одно значение на другое. | REPLACE(original_value, from_value, to_value) | - | - |
Привести строку к верхнему регистру. | UPPER(value) | UPPER(ga_campaign) | Используется реже, обратная функция от LOWER. |
Посчитать среднее значение (только для настраиваемых метрик). | AVG(expression) [OVER (...)"] | AVG(cost) | Средний расход по сегментам. Можно использовать с OVER, чтобы считать среднее по заданному массиву (например, по кампаниям, которые содержат "Msk"). |
Посчитать количество (строк) (только для настраиваемых метрик). | COUNT(*) [OVER (...)] / COUNT([DISTINCT] expression) [OVER (...)] | - | - |
Посчитать количество (строк), удовлетворяющих условию (только для настраиваемых метрик). | COUNTIF(expression) [OVER (...)] | - | - |
Узнать максимальное значение (только для настраиваемых метрик). | MAX(expression) [OVER (...)] | - | - |
Узнать минимальное значение (только для настраиваемых метрик). | MIN(expression) [OVER (...)] | - | - |
Посчитать сумму (только для настраиваемых метрик). | SUM([DISTINCT] expression) [OVER (...)] /> | - | - |
Округление числовых значений. | ROUND(expression,количество знаков до запятой). | - | - |
Поменять тип данных для значения. | CAST(expression as тип данных) | CAST(EXTRACT(MONTH FROM date) AS STRING) | Преобразует месяц, извлеченный из даты, и номер месяца конвертирует в текст. Например, чтобы избежать в дальнейшем суммирования значений. |
Извлечь значение из JSON-объекта. | JSON_EXTRACT(json_string_expr, json_path_string_literal) | Пример использования \[{"tag_name":"обрыв связи","tag_id":62249,"tag_employee_full_name":null"} JSON_EXTRACT(tags, '$.tag_name') {"tag_name":"обрыв связи","tag_id":62249,"tag_employee_full_name":null"}] /> JSON_EXTRACT(tags, '$.tag_name') | Обращение происходит как в JSON-объекту. Начинается со знака $. В первом примере мы сразу обращаемся к нужному значению. Во втором случае мы работаем с массивом, поэтому необходимо указать какой по очереди объект нам нужен. |
Задача | Функция | Пример использования | Расшифровка примера |
---|---|---|---|
Извлечь числовое id из utm-метки (или иной параметр). | REGEXP_EXTRACT(value, regex) | REGEXP_EXTRACT(ga_adcontent, "\\\\\|cid\\\\\|(\\\\d+)") | Извлечет id кампании из метки utm_content. |
Извлечь и заменить любое значение из utm-метки (или из названия кампании, и т.д.). | REGEXP_REPLACE(value, regex, replacement) | REGEXP_REPLACE(ga_campaign, "\\\\\|(\\w+)","Название кампании") | Заменит в стандартной utm-метке К50 "техническое" название кампании на заданное пользователем. |
Обрезать лишнюю временную детализацию. | DATETIME_TRUNC(Название столбца, Уровень "обрезки" - напр., DAY) | DATETIME_TRUNC(date, DAY) | Обрежет часы на звонках. |
Посчитать разницу в днях (и др. временных промежутках) между стартовой и конечной датой. | DATETIME_DIFF(datetime_expression, datetime_expression, part) | Calls_plan/(DATETIME_DIFF(Date_end, Date_start, DAY)+1) | Считает разницу между date_end и date_start в днях, +1 добавлено чтобы корректно учесть возможный 0; все выражение считает среднее кол-во звонков на один день флайта. |
Извлечь номер недели в текстовом формате. | CAST(EXTRACT(ISOWEEK FROM date) AS STRING) | CAST(EXTRACT(ISOWEEK FROM date) AS STRING) | Извлечет номер недели в текстовом формате. |
Извлечь номер месяца в текстовом формате. | CAST(EXTRACT(MONTH FROM date) AS STRING) | CAST(EXTRACT(MONTH FROM date) AS STRING) | Извлечет номер месяца в текстовом формате. |
Используется, чтобы при разных условиях совершать разные действия. | CASE WHEN - THEN - ELSE - END | Пример использования CASE WHEN utmsource LIKE "yandex" AND utmmedium LIKE "cpc" THEN REGEXP_EXTRACT(utmcontent, "\\\\\|cid_(\\d+)") WHEN utmsource LIKE "google" AND utmmedium LIKE "cpc" THEN REGEXP_EXTRACT(utmcontent, "\\\\\|cid_(\\d+)") ELSE "No CampaignId" END | Выводим название системы, вместо "технических" значений. |
Используется, чтобы при разных условиях совершать разные действия. | CASE WHEN - THEN - ELSE - END | Пример использования CASE WHEN utmsource LIKE "yandex" AND utmmedium LIKE "cpc" THEN "Директ" WHEN utmsource LIKE "google" AND utmmedium LIKE "cpc" THEN "AdWords" ELSE "Else" END | Декомпозиция id кампании. |
Используется, чтобы при разных условиях совершать разные действия. | CASE WHEN - THEN - ELSE - END | CASE WHEN uniqtargetcall THEN 1 ELSE 0 END | Подсчет ун-цел звонков в системе колл-трекинга, для дальнейшего получения суммы звонков. |
Объединить 2 строки в одну (аналог СЦЕПИТЬ в EXCEL). | CONCAT(value1[, ...]) | - | - |
Узнать количество символов в строке. | LENGTH(value) | - | - |
Привести строку к нижнему регистру. | LOWER(value) | LOWER(ga_campaign) | Используется, чтобы привести все к одному регистру для дальнейшей работы с данными и игнорирования фактора регистра. |
Заменить одно значение на другое. | REPLACE(original_value, from_value, to_value) | - | - |
Привести строку к верхнему регистру. | UPPER(value) | UPPER(ga_campaign) | Используется реже, обратная функция от LOWER. |
Посчитать среднее значение (только для настраиваемых метрик). | AVG(expression) [OVER (...)"] | AVG(cost) | Средний расход по сегментам. Можно использовать с OVER, чтобы считать среднее по заданному массиву (например, по кампаниям, которые содержат "Msk"). |
Посчитать количество (строк) (только для настраиваемых метрик). | COUNT(*) [OVER (...)] / COUNT([DISTINCT] expression) [OVER (...)] | - | - |
Посчитать количество (строк), удовлетворяющих условию (только для настраиваемых метрик). | COUNTIF(expression) [OVER (...)] | - | - |
Узнать максимальное значение (только для настраиваемых метрик). | MAX(expression) [OVER (...)] | - | - |
Узнать минимальное значение (только для настраиваемых метрик). | MIN(expression) [OVER (...)] | - | - |
Посчитать сумму (только для настраиваемых метрик). | SUM([DISTINCT] expression) [OVER (...)] /> | - | - |
Округление числовых значений. | ROUND(expression,количество знаков до запятой). | - | - |
Поменять тип данных для значения. | CAST(expression as тип данных) | CAST(EXTRACT(MONTH FROM date) AS STRING) | Преобразует месяц, извлеченный из даты, и номер месяца конвертирует в текст. Например, чтобы избежать в дальнейшем суммирования значений. |
Извлечь значение из JSON-объекта. | JSON_EXTRACT(json_string_expr, json_path_string_literal) | Пример использования \[{"tag_name":"обрыв связи","tag_id":62249,"tag_employee_full_name":null"} JSON_EXTRACT(tags, '$.tag_name') {"tag_name":"обрыв связи","tag_id":62249,"tag_employee_full_name":null"}] /> JSON_EXTRACT(tags, '$.tag_name') | Обращение происходит как в JSON-объекту. Начинается со знака $. В первом примере мы сразу обращаемся к нужному значению. Во втором случае мы работаем с массивом, поэтому необходимо указать какой по очереди объект нам нужен. |
Дополнительно вы можете воспользоваться справочными материалами BigQuery.