ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Пропоную ознайомитися з розшифровкою доповіді 2017 року Ігор Стрихар «ClickHouse – візуально швидкий та наочний аналіз даних у Tabix».

Веб-інтерфейс для ClickHouse у проекті Tabix.
Основні можливості:

  • Працює з ClickHouse безпосередньо з браузера без необхідності встановлення додаткового ПЗ;
  • Редактор запитів із підсвічуванням синтаксису;
  • Автодоповнення команд;
  • Інструменти графічного аналізу виконання запитів;
  • Колірні схеми на вибір.
    ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар


ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Я – технічний директор ЗМІ2. Ми – новинний обмінний агрегатор новин. Ми зберігаємо багато даних, які отримуємо від наших партнерів та реєструємо їх у ClickHouse – близько 30 000 запитів на секунду.

Це такі дані, як:

  • Клік по новинах.
  • Покази новин в агрегаторі.
  • Покази банерів у нашій мережі.
  • І реєструємо події з нашого власного лічильника, який на кшталт Яндекс.Метрики. Це наша власна мікроаналітика.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

У нас було дуже бурхливе життя до ClickHouse. Ми дуже мучилися, намагаючись складувати ці дані кудись і якось їх проаналізувати.

Життя до ClickHouse - infiniDB

Перше, що ми мали, це infiniDB. Вона у нас прожила 4 роки. Ми її запустили важко.

  • Вона не підтримує кластеризацію чи шардування. Ніякі такі розумні речі вона із коробки за замовчуванням не завелися.
  • Має складності із завантаженням даних. Тільки специфічна консольна утиліта, яка могла лише вантажити CSV-файли і тільки дуже незрозуміло.
  • База даних однопоточна. Можна було або писати, або читати. Але вона дозволяла обробляти великий обсяг даних.
  • І ще в неї був цікавий милиця. Щоночі потрібно було ребутати сервер, інакше він не працював.

Пропрацювала вона до кінця 2016 року, коли ми повністю перейшли на ClickHouse.

Життя до ClickHouse - Cassandra

Оскільки infiniDB була однопотоковою, ми вирішили, що нам потрібна якась багатопотокова база, в якій ми можемо писати дуже багато потоків одночасно.

Ми скуштували багато цікавих речей. Потім вирішили скуштувати Cassandra. З Cassandra у нас все було чудово. 10 000 запитів на секунду на ставку. 2 запитів десь на читання.

Але вона теж мала свої цікавості. Раз на місяць або раз на два місяці у неї траплялася розсинхронізація бази даних. І доводилося прокидатися, і бігти лагодити Cassandra. Рестартували сервери по черзі. І все ставало гладко та красиво.

Життя до ClickHouse – Druid

Згодом ми зрозуміли, що нам потрібно ще більше писати дані. У 2016 році ми почали дивитись Druid.

Druid – це відкрита база, написана Java. Дуже специфічна. І підходила під clickstream, коли нам потрібно зберігати якийсь потік подій і потім робити за ними агрегацію або робити аналітичні звіти.

Druid мав версію 0.9.X.

Сама собою база даних розгортається дуже важко. Це складність інфраструктури. Щоб її розгорнути потрібно було поставити багато заліза. І кожне залізо відповідало за окрему роль.

Щоб завантажити дані до неї, потрібно було застосовувати якесь шаманство. Є OpenSource проект – Tranquility, який у потоці втрачав дані. Коли ми в нього завантажували дані, він їх втрачав.

Але якось ми його почали запроваджувати. Ми, як їжачки, які кололися, але продовжували їсти кактус, почали його впроваджувати. Десь місяць нам знадобився, щоби підготувати всю інфраструктуру під нього. Т. е. Замовити сервера, налаштувати ролі, зробити повну автоматизацію розгортання. Т. е. у разі падіння кластера, щоб автоматично розгортався другий кластер.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Але тут сталося диво. Я був у відпустці, і мої колеги мені надсилають посилання на хабр, де йдеться про те, що Яндекс вирішив відкрити ClickHouse Я говорю, що давайте спробуємо.

І буквально за 2 дні розгорнули тестовий кластер ClickHouse. Почали завантажувати дані. Порівняно з infiniDB – це просто, у порівнянні з Druid – це просто. Порівняно з Cassandra теж просто. Тому що якщо з PHP вантажити в Cassandra дані, то це не просто.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Що ми здобули? Перформанс у швидкості. Перфоманс у зберіганні даних. Т. е. використовується набагато менше дискового простору. ClickHouse – швидкий, він дуже швидкий, порівняно з іншими продуктами.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

На момент запуску, коли Яндекс опублікував ClickHouse у OpenSource, був лише консольний клієнт. Ми в нашій компанії ЗМІ2 вирішили спробувати зробити нативний клієнт під web, щоб можна було з браузера відкрити сторінку, написати запит та отримати результат, тому що ми почали писати запитів. Писати у консолі важко. І ми зробили першу нашу версію.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

І десь ближче до зими минулого року почали з'являтися сторонні інструменти для роботи з ClickHouse. Це такі інструменти, як:

Я розгляну деякі з цих інструментів, тобто ті, з якими я працював.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Хороший інструмент, але для Druid. Коли впроваджували Druid, я мацав SuperSet. Мені він сподобався. Для Druid він працює дуже швидко.

Для ClickHouse він не підходить. Т. е. він підходить, він запускається, але готовий обробляти лише елементарні запити типу: SELECT event, GROUP BY event. Він не підтримує складнішого синтаксису ClickHouse.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Наступний інструмент – Apache Zeppelin. Це гарна та цікава річ. Працює. Він підтримує блокноти, дашборди, підтримує змінні. Я знаю, що хтось із спільноти ClickHouse його використовує.

Але немає підтримки синтаксису ClickHouse, тобто доведеться запити писати або в консолі, або ще десь. Далі перевірятиме, що все це працює. Це просто незручно. Але підтримка дашбордингу в нього хороша.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Наступний інструмент – це Redash.IO. Redash хоститься в інтернеті Т. е. на відміну від попередніх інструментів його не потрібно встановлювати. І це такий дашбординг із можливістю консолідації даних із різних DataSource. Т. е. ви можете вивантажити з ClickHouse, з MySQL, з PostgreSQL та з інших баз даних.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Буквально місяць тому (у березні 2017 року) з'явилася підтримка у Grafana. Коли ви будуєте звіти в Grafana, припустимо, за станом вашого заліза або за якимись метриками, то тепер можна будувати такий самий графік або якусь панельку даних із ClickHouse безпосередньо. Це дуже зручно, і ми використовуємо це у себе. Це дозволяє знайти аномалії. Т. е. якщо щось відбувається і якесь залізо падає або напружується, то можна подивитися причину, якщо ці дані встигли потрапити в ClickHouse.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Мені було дуже незручно писати в цих інструментах чи консолі. І я вирішив доопрацювати наш перший інтерфейс. І підглянув ідею у EventSQL, SeperSet, Zeppelin.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Що хотілося? Хотілося отримати графіки, покращений редактор, реалізувати підтримку словників підказок. Тому що ClickHouse має відмінну функцію – це словники. Але зі словниками важко працювати, тому що потрібно пам'ятати формат значень, що зберігаються, тобто це число або рядок і т. д. А так як ми часто використовуємо словники в їх різних варіаціях, то досить важко було писати запити.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Пройшло 3 місяці від релізу першої нашої версії. Я наробив близько 330 коммітів у закриту гілку та вийшов Tabix.

На відміну від попередньої версії, яка називалася ClickHouse-Frontend, я вирішив перейменувати його у просту назву. І вийшов Tabix.

Що виникло?

Малює графіки. Підтримує SQL синтаксис ClickHouse. Підказує за функціями та багато чого цікавого вміє.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Так виглядає загальна схема Tabix. Ліворуч представлене дерево. У центрі – це редактор запиту. І знизу – результат цього запиту.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Далі покажу, як працює редактор запиту.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Тут автоматично автокомплит спрацював на таблиці і підказує, відповідно, автокомплит по полях. І підказки щодо функцій. Якщо натиснути ctrl введення, запит виконається або впаде з помилкою. Найпростіший запит відправляється в Tabix і виходить результат, тобто швидко можна працювати з ClickHouse.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Словники, як я вже сказав, це дуже цікава річ, з якою ми дуже багато працюємо. І яка дозволила багато речей зробити. Допустимо, у словниках ми зберігаємо всі міста. Зберігаємо ідентифікатор міста та ім'я міста, його широту та довготу. А в базі зберігаємо лише ідентифікатор міста. Відповідно, ми стискаємо дані дуже сильно.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Це, здавалося б, проста річ, але в ClickHouse вона дуже цікаво допомагає. Через те, що ClickHouse підтримує тільки вкладені join, запит зростає вниз і шириною досить сильно. І коли скобочка відкривається, і йде якийсь довгий вираз, то така досить проста річ, як згортання запиту, допомагає легше працювати із самим запитом. Тому що коли запит у 200-300 рядків і шириною він дуже величезний, то дуже рятує згортання запиту і після знайти якесь місце або якось його локалізувати.

Дерево об'єктів, мультизапити та вкладки (Відео 13:46 https://youtu.be/w1-XsL3nbRg?t=826)

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Наступними покажу про дерево, вкладки. Ліворуч – це дерево, зверху можна створювати кілька вкладок. Вкладки – це як workspace. Ви можете створити кілька вкладок і кожну назвати. Це як мінісистема для побудови звіту.

Вкладки автоматично зберігаються. Якщо ви перезавантажите браузер або закриєте або відкриєте Tabix, то все це збережеться.

Hotkey – зручно (Відео 14:39 https://youtu.be/w1-XsL3nbRg?t=879)

Є hotkey та їх досить багато. Я дехто вивів із них тут для прикладу. Це перемикання вкладки, виконати запит або кілька запитів.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Покажу, як працювати із результатом. Надсилаємо запит. Тут я малюю sin, cos та tg. Можна підсвітити результат, тобто типову карту на колонку відмалювати. Можна підсвітити позитивні чи негативні значення. Або просто розфарбувати якийсь конкретний елемент таблиці. Це зручно, коли таблиця є величезною і потрібно очима знайти якусь аномалію. Коли я шукав аномалії, я підсвічував якісь рядки, якісь елементи зеленим чи червоним кольором.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Є там багато цікавих речей. Наприклад, як скопіювати у Redmine Markdown. Якщо потрібно відкопіювати кудись результат, це дуже зручно. Можна просто виділити область, сказати "Copy to Redmine" і він відкопує в Redmine Markdown або створить запит Where.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Далі – це оптимізація запитів. Я одного разу забув вказати поле "date". І у мене запит у ClickHouse оброблявся не дуже-дуже швидко, але швидко, тобто менше секунди. Коли я побачив, скільки він рядків пробігає, мені стало страшно. Ми за добу стільки рядків не пишемо до цієї таблиці. Я почав аналізувати запит та побачив, що пропустив в одному місці дату. Т. е. забув вказати, що мені дані потрібні не по всій таблиці, а потрібно за якийсь конкретний період.

У Tabix є вкладка "Stats", в якій зберігаються вся історія відправлених запитів, тобто там можна подивитися, скільки рядків було прочитано цим запитом і скільки часу він виконувався. Це дозволяє оптимізувати.

Над результатом запиту можна будувати зведену таблицю. Ви надіслали запит до ClickHouse, отримали якісь дані. І далі ці дані можна посмикати мишкою і побудувати якусь зведену таблицю.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Наступна цікава річ – це побудова графіків. Припустимо, у нас такий запит: на sin, cos від 0 до 299. І щоб його відмалювати потрібно вибрати вкладку «Draw» і ви отримаєте графік з вашими sin і cos.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Можна розбити це різні осі, т. е. можна відмалювати відразу два графіки поруч. Написати одну команду та другу команду.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Можна намалювати гістограми.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Це можна розбити на матрицю графіків.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Можна збудувати теплову карту.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Можна збудувати тепловий календар. До речі, дуже зручна річ, коли потрібно проаналізувати аномалії за рік, тобто знайти або сплески, або падіння. Мені допомогла у цьому ця візуалізація даних.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Наступний – це Treemap.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Sankeys – цікавий графік. Він або Streamgrahps, або River. Але я називаю його River. Він також дозволяє шукати якісь аномалії. Він дуже зручний. Рекомендую використовувати його для пошуку.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Наступна цікава річ – це відображення динамічної карти. Якщо у вас у базі даних зберігається широта, довгота і, припустимо, зберігається призначення, якщо у вас, наприклад, автоперевезення чи літаки літають, можна відмалювати шляхи призначення. Також там можна встановити швидкість, розмір цих об'єктів, в які вони прилітають.

Але проблема з цією картою в тому, що вона малює лише карту світу, немає деталізації.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Згодом я додав Google map. Якщо ви зберігаєте широту, довготу, можна відобразити результат на Google map, але без підтримки літачків.

Основні функції роботи з результатом, із запитом у Tabix ми обговорили.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Наступний – це аналіз вашого сервера ClickHouse. Є окрема вкладка «Метрики», в яких можна переглянути розмір даних, що зберігаються по кожній колонці. На скріншоті показано, що це поле «referrer» у нас займає щось близько 730 Gb. Якщо ми відмовимося від цього поля, то заощадимо три шарди по 700 GB, тобто близько 2 TB, які нам не потрібні.

Також ми маємо поле «request_id», яке ми зберігаємо в рядку. Але якщо ми почнемо його зберігати у числовому вигляді, то стисне це поле колосально.

Також тут показано конфігурацію сервера та список нод вашого кластера.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Наступна вкладка – це метрики. Вони забираються в реальний час з ClickHouse і просто дозволяють проаналізувати стан сервера і зрозуміти, що з ним відбувається. Це не заміна повноцінної Grafana. Це необхідно для того, щоб швидко проаналізувати.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Наступна вкладка – це процеси. За ними можна зрозуміти, що відбувається на сервері. Зрозуміти, що там діється. У мене був запит, який віджирав на читання 200 GB щоразу. Я це побачив завдяки цьому інтерфейсу. Відловив його та підправив. І вийшло близько 30 GB, тобто перфоманс у рази.

ClickHouse – візуально швидкий та наочний аналіз даних у Tabix. Ігор Стрихар

Дякую! І це в OpenSource

Я закінчив. І, до речі, це OpenSource, це безкоштовно і навіть не треба завантажувати. Відкривайте у браузері і все буде працювати.

Питання

Ігоре, що далі? Куди ти розвиватимеш цей інструмент?

Далі з'явиться дашбординг, тобто можливо з'явиться дашбординг. Інтеграція коїться з іншими базами даних. Це я зробив, але ще не опублікував OpenSource. Це MySQL і, можливо, PostgreSQL. Т. е. можна буде з Tabix відправляти запити не тільки в ClickHouse, але і в інші інструменти.

Видно, що зроблено величезний обсяг роботи. Вийшла досить повноцінна ідея. У браузері зроблено, мабуть, для того, щоб виключити милиці на будь-яких осях і швиденько накидати все це. Я так чув, що ви на PHP працюєте, тому найпростіше накидати в браузері і скрізь працюватиме. До цього питань немає. Питання таке. Там зроблено дійсно дуже багато. Скільки людей над цим працювало? І скільки часу все це зайняло? Тому що інструменти під себе зазвичай не мають такого великого функціонала.

З літа до осені працювала одна людина з нашої команди. То була перша версія. Потім 330 коммітів я один робив. Те, що ви бачите, ми з колегою навпіл це робили. За 3 місяці з першої самої версії до останньої я один здебільшого зробив. Але я дуже погано знаю Javascript. Це був мій єдиний і, сподіваюся, останній мій проект Javascript, з яким я працював. Він мені дістався, я подивився – о, жах. Але мені дуже хотілося зробити продукт і ось що вийшло.

Дякую за доповідь! Це чудовий інструмент. З Жива картина порівнювали?

Дякую. Тому Tabix і назвав, бо перші літери збігаються.

Бо конкуруєте?

Буде багато інвестицій, конкуруватимемо.

Як запропонуйте продати внутрішнім аналітикам, що цей інструмент повністю замінить *Tableau*? Які будуть аргументи?

Нативно працює з ClickHouse. Я пробував Tableau, але там не можна писати підтримку словників тощо. Я знаю, як працюють з Tabix люди. Вони пишуть запит, вивантажують CSV і завантажують в BI. І вже там щось роблять. Але я собі важко уявляю, як вони це роблять, тому що – це графічний інструмент. Він може вивантажити 5 рядків, максимум 000 рядків, але не більше, інакше браузер не витримає.

Т. е. є якісь серйозні обмеження за обсягом даних, так?

Так. Я не уявляю, що ви захочете 10 000 рядків собі в таблицю вивантажити на екран браузера. Навіщо?

Мається на увазі, що це інтерфейс для швидкого перегляду даних? Покрутити небагато, покрутити?

Так, швидко подивитися, як воно працює і просто побудувати зведений графік. А далі віддавати кудись. У нас це своя власна репортинг-система, звідки я просто беру цей запит. Малюю в Tabix і відправляю в наш репортинг.

І ще питання. Когортний аналіз?

Якщо будуть побажання, додамо.

Коли тільки починали користуватися ClickHouse, скільки зайняло за часом використання Натисніть Будинок та доведення до production-стану?

Як я й сказав, ми впровадили тестовий кластер за дуже стислий термін. За два дні ми його розгорнули. І ще кілька тижнів ми його тестували. І до production ми дійшли місяця за 3. Але ми мали свій власний ETL, тобто інструмент для запису даних. І він у нас писав у все, що можна. Він вміє писати до MongoDB, Cassandra, MySQL. Навчити його писати в ClickHouse було просто. Ми мали готову інфраструктуру для швидкого впровадження. Місяця за 3 ми перший компонент почали викидати. За 6 місяців ми повністю відмовилися від решти. У нас залишився один ClickHouse.

Ігоре, дякую за доповідь. Мені дуже сподобався функціонал побудови шляхів картами. Чи планується інтеграція з Яндекс.Картами та зокрема з кастомними Яндекс.Картами?

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

Слайд – Google map. Ось там є команда "DRAW_GMAPS", яка малює карту. Є команда "DRAW_YMAPS", тобто може відобразити Яндекс.Карту. А фактично під цією командою знаходиться Javascript, тобто дані, які ви виходить з ClickHouse, можна передати в Javascript, який ви тут напишіть. І у вас на виході є область, куди вона має малюватись. Можна будь-який графік відмалювати, тобто будь-який графік, карту, можете свій власний компонент відмалювати. У мене до цього була інша бібліотека для малювання самих графіків.

Т. е. там є інструмент для кастомізації функціоналу відображення?

Будь-які. Можна взяти та перефарбувати ці крапки, зробивши їх не червоними, а синіми, зеленими.

Дякую за доповідь! Ви мали слайд, на якому були представлені альтернативні інструменти для запитів Натисніть Будинок для побудови дашбордів, аналітичних звітів Я так зрозумів, що на момент, коли ви почали працювати з ClickHouse, для цих інструментів не були написані адаптери. І мені цікаво, чому ви вирішили робити свій власний інструмент замість того, щоб написати адаптер для якогось готового інструменту? Я думаю, що дотеснити тестовий редактор – це швидко. Чому ви вирішили робити стільки роботи?

Тут цікавий такий момент – річ у тому, що я технічний директор, а не дата-саентист. До того моменту, як ми почали впроваджувати Druid, у мене в roadmap було десь 50% завдань - давайте порахуємо ось це або давайте порахуємо ось це, або ось це проаналізуємо. І вийшло так, що ми запровадили ClickHouse. І почав все швидко будувати, рахувати, закрив швидко свій roadmap. І на той момент я зрозумів, що мені не вистачає знань з Data Science, з візуалізації даних. Tabix – це своєрідне моє домашнє завдання з вивчення візуалізації даних. Я дивився, як доповнити Zeppelin. У мене є легка любов до його програмування. Redash я переглянув, як доповнити, але мені вистачало там нормального редактора. І SuperSet теж написаний тією мовою, яку я не дуже люблю. І тому я вирішив велосипедити, і ось що вийшло.

Ігоре, Pull request ви приймаєте?

Так.

Дякую за доповідь! І два питання. Перший - ви не дуже втішно відгукуєтесь про Javascript. Ви писали на голому Javascript чи все-таки це якийсь фреймворк?

Краще на голому Javascript.

То який фреймворк?

Кутова.

Зрозуміло. І друге питання. Чи не розглядали ви R и *Shiny**?*

Розглядав. Грав.

Можна було теж просто написати адаптер.

Він є. Наче ком'юніті його зробив, але, як я відповідав на попереднє запитання, мені захотілося самому помацати.

*Ні, з приводу візуалізації, там є.

Ти кажеш, що є така штука і вона намалює тобі графік. Я відкрив книжку з візуалізації даних. І подумав: «Давай я спробую ці дані відвізуалізувати. Сам напишу, щоб він відбудував дані». І я почав краще розумітися на технології подачі даних. А якби я взяв готовий компонент, я особисто гірше навчився б ним користуватися, тобто саме візуалізацією. Але так – так, R мені сподобалася, але я ще не читав книжку R для чайників.

Спасибо!

Просте запитання. Які є можливості швидко вивантажити табличку, графік?

Можна вивантажити в CSV, Excel.

Чи не дані, а готову табличку, готовий графік? Наприклад, щоби показати начальству.

Є кнопочка «Вивантажити» і є кнопочка «Вивантажити графік png, jpg».

Спасибо!

PS Міні-інструкція з встановлення tabix

  • Завантажити останній реліз
  • Розпакувати, скопіювати директорію build у nginx root_path
  • Налаштувати nginx

Джерело: habr.com

Додати коментар або відгук