Google BigQuery — зачем нужна облачная база данных > NetPeak - Независимость и осознанность
NetPeak Biz Tech    


Google BigQuery — зачем нужна облачная база данных

Google BigQuery — зачем нужна облачная база данных

< >

Ранее я публиковал цикл материалов о работе с Google BigQuery. В этой статье расскажу о преимуществах и особенностях сервиса, а также о дополнительных инструментах для BigQuery.

Google BigQuery — это облачная база данных с высочайшей скоростью обработки огромных массивов данных.

Как начать работу в Google BigQuery

Войдите в Google Cloud Platform. При первом запуске система предложит активировать бесплатный пробный период и получить кредит $300 на 12 месяцев. Честно говоря, чтобы потратить за год в BigQuery эту сумму, вам придется очень сильно постараться.

Для дальнейшей работы введите платежные данные.

Нажмите «Выбрать проект».

Затем — «Создать проект».

Примите условия использования платформы.

Наконец, назовите проект, задайте настройки уведомлений и еще раз согласитесь с условиями использования платформы.

После подтверждения подождите несколько минут.

Вскоре вы получите оповещение, что проект создан.

Перейдите в раздел оплаты и привяжите платежный аккаунт.

Теперь проект привязан к только что созданному платежному аккаунту.

Перейдите в интерфейс Google BigQuery и напишите свой первый запрос.

Чтобы открыть редактор запросов, нажмите «Compose query» или сочетание клавиш «Ctrl + Space».

Рассмотрим, как написать первый запрос на примере публичных данных в BigQuery. Возьмите первые 15 строк из таблицы project_tycho_reports, которая находится в наборе публичных данных lookerdata.

SELECT *FROM [lookerdata:cdc.project_tycho_reports]LIMIT 25

Запрос вернет результат:

Как начать работу с BigData — загружаем данные в Google BigQuery Ранее я описывал самые простые способы загрузки собственных данных в Google BigQuery, а в этой статье расскажу, как загрузить данные с помощью языка R. Но перед этим разберем важный вопрос.

Истории бизнеса и полезные фишки

Почему стоит выбрать именно Google BigQuery

Скорость — это основное преимущество BigQuery, но не единственное. BigQuery — облачный сервис. При его использовании не понадобится арендовать сервер и оплачивать поддержку.

Стоимость BigQuery значительно ниже стоимости аренды самого примитивного сервера: даже если вы очень постараетесь и будете ежедневно записывать в эту базу данных миллионы строк, все равно вряд ли сможете потратить более $5.

Следующее преимущество — простота использования. В любой другой системе управления базами данных (СУБД) помимо знания SQL придется долго разбираться с тонкостями администрирования и настройками базы.

И если сам по себе SQL-диалект во всех базах данных очень похожий, то административная часть, как правило, везде устроена по-разному.

У BigQuery всю административную часть на себя взял Google. В этом сервисе нет никаких настроек, индексов, движков таблиц, тайм-аутов или внешних ключей. Реализована поддержка только одной кодировки UTF-8.

Для работы с BigQuery достаточно знать, как загрузить данные в BigQuery, и иметь базовые знания в SQL.

Несмотря на простоту, в BigQuery реализована поддержка пpaктически всех функций СУБД:

Правда, на момент публикации статьи сервис не поддерживает:

  • рекурсивные запросы;
  • создание хранимых процедур и функций;
  • транзакции.

Особенности SQL для Google BigQuery

BigQuery умеет переключаться между стандартным SQL и диалектами.

DML-операции INSERT, UPDATE и DELETE на данный момент поддерживаются только при использовании стандартного SQL.

Еще одно отличие между этими диалектами — способ вертикального объединения таблиц. В стандартном SQL для этого служит оператор UNION и ключевое слов ALL или DISTINCT:

SELECT 12 AS A, 32 AS BUNION ALLSELECT 2 AS A, 29 AS B

В собственном SQL-диалекте функционал для вертикального объединения таблиц значительно шире. Существует специальный набор функций подстановки таблиц (Table Wildcard Functions).

Как обpaбатывать данные из множества таблиц в Google BigQuery Этот способ объединения таблиц я уже подробно описывал ранее.

Для простого объединения достаточно просто перечислить названия нужных таблиц или подзапросы через запятую. Объединение запросов из примера выше на внутреннем диалекте SQL в BigQuery будет выглядеть так:

SELECT *FROM (SELECT 12 AS A, 32 AS B), (SELECT 2 AS A, 29 AS B)

Переключатель между SQL-диалектами в BigQuery находится в интерфейсе в блоке опций: нажмите кнопку Show options под редактором запросов.

С помощью галочки «SQL Dialect» переключитесь на нужный диалект.

Инструменты для работы с BigQuery

Мы уже разобрались, как загружать данные в базу и как обращаться к данным SQL запросами. Но вряд ли вы хотите взаимодействовать с данными, ограничившись этими возможностями. Скорее всего, вы загружаете данные для построения дашбордов или чего-то подобного.

Как связать Microsoft Power BI и Google BigQuery Интеграция Google BigQuery c BI-платформами и электронными таблицами Как получить данные в различных BI платформах, я писал в статьях об интеграции с электронными таблицами и Microsoft Power BI.

Microsoft Power BI, как и большинство популярных  BI-систем и электронных таблиц, с июля 2017 года поддерживает интеграцию с Google BigQuery из коробки. У коннектора довольно скудные возможности: он не умеет обращаться к сохраненным представлениям или отправлять в BigQuery запросы. Пока что с помощью встроенного коннектора можно вытягивать только плоские таблицы.

Simba Drivers

Если вам необходимо получить данные из Google BigQuery в электронной таблице или BI-системе, которая из коробки не поддерживает интеграцию, воспользуйтесь бесплатным Simba Drivers.

Этот драйвер поддерживает все необходимые возможности, включая переключения SQL-диалектов. Подробности настройки ищите в моей статье о связке Microsoft Power BI и Google BigQuery.

Язык R

Язык R — один из самых мощных инструментов для работы с данными. Он умеет как получать данные из Google BigQuery, так и записывать их. Для этого удобнее всего пакет bigrquery.

Для начала установите язык R. Также для удобства работы с R я рекомендую установить интегрированную среду разработки RStudio.

Запустите RStudio и с помощью сочетания клавиш «Ctrl+Alt+Shift+0» откройте все доступные в ней панели. Чаще всего понадобятся панели Source и Console.

Для установки develop-версии пакета bigrquery из репозитория на GitHub предварительно установите пакет devtools. Введите в окно Source код, затем выделите его (зажмите левой кнопки мыши) и нажмите «Ctrl+Enter» для выполнения комaнды:

install.packages(\"devtools\")

Теперь установите пакет bigrquery:

devtools::install_github(\"rstats-db/bigrquery\")

Чтобы в R были доступны функции пакета, после установки подключите их с помощью комaнды library или require. Например, подключим пакет bigrquery с помощью кода:

library(bigrquery)

Структура данных в Google BigQuery состоит из проекта с набором данных, содержащим таблицы. Проект вы уже создали, а теперь для передачи информации создайте набор данных. Выберите в интерфейсе из выпадающего меню «Create new dataset».

Чтобы создать набор данных с помощью языка R, воспользуйтесь комaндой insert_dataset. Комaнда требует всего 2 аргумента:

project — ID проекта (возьмите из URL в BigQuery).

dataset — название нового набора данных.

Давайте создадим первый набор данных с названием myFirstDataSet. Введите в область Source приведенный ниже код, выделите комaнду с помощью мыши и нажмите «Ctrl+Enter» для выполнения.

insert_dataset(project = \"myfirstproject-185308\", dataset = \"myFirstDataSet\")

В окне Console в RStudio появится запрос о создании учетных данных, чтобы в дальнейшем не требовалась повторная аутентификация.

Введите на запрос Selection в Console ответ Yes и нажмите Enter. Откроется браузер — разрешите доступ к данным и получите авторизационный код.

Скопируйте сгенерированный код. Затем вставьте его в Console RStudio в ответ на запрос авторизационного кода и нажмите Enter.

Отлично, вы создали набор данных.

Теперь запишите встроенную в R таблицу mtcars в набор данных myFirstDataSet. Для передачи данных из R в BigQuery в пакете bigrquery есть функция insert_upload_job. Она принимает такие аргументы:

project — ID проекта (смотрите либо в URL проекта, либо в режиме переключения проектов).

dataset — название набора данных, куда вы планируете отправить данные. В нашем случае myFirstDataSet.

table — название таблицы с записанными данными.

values — data frame (таблица данных) в R с данными для передачи в BigQuery.

billing = project аккаунта для оплаты операции. По умолчанию — платежный аккаунт, который привязан к проекту.

create_disposition — опция для определения необходимых действий.
Если в BigQuery нет таблицы с заданным в аргументе table названием, укажите \"CREATE_IF_NEEDED\" — система создаст новую таблицу.
Если указать \"CREATE_NEVER\" и таблица с заданным именем не найдется в наборе данных, будет возвращена соответствующая ошибка.

write_disposition — опция для выбора добавления данных в существующую таблицу.
\"WRITE_APPEND\" — дописать данные в таблицу.
\"WRITE_TRUNCATE\" — перезаписать данные в таблице.
\"WRITE_EMPTY\" — записать данные для пустой таблицы.

Код для передачи в BigQuery встроенной в R таблицы mtcars:

insert_upload_job(project = \"myfirstproject-185308\", dataset = \"myFirstDataSet\", table = \"mtcars_bigquery\", values = mtcars, create_disposition = \"CREATE_IF_NEEDED\", write_disposition = \"WRITE_APPEND\")

При успешном выполнении операции в консоли R появится дополнительная информация, а в интерфейсе BigQuery — созданная таблица mtcars_bigquery.

Для запроса данных из BigQuery в R в пакете bigrquery предназначена функция query_exec. Основные аргументы:

query — текст SQL-запроса, результат которого вы хотите загрузить в R.

project — ID проекта для запроса данных.

page_size — максимальный размер возвращаемого результата в строках (по умолчанию 10 000).

max_pages — максимальное количество страниц возврата запросом (по умолчанию 10).

use_legacy_sql — выбор SQL-диалекта для обработки запроса.
По умолчанию задано значение TRUE с внутренним диалектом BigQuery.
Для стандартного диалекта SQL задайте в этом аргументе значение FALSE.

Для обратного запроса данных, которые вы отправили в BigQuery на прошлом шаге, задайте комaнду:

bq_mtcars_table <- query_exec(query = \"SELECT * FROM myFirstDataSet.mtcars_bigquery\", project = \"myfirstproject-185308\", use_legacy_sql = TRUE)

В рабочем окружении (описание которого вы видите в окне Environment) появится новый объект bq_mtcars_table.

Выводы

Google BigQuery — простой и в то же время мощнейший инструмент для хранения и обработки данных. Это облачная база данных с поддержкой большинства функций СУБД.

Сервис обходится значительно дешевле содержания, поддержки и администрирования сервера для бесплатных баз данных (MySQL или PostgreSQL).

Надеюсь, мой цикл инструкций для начала работы с Google BigQuery упростит ваши будни.

Успехов в работе с большими данными!



Комментарии:

Что делать с бизнесом, когда нужен взрывной рост и позиция лидера ниши

Что делать с бизнесом, когда нужен взрывной рост и позиция лидера ниши Как стать лидером ниши не на словах, а на деле. Пошаговый алгоритм....

24 04 2024 10:28:36

Как найти потерянные конверсии — полное руководство

Как найти потерянные конверсии — полное руководство Настраиваем автоматическое получение отчетов по потерянным конверсиям для оптимизации рекламных кампаний....

23 04 2024 20:20:41

Как эффективно настроить рекламные кампании в Apple Search Ads — zoom-митап с Радомиром Новковичем

Как эффективно настроить рекламные кампании в Apple Search Ads — zoom-митап с Радомиром Новковичем 5 мая в 17:00 — митап в Zoom с Радомиром Новковичем — фаундером RadASO и CEO Tonti Laguna Mobile....

22 04 2024 16:20:52

Как работают расширенные объявления Google Рекламы — кейсы

Как работают расширенные объявления Google Рекламы — кейсы Стоит ли торопиться с переходом на новый формат объявлений? Эксперимент PPC-специалистов агентства Netpeak....

21 04 2024 0:26:59

Запорожский козак на динозавре, реклама наркотиков в Instagram и «курка» вместо SPAM — мартовская реклама в соцсетях

Запорожский козак на динозавре, реклама наркотиков в Instagram и «курка» вместо SPAM — мартовская реклама в соцсетях Чем радовала, смущала и шокировала реклама в социальных сетях в марте 2021-го...

20 04 2024 19:40:22

Агентство Netpeak вышло на рынок Болгарии

Агентство Netpeak вышло на рынок Болгарии Агентство интернет-маркетинга Netpeak вышла на новые рекламные горизонты и приобрело 51% доли болгарской компании Optimization.bg....

19 04 2024 11:10:29

Как работать с ключевыми словами в Excel

Как работать с ключевыми словами в Excel Как определить и повысить качество парсинга ключевых слов — лайфхак с применением Microsoft Excel....

18 04 2024 5:38:51

Правила группировки фраз для семантического ядра сайта

Правила группировки фраз для семантического ядра сайта Грамотная группировка поисковых запросов позволяет максимально увеличить поисковой трафик....

17 04 2024 8:59:30

Как заявить права на сайт в Google Merchant Center

Как заявить права на сайт в Google Merchant Center Здесь не нужно часами собирать семантику, прописывать уйму расширений и создавать максимально релевантные объявления под каждый товар, а потому вам нужен этот понятный и короткий мануал! Читайте дальше!...

16 04 2024 16:26:39

Скрам-система — внедрить и отказаться. Опыт компании Boosta

Скрам-система — внедрить и отказаться. Опыт компании Boosta Внедрение скрама, чтобы решить проблемы в управлении бизнесом, год работы на нем и отказ от методологии. Читайте об опыте Boosta, которая объединяет 9 SEO-комaнд на удаленке....

15 04 2024 5:46:31

Песочница Netpeak: бесплатная площадка для ваших статей

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

14 04 2024 3:28:33

Как загрузить статистику рекламных кампаний из API Facebook с помощью языка R

Как загрузить статистику рекламных кампаний из API Facebook с помощью языка R Хотите качественно руководить рекламной кампанией в Facebook? Как подключиться к API Facebook и получение статистики в R — рассказывает Алексей Селезнев....

13 04 2024 3:37:50

Коммуникация брендов на карантине: хорошие примеры SMM и PR

Что постить предпринимателям в соцсетях. Несколько примеров уместной работы SMM- и PR-специалистов, которые прямо и четко помогают озвучить позицию бизнеса в период карантина. Узнайте больше, чем действовать правильно!...

12 04 2024 2:29:36

Инфографика: как именно рулит контент

Инфографика: как именно рулит контент Консультант по маркетингу в зоне ru Екатерина Решетило написала пост о том, как правильно настроить стратегический контент-маркетинг для долгосрочных продаж...

11 04 2024 6:10:23

Как написать кейс — руководство для технарей на примере кейса Citrus и Netpeak в блоге Google

Как написать кейс — руководство для технарей на примере кейса Citrus и Netpeak в блоге Google Как написать годный кейс и победить страх чистого листа...

10 04 2024 22:17:20

Макс Бурцев (Arriba): «Некреативных людей придумало общество»

Макс Бурцев (Arriba): «Некреативных людей придумало общество» О работе, креативности, мотивации и многом другом....

09 04 2024 3:17:14

Краткий курс машинного обучения, или Как создать нейронную сеть для решения задачи по скорингу

Краткий курс машинного обучения, или Как создать нейронную сеть для решения задачи по скорингу Нейронные сети, нейросети онлайн, сверхточные нейронные сети. Я рассажу, как они устроены, как написать свою нейронную сеть с нуля, как правильно обучить нейронную сеть на имеющихся данных...

08 04 2024 11:32:50

Почему для пользователей разных устройств нужны разные стратегии контекстной рекламы — кейс

Почему для пользователей разных устройств нужны разные стратегии контекстной рекламы — кейс Как снизить цену за привлечение клиента на 50%, развивая только кампании для пользователей десктопов....

07 04 2024 11:23:23

Редизайн писем в email-маркетинге — на что обратить внимание

Иногда даже замена блока с промокодом или обновление хедера и футера способны освежить рассылки и принести продажи, заявки, повысить лояльность клиентов. Узнать больше!...

06 04 2024 19:26:39

Как Netpeak продвигает бизнес-страницы на OLX — вторая часть

Как Netpeak продвигает бизнес-страницы на OLX — вторая часть Как мы продвигали бизнес-страницы OLX с помощью рекламы в Facebook, TikTok и Viber....

05 04 2024 19:13:12

Кейс: как провести анализ конкурентов с помощью SimilarWeb

Кейс: как провести анализ конкурентов с помощью SimilarWeb Определение, исследование и проверка конкурентов в Similarweb — первый шаг перед запуском и масштабированием проекта...

04 04 2024 4:15:33

Аудит мобильной версии сайта — подробное руководство

Аудит мобильной версии сайта — подробное руководство О видах мобильных версий, их плюсах и минусах, а также советы по аудиту....

03 04 2024 13:39:14

Как связать Twitter, Google Buzz, Facebook и Vkontakte.ru

Как связать Twitter, Google Buzz, Facebook и Vkontakte.ru Как сделать так, чтобы статусы автоматически трaнcлировались в Twitter...

02 04 2024 4:57:31

Как настроить email-маркетинг с нуля до окупаемости инвестиций за один месяц. Кейс Mechta.kz

Как настроить email-маркетинг с нуля до окупаемости инвестиций за один месяц. Кейс Mechta.kz Рост дохода в шесть раз, ROMI +500% за пять месяцев....

01 04 2024 8:57:55

Кейс по SMM в тематике «посуда»: фотоконкурс для стимуляции активности в сообществе

Кейс по SMM в тематике «посуда»: фотоконкурс для стимуляции активности в сообществе Фотоконкурс для стимуляции активности в сообществе, прироста фанов и поощрения лояльной аудитории....

31 03 2024 16:43:43

35 ошибок при А/В-тестировании

35 ошибок при А/В-тестировании Опыт контент студии WordFactory и 14 экспертов интернет-маркетинга....

30 03 2024 13:25:51

Группировка ключевых фраз для рекламных кампаний — подробный обзор методов

Группировка ключевых фраз для рекламных кампаний — подробный обзор методов Как правильно группировать ключевые фразы для релевантности рекламных кампаний...

29 03 2024 1:18:38

Epic vs Apple — первый раунд битвы

Epic vs Apple — первый раунд битвы Следим за развитием событий и анализируем решение суда. Читать дальше!...

28 03 2024 4:14:16

Создаем спрос на бренд с помощью видеорекламы — кейс в тематике «металлопластиковые окна»

Создаем спрос на бренд с помощью видеорекламы — кейс в тематике «металлопластиковые окна» Как продвинуть бренд в конкурентной тематике? Читаем новый кейс по видеорекламе....

27 03 2024 2:19:20

Сколько стоил клик в Google Ads и Яндекс.Директ в Казахстане в четвертом квартале 2020 года — исследование Netpeak

Сколько стоил клик в Google Ads и Яндекс.Директ в Казахстане в четвертом квартале 2020 года — исследование Netpeak Данные Google по 6 миллионам кликов 16 городах страны и данные Яндекс по 520 346 кликам, в 54 городах страны в 22 тематиках в обоих рекламных системах. Узнать больше!...

26 03 2024 3:37:14

Big Money: как Netpeak Group связана с Сингапуром

Big Money: как Netpeak Group связана с Сингапуром Всё о крупной рыбе украинского интернет-маркетинга: компании, люди, кейсы в интервью с основателем Артёмом Бородатюком....

25 03 2024 17:10:39

Как масштабировать блог: успешный кейс роста блогов Serpstat до 300 000 ежемecячных сессий и $100 000 годового дохода

Как масштабировать блог: успешный кейс роста блогов Serpstat до 300 000 ежемecячных сессий и $100 000 годового дохода Личный опыт маркетинг-директора Serpstat. Внутренняя перелинковка, работа с контентом, настройка email-рассылок и построение качественного комьюнити помогли нам получить стабильный поток читателей и новых пользователей. Обо всем читайте дальше!...

24 03 2024 15:52:58

Как рекламировать криптовалюты — 10 советов предпринимателям

Как рекламировать криптовалюты — 10 советов предпринимателям Как сформировать правильную стратегию продвижения и сфокусировать внимание на получении прибыли...

23 03 2024 17:57:53

Как подключение CDP может увеличить доход от триггерных писем до 50% — кейс Office-Expert.kz

Как подключение CDP может увеличить доход от триггерных писем до 50% — кейс Office-Expert.kz Эффективность продвинутой сегментации стала заметна уже в первый месяц ее функционирования....

22 03 2024 1:25:12

Чем http отличается от https

Чем http отличается от https Чем отличается протокол HTTPS от HTTP — криптошифрованием, обеспечивающим безопасность ресурса...

21 03 2024 8:29:42

Как создать специальный отчет в Google ***ytics

Как создать специальный отчет в Google ***ytics Мануал, по которому вы создадите специальный отчет, чтобы применить его на своем сайте....

20 03 2024 6:22:47

Как проверить сайт на бан в поисковых системах

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

19 03 2024 1:26:56

Частые ошибки в email-маркетинге: исправляем ошибки в email рассылках и письмах

Частые ошибки в email-маркетинге: исправляем ошибки в email рассылках и письмах К чему стоит относиться с особенным вниманием при отправке рассылок. Грамматические ошибки, тема, прехедер и другие стратегически важные составляющие письма. Узнать больше!...

17 03 2024 21:41:18

Как работают видеодополнения объявлений в Яндекс.Директ — инструкция и кейс

Как работают видеодополнения объявлений в Яндекс.Директ — инструкция и кейс Direct сделал подарок всем, кто уже давно хотел увеличить привлекательность своих объявлений — добавил возможность включения видеодополнений к текстово-графическим кампаниям. Как включить новую фишку от Директа и достаточно ли она эффективна?...

16 03 2024 14:44:20

Как уволить человека?

Как уволить человека? Увольнять сотрудника — это неприятно и порой сложно. Прежде надо убедиться, что такой шаг оправдан, но он же потребует от руководителя понимания, как действовать в подобной ситуации. На этом и остановимся...

15 03 2024 22:17:45

Есть идея для бизнеса. С чего стоит начать?

Есть идея для бизнеса. С чего стоит начать? Руководство к действию от основателя Netpeak Group....

14 03 2024 13:38:41

РРС-факапы: примеры ошибок новичков в контекстной рекламе

РРС-факапы: примеры ошибок новичков в контекстной рекламе Техника безопасности по безукоризненным рекламным кампаниям...

13 03 2024 2:34:26

Посиделки в офисе. Детские игры, чтобы разнообразить рабочие будни

Посиделки в офисе. Детские игры, чтобы разнообразить рабочие будни По следам «Игры в кальмара». Небольшая подборка ностальгических комaндных игр, которые могут прижиться в вашем офисе....

12 03 2024 21:24:49

Как открыть магазин на Etsy

Как открыть магазин на Etsy Магазин вязанных вещей хенд мейд. Как за два месяца увеличить посещаемость в 20 раз....

11 03 2024 13:28:51

Почти идеальный способ настроить междоменное отслеживание

Самые точные данные статистики, которые вы получите с помощью Google Tag Manager....

10 03 2024 14:11:43

Продвинутый подход к работе с аудиториями Facebook

Продвинутый подход к работе с аудиториями Facebook В основе продвижения любых продуктов фигурирует ЦА и её потребности. Рассказываем, как с ней работать в разрезе Инстаграм и Facebook так, чтобы РК давала максимальный профит...

09 03 2024 5:31:35

Как найти путь к 250 миллионам пользователей за рубежом — обзор возможностей Pinterest

Как найти путь к 250 миллионам пользователей за рубежом — обзор возможностей Pinterest в поисках нового источника трафика расскажем о Pinterest — современной поисковой сети c акцентом на визуальном контенте...

08 03 2024 0:21:27

Что дают Google AMP: опыт поисковика недвижимости Flatfy

Что дают Google AMP: опыт поисковика недвижимости Flatfy О том, какие результаты дает эта технология, рассказал Александр Иванов, Head of Product в ЛУН.ua в рамках прошлогодней самой летней конференции 8P. Читайте, как его комaнде удалось разогнать загрузку страниц сервиса Flatfy до 0,2 секунды...

07 03 2024 23:51:50

Актуальна ли классическая воронка продаж?

Актуальна ли классическая воронка продаж? В продажах лучше визуализировать путь потребителя в виде нейронных сетей....

06 03 2024 17:11:24

Еще:
понять и запомнить -1 :: понять и запомнить -2 :: понять и запомнить -3 :: понять и запомнить -4 :: понять и запомнить -5 :: понять и запомнить -6 :: понять и запомнить -7 ::