Ви ведете рекламу в трьох кабінетах і хочете бачити всі витрати в одному місці. Готовий звіт цього не показує, бо дані лежать у різних системах. Очевидне рішення — щоночі складати їх у Google Таблицю й будувати зверху графіки.
#Чому таблиця — правильний перший крок
Не варто починати з бази даних. Таблиця дає те, чого не дають готові звіти: замовник бачить дані одразу і може їх змінювати. Він додає колонку й пише власну формулу. За тиждень такого користування стає зрозуміло, які цифри йому насправді потрібні, а які він просив «про всяк випадок».
Це найдешевший спосіб з’ясувати вимоги. Ми й далі починаємо з таблиці, коли завдання нове.
Але вона має бути чернеткою, а не рішенням.
#Де таблиця перестає працювати
Обсяг. Один кабінет за місяць — це кілька тисяч рядків. Три кабінети за рік — далеко за сотню тисяч. Таблиця технічно витримує, але формули на такому обсязі перераховуються десятки секунд, а відкриття файлу перетворюється на очікування.
Крихкість. Звіт тримається на формулах, які посилаються на діапазони. Замовник вставляє колонку посередині — половина формул починає рахувати не те. Помилки ніде не видно: цифри просто стають іншими. Найдорожчий вид поломки — той, який не відрізнити від нормальної роботи.
Історія. Таблиця зберігає стан, а не історію. Якщо ключем у ній стала назва кампанії — а так виходить майже завжди, бо назву видно, а id ні, — то після перейменування вчорашні цифри вже нічим зіставити з сьогоднішніми.
Права. Дати доступ до дашборда зазвичай означає дати доступ і до сирих даних: захищені діапазони й доступ «лише перегляд» рятують не завжди, а окремі права на окремі рядки в одному файлі зробити нічим.
#Що ставити замість таблиці
Три шари замість одного файлу.
Збір. Сценарій щоночі забирає дані з кожного кабінету через API і складає в базу. Кожен рядок має дату, кабінет, кампанію і стабільний ідентифікатор — не назву. Перейменування більше нічого не ламає.
База. Postgres. Історія накопичується, старі дані не переписуються. Порівняння періодів стає звичайним запитом, а не окремим аркушем у файлі.
Показ. Окрема сторінка на власному домені: графіки, фільтри, вивантаження. Замовник бачить цифри й не бачить сирих таблиць. Права розмежовують: кому дивитись, кому правити.
Зверху за потреби додають адмінку під конкретний процес: змінити ставку, позначити кампанію, залишити коментар до дня.
#Скільки коштує заміна
Більше на старті й менше далі.
Таблиця — це кілька годин. Власне рішення — один-два дні: збір, схема бази, сторінка показу. Далі витрати зводяться до хостингу.
Момент переходу видно за конкретними ознаками. Якщо впізнаєте хоча б два пункти — таблиця вже коштує вам більше, ніж заміна:
- звіт відкривається довше десяти секунд;
- хтось хоча б раз зламав формули, вставивши колонку;
- ви не можете порівняти цей місяць із торішнім;
- доступ до дашборда доводиться давати разом із сирими даними;
- цифри в таблиці й у кабінеті розходяться, і ніхто не знає чому.
#Яких помилок не робити
Не переносьте формули в базу. Логіка звіту має бути в одному місці — у запиті або в коді сторінки. Половина в SQL, половина у формулах — це та сама крихкість, тільки складніша.
Не зберігайте агрегати замість сирих даних. Складати можна завжди, розкладати назад — ні. Пишіть у базу денні рядки, а суми рахуйте в запиті.
Не викидайте таблицю зовсім. Вивантаження в неї — нормальна функція дашборда. Замовник звик там рахувати, і забирати цю можливість немає причин.
#Висновки
- Таблиця — найдешевший спосіб з’ясувати, які цифри потрібні. Як чернетка вона правильна.
- Ламається вона на обсязі, на формулах, на відсутності історії та на правах доступу.
- Заміна — три шари: нічний збір, база з історією, окрема сторінка показу.
- Ключ у даних — ідентифікатор, а не назва кампанії.
- Вивантаження в таблицю варто лишити: замовник звик рахувати саме там.
#Часті запитання
#Чи можна лишитись на таблиці, якщо кабінет один?
Так. Один кабінет і кілька тисяч рядків таблиця тримає нормально. Проблеми починаються з другим джерелом і з першим роком історії.
#Чи не простіше взяти готовий BI-сервіс?
Часто простіше, і ми так робимо, коли завдання типове. Власне рішення виграє тоді, коли потрібні дії, а не тільки перегляд: змінити ставку, позначити кампанію, звести рекламу з угодами в CRM.
#Що робити з даними, які вже накопичились у таблиці?
Перенести один раз у базу. Це разовий скрипт: історія зберігається, і порівняння з минулими періодами лишається можливим.
#Джерела
- Google Sheets API — Limits — обмеження на запити й обсяг
- Взято з власного досвіду