Проверьте, есть ли они в вашей базе данных

В моей предыдущей статье я обсуждал 4 сочетания клавиш BigQuery SQL, которые могут упростить ваши запросы. С тех пор я обнаружил еще 6 полезных функций SQL, о которых мне хотелось бы знать раньше и которыми я хотел бы поделиться сегодня.

1. СОЗДАТЬ МАССИВ

Функция GENERATE_ARRAY позволяет создать массив с начальным и конечным значением, увеличенным на шаг. Это полезно, если вы хотите сгенерировать серию чисел с определенной последовательностью. Обратите внимание, что результат запроса содержит только одну строку данных, поскольку значения находятся в массиве.

2. GENERATE_DATE_ARRAY

Подобно GENERATE_ARRAY, функция GENERATE_DATE_ARRAY позволяет создавать массив дат с интервалом шага. Это полезно, если вам нужно создать ряд дат с определенными интервалами. Ниже я создал 14 дат с интервалом в 1 день, но вы можете использовать любой интервал, поддерживаемый BigQuery, например НЕДЕЛЮ, МЕСЯЦ и ГОД.

3. НЕСТ

Функция UNNEST позволяет создавать строки для каждого значения массива. UNNEST можно использовать в сочетании с GENERATE_ARRAY или GENERATE_DATE_ARRAY. Эта функция была полезна, когда мне нужен был основной список дат для объединения, чтобы убедиться, что у меня есть значения для всех дат в запрашиваемом периоде времени.

В приведенном ниже запросе я создал CTE с именем two_weeks, а затем использовал функцию UNNEST для результирующего столбца массива с именем date_array, чтобы создать ряд на дату. Чтобы UNNEST работал правильно, вы должны добавить запятую послеCTEили имени таблицы, из которой вы запрашиваете и затем вызовитефункцию UNNEST для столбца массива. Обратите внимание, что результаты запроса показывают 14 строк, указывающих, что UNNEST создал строку для каждой даты в массиве дат.

4. ПОСЛЕДНИЙ_ДЕНЬ

Функция LAST_DAY возвращает последний день месяца для заданной даты. Это полезно, если вам нужно указать последний день месяца для целей отчетности.

В приведенном ниже запросе я создал CTE с именем one_year, используя массив GENERATE_DATE_ARRAY, содержащий первую дату каждого месяца в 2022 году, а затем вызвал функцию LAST_DAY, чтобы создать второй столбец с последний день месяца. Результаты запроса показывают начало и конец каждого месяца в 2022 году.

5 / 6. НАИМЕНЬШИЙ и САМЫЙ БОЛЬШОЙ

НАИМЕНЬШИЙ возвращает наименьшее значение среди набора значений или столбцов, а НАИБОЛЕЕ показывает наибольшее значение. Обратите внимание, что если какой-либо из аргументов имеет значение NULL, то возвращается значение NULL.

В приведенном ниже примере я использовал функции НАИМЕНЬШИЙ и САМЫЙ БОЛЬШОЙ для возврата наименьшего и наибольшего значений в трех столбцах из моей таблицы-образца test_greatest_least. Обратите внимание, что НАИМЕНЬШИЙ и НАИБОЛЬШИЙ отличаются от функций МИН и МАКС, которые просматривают все строки столбца в таблице. Здесь MIN и MAX для col_a вернут 0 как наименьшее значение среди 10 строк, а MAX вернет 5.

Последние мысли

Хотя функции, которые я упомянул, доступны в BigQuery, некоторые из них, такие как LAST_DAY, GREATEST и LEAST, доступны в других базах данных, таких как Redshift и Snowflake. Если у вас есть несколько минут, я настоятельно рекомендую прочитать вашу документацию по базе данных, потому что вы никогда не знаете, какие полезные функции вы можете найти.

Примечание. Все приведенные выше запросы выполнялись в песочнице BigQuery, которая бесплатна для всех, у кого есть аккаунт Google.

Вам также может понравиться…