Odporúčam oboznámiť sa s prepisom správy z roku 2017 Igora Strychara „ClickHouse – vizuálne rýchla a prehľadná analýza dát v Tabix“.
Webové rozhranie pre ClickHouse v projekte Tabix.
Hlavné možnosti:
- Pracuje s ClickHouse priamo z prehliadača, bez potreby inštalácie dodatočného softvéru;
- Editor dotazov so zvýraznením syntaxe;
- Automatické dopĺňanie príkazov;
- Nástroje na grafickú analýzu vykonávania dotazov;
- Farebné schémy na výber.



Som technický riaditeľ v SME2. Sme spravodajský agregátor správ. Ukladáme veľa údajov, ktoré dostávame od našich partnerov a registrujeme ich v ClickHouse – okolo 30 000 dopytov za sekundu.
Ide o také údaje, ako sú:
- Kliky na správy.
- Zobrazenia správ v agregátore.
- Zobrazenia bannerov v našej sieti.
- A registrujeme udalosti z nášho vlastného počítadla, ktoré je podobné Yandex.Metrike. Toto je naša vlastná mikroanalytika.

Mali sme veľmi búrlivý život pred ClickHouse. Veľmi sme sa trápili, keď sme sa snažili ukladať tieto údaje niekam a nejak ich analyzovať.
Život pred ClickHouse – infiniDB
Prvé, čo sme mali, bolo infiniDB. Vydržalo nám to 4 roky. Spustili sme ju s ťažkosťami.
- Nepodporuje klastrovanie ani shardovanie. Žiadne také chytré veci sa z krabice neaktivovali.
- Mala problémy s načítaním údajov. Iba špecifická konzolová utilita, ktorá mohla iba načítať CSV súbory a len veľmi nejasne.
- Databáza je jednovláknová. Mohlo sa buď písať, alebo čítať. Ale umožňovala spracovávať veľké objemy údajov.
- A mala ešte jeden zaujímavý obchádzajúci trik. Každú noc bolo treba reštartovať server, inak nefungoval.
Pracovala u nás do konca roku 2016, keď sme sa úplne prepli na ClickHouse.
Život pred ClickHouse – Cassandra
Keďže infiniDB bola jednovláknová, rozhodli sme sa, že potrebujeme nejakú viacvláknovú databázu, do ktorej môžeme písať mnoho vlákien súčasne.
Vyskúšali sme veľa zaujímavých vecí. Potom sme sa rozhodli vyskúšať Cassandru. S Cassandrou sme mali všetko skvelé. 10 000 dopytov za sekundu na vklad. 2 000 dopytov niekde na čítanie.
Ale mala aj svoje zaujímavosti. Raz za mesiac alebo raz za dva mesiace sa u nej vyskytla desynchronizácia databázy. Takže sme museli vstať a bežať opraviť Cassandru. Servery sme reštartovali postupne. A všetko sa stalo hladkým a pekným.
Život pred ClickHouse – Druid
Potom sme si uvedomili, že potrebujeme ešte viac zapisovať údajov. V roku 2016 sme začali pozerať na Druid.
Druid je otvorená databáza napísaná v Jave. Veľmi špecifická. A vyhovovala clickstreamu, keď sme potrebovali ukladať určitý prúd udalostí a potom realizovať agregácie alebo vytvárať analytické správy.
Druid mal verziu 0.9.X.
Sama o sebe sa databáza rozbieha veľmi ťažko. To je zložitosti infraštruktúry. Aby ju rozbehlo, bolo potrebné postaviť veľa a veľa hardvéru. A každý hardvér mal svoju vlastnú úlohu.
Na to, aby sa údaje do nej nahrali, bolo potrebné aplikovať akési šamanstvo. Existuje OpenSource projekt – Tranquility, ktorý v prúde strácal naše údaje. Keď sme do neho nahrávali údaje, strácal ich.
Ale nejak sme ho začali implementovať. Boli sme ako ježkovia, ktorí sa pichali, ale pokračovali jesť kaktus, začali sme ho implementovať. Potrebovali sme asi mesiac, aby sme pripravili celú infraštruktúru na to. T. j. objednať servery, nastaviť úlohy, vykonať úplnú automatizáciu rozbiehania. T. j. v prípade pádu klastra, aby sa automaticky spustil druhý klaster.

Ale tu sa stalo zázrak. Bol som na dovolenke a moji kolegovia mi posielajú odkaz na , kde sa hovorí o tom, že Yandex sa rozhodol otvoriť ClickHouse. Povedal som, že poďme to vyskúšať.
A doslova za 2 dni sme rozbehli testovací klaster ClickHouse. Začali sme do neho nahrávať údaje. V porovnaní s infiniDB – je to jednoduché, v porovnaní s Druid – je to jednoduché. V porovnaní s Cassandrou taktiež jednoduché. Pretože ak sa z PHP nahrávajú údaje do Cassandry, nie je to jednoduché.

Čo sme získali? Výkon v rýchlosti. Výkon v uložení údajov. T. j. používa sa oveľa menej diskového priestoru. ClickHouse je rýchly, je veľmi rýchly v porovnaní s inými produktmi.

V čase spustenia, keď Yandex publikoval ClickHouse v OpenSource, existoval len konzolový klient. V našej spoločnosti SME2 sme sa rozhodli vyskúšať vytvoriť natívneho klienta pod web, aby sme mohli otvoriť stránku z prehliadača, napísať dotaz a získať výsledok, pretože sme začali písať veľa dotazov. Písať v konzole je ťažké. A urobili sme našu prvú verziu.

A niekde v blízkosti zimy minulého roku sa začali objavovať externé nástroje na prácu s ClickHouse. To sú také nástroje ako:
- .
- .
- . (Teraz )
- .
- .
Preskúmam niektoré z týchto nástrojov, t. j. tie, s ktorými som pracoval.

Dobrý nástroj, ale pre Druid. Keď sme implementovali Druid, skúšal som SuperSet. Páčil sa mi. Pre Druid funguje veľmi rýchlo.
Pre ClickHouse sa nehodí. T. j. on je funkčný, spúšťa sa, ale je pripravený spracúvať len elementárne dotazy ako: SELECT event, GROUP BY event. Nepodporuje zložitejšiu syntaxu ClickHouse.

Ďalší nástroj – Apache Zeppelin. To je dobrá a zaujímavá vec. Funguje. Podporuje notebooky, dashboardy, podporuje premenné. Viem, že niekto z komunity ClickHouse ho používa.
Ale neexistuje podpora syntaxy ClickHouse, t. j. dotazy treba písať buď v konzole, alebo niekde inde. Potom je potrebné skontrolovať, že to všetko funguje. To je jednoducho nepraktické. Ale podpora dashboardov je u neho dobrá.

Ďalší nástroj – Redash.IO. Redash je hostovaný na internete. T. j. na rozdiel od predchádzajúcich nástrojov ho nie je potrebné inštalovať. A to je taký dashboard s možnosťou konsolidácie údajov z rôznych zdrojov. T. j. môžete exportovať z ClickHouse, MySQL, PostgreSQL a iných databáz.

Doslova pred mesiacom (v marci 2017) bola pridaná podpora v Grafana. Keď vytvárate správy v Grafana, povedzme, o stave vášho hardvéru alebo o nejakých metrikách, teraz môžete vytvoriť rovnaký graf alebo nejaký panel z údajov z ClickHouse priamo. To je veľmi pohodlné a my to používame interné. To umožňuje nájsť anomálie. T. j. ak sa niečo deje a nejaký hardvér zlyhá alebo je preťažený, môžete si pozrieť príčinu, ak sa tieto údaje dostali do ClickHouse včas.

Bolo mi veľmi nepohodlné písať v týchto nástrojoch alebo v konzole. A rozhodol som sa vylepšiť naše prvé rozhranie. A inšpiroval som sa myšlienkou z EventSQL, SeperSet, Zeppelin.

Čo som chcel? Chcel som získať grafy, vylepšený editor, implementovať podporu slovníkov nápovedy. Pretože ClickHouse má skvelú funkciu – to sú slovníky. Ale so slovníkmi je ťažké pracovať, pretože treba pamätať na formát uložených hodnôt, t. j. či to je číslo alebo reťazec atď. A keďže často používame slovníky v rôznych variáciách, bolo dosť ťažké písať dotazy.

Uplynuli 3 mesiace od vydania našej prvej verzie. Urobil som približne 330 commitov v uzavretej vetve a vyšlo z toho Tabix.
Na rozdiel od predchádzajúcej verzie, ktorá sa volala ClickHouse-Frontend, som sa rozhodol premenovať ju na jednoduchý názov. A vznikol Tabix.
Čo sa objavilo?
Kreslí grafy. Podporuje SQL syntax ClickHouse. Poskytuje nápovedu k funkciám a má mnoho ďalších zaujímavých schopností.

Takto vyzerá celková schéma Tabix. Naľavo je zobrazené stromové zobrazenie. V strede je editor dotazov. A dole je výsledok tohto dotazu.

Ďalej ukážem, ako funguje editor dotazov.

Tu automaticky funguje autokompletácia pre tabuľku a poskytuje nápovedu pre polia. A nápovedy k funkciám. Ak stlačíte ctrl a enter, dotaz sa vykoná alebo sa zobrazí chyba. Najjednoduchší dotaz sa posiela do Tabix a dostáva sa výsledok, t. j. rýchlo sa dá pracovať s ClickHouse.

Dictionaries, ako som už povedal, sú veľmi zaujímavá vec, s ktorou veľa pracujeme. A ktorá nám umožnila dosiahnuť mnoho vecí. Napríklad, v slovníkoch uchovávame všetky mestá. Uchovávame identifikátor mesta a jeho názov, jeho zemepisnú šírku a dĺžku. A v databáze uchovávame iba identifikátor mesta. Tým pádom veľmi silno komprimujeme dáta.

Na prvý pohľad jednoduchá vec, ale v ClickHouse veľmi zaujímavo pomáha. Z toho dôvodu, že ClickHouse podporuje iba vnorené join, dotaz rastie smerom nadol a do šírky pomerne silno. A keď sa otvorí zátvorka a nasleduje dlhé vyjadrenie, tak taká relatívne jednoduchá vec, ako je zbalenie dotazu, uľahčuje prácu s ním. Pretože keď má dotaz 200-300 riadkov a je veľmi široký, zbalenie dotazu naozaj pomáha nájsť nejaké miesto alebo ho lokalizovať.
Strom objektov, multiodpovede a záložky (Video 13:46) )

Ďalej ukážem strom a záložky. Naľavo je strom, hore môžete vytvoriť niekoľko záložiek. Záložky sú ako pracovný priestor. Môžete vytvoriť niekoľko záložiek a každú nazvať po svojom. Je to ako mini systém na vytváranie správy.
Záložky sa automaticky ukladajú. Ak reštartujete prehliadač, alebo ho zavriete, alebo otvoríte Tabix, všetko sa uloží.
Horúca klávesa – pohodlné (Video 14:39) )
Existujú horúce klávesy a ich je celkom dosť. Niektoré som tu uviedol ako príklad. Ide o prepínanie záložiek, vykonanie dotazu alebo vykonanie viacerých dotazov.

Ukážem vám, ako pracovať s výsledkom. Odosielame dotaz. Tu kreslím sin, cos a tg. Môžeme zvýrazniť výsledok, tzn. vykresliť typickú mapu na stĺpec. Môžeme zvýrazniť kladné alebo záporné hodnoty. Alebo jednoducho sfarbiť nejaký konkrétny prvok tabuľky. Je to praktické, keď je tabuľka obrovská a treba vyhľadať nejakú anomáliu. Keď som hľadal anomálie, zvýrazňoval som niektoré riadky, niektoré prvky zelenou alebo červenou farbou.

Je tam veľa zaujímavých vecí. Napríklad, ako kopírovať do Redmine Markdown. Ak potrebujete niekde skopírovať výsledok, je to veľmi praktické. Môžete jednoducho vytiahnuť oblasť, povedať „Kopírovať do Redmine“ a on to skopíruje do Redmine Markdown alebo vytvorí dopyt Where.

Ďalej - optimalizácia dotazov. Raz som zabudol uviesť pole „date“. A môj dotaz v ClickHouse bol spracovaný nie veľmi, veľmi rýchlo, ale rýchlo, tzn. menej ako sekundu. Keď som videl, koľko riadkov spracováva, zatriaslo mnou. Za deň napíšeme toľko riadkov do tejto tabuľky. Začal som analyzovať dopyt a zistil som, že som v jednom mieste vynechal dátum. Tzn. zabudol som uviesť, že potrebujem dáta nie zo všetkej tabuľky, ale za nejaké konkrétne obdobie.
V Tabix je záložka „Stats“, kde sa uchováva celá história odoslaných dotazov, tzn. tam si môžete pozrieť, koľko riadkov bolo prečítaných týmto dotazom a koľko času trval jeho výkon. To umožňuje optimalizáciu.
Nad výsledkom dotazu môžete vytvoriť kontingenčnú tabuľku. Odoslali ste dopyt do ClickHouse, získali ste nejaké údaje. A potom môžete tieto údaje posúvať myšou a vytvoriť nejakú kontingenčnú tabuľku.

Ďalšia zaujímavá vec - je vytváranie grafov. Predpokladajme, že máme takýto dotaz: na sin, cos od 0 do 299. A aby ste ho nakreslili, musíte vybrať záložku „Draw“ a získate graf s vašimi sin a cos.

Môžete to rozdeliť na rôzne osi, tzn. môžete naraz vykresliť dva grafy vedľa seba. Napísať jednú príkaz a druhý príkaz.

Môžete vykresliť histogramy.

Môžete to rozdeliť na maticu grafov.

Môžete vytvoriť teplotnú mapu.

Môžete vytvoriť teplotný kalendár. Mimochodom, je to veľmi praktická vec, keď treba analyzovať anomálie za rok, tzn. nájsť buď výkyvy, alebo poklesy. Pomohla mi v tom táto vizualizácia dát.

Ďalší - to je Treemap.


Sankeys – zaujímavý graf. Je to buď Streamgraphs, alebo River. Ale ja to nazývam River. Taktiež umožňuje hľadať nejaké anomálie. Je veľmi užitočný. Odporúčam ho použiť na vyhľadávanie.

Ďalšia zaujímavá vec je kreslenie dynamickej mapy. Ak vo vašej databáze sú uložené zemepisné šírky, dĺžky a napríklad aj cieľ, ak máte napríklad autodopravy alebo lietadlá, ktoré lietajú, môžete nakresliť trasy cieľov. Môžete tiež nastaviť rýchlosť, veľkosť týchto objektov, do ktorých prichádzajú.
Ale problém s touto mapou je ten, že vykresľuje iba mapu sveta, nie je tam žiadne podrobnosti.

Neskôr som pridal Google mapu. Ak uchovávate zemepisnú šírku a dĺžku, môžete zobraziť výsledok na Google mape, ale bez podpory lietadiel.
Hlavné funkcie práce s výsledkom, s dotazom v Tabix sme prediskutovali.

Nasledujúca vec je analýza vášho servera ClickHouse. Existuje samostatná záložka „Metriky“, v ktorých môžete vidieť veľkosť uložených údajov pre každý stĺpec. Na snímku obrazovky je zobrazené, že toto pole „referrer“ zaberá asi 730 Gb. Ak sa tohto poľa vzdáme, ušetríme tri shard-y po 700 GB, teda asi 2 TB, ktoré nepotrebujeme.
Taktiež máme pole „request_id“, ktoré uchovávame ako reťazec. Ale ak začneme uchovávať to v číselnej forme, toto pole sa extrémne zmenší.
Taktiež tu je zobrazená konfigurácia servera a zoznam nód vášho klastrového systému.

Nasledujúca záložka – to sú metriky. Tieto sa získavajú v reálnom čase z ClickHouse a jednoducho umožňujú analyzovať stav servera a pochopiť, čo sa s ním deje. Nie je to náhrada za plnohodnotnú Grafanu. Je potrebné na rýchlu analýzu.

Nasledujúca záložka – to sú procesy. Podľa nich môžete pochopiť, čo sa deje na serveri. Pochopiť, čo sa tam deje. Mal som dotaz, ktorý na čítanie bral 200 GB zakaždým. To som videl vďaka tomuto rozhraniu. Odhalil som ho a upravil. A dostal som to na asi 30 GB, teda výkon sa zlepšil niekoľkokrát.

Ďakujem! A to je v OpenSource.
Skončil som. A, mimochodom, to je v OpenSource, je to zadarmo a ani nemusíte sťahovať. Otvoríte to v prehliadači a všetko bude fungovať.
Otázky
Igor, čo ďalej? Kam budeš rozvíjať tento nástroj?
Ďalej sa objaví dashboard, to znamená, že možno vznikne dashboard. Integrácia s ďalšími databázami. To som spravil, ale ešte som to nezverejnil v OpenSource. To je MySQL a možno PostgreSQL. To znamená, že bude možné z Tabix posielať požiadavky nie len do ClickHouse, ale aj do iných nástrojov.
Je vidno, že bol vykonaný obrovský objem práce. Vznikla dosť ucelená myšlienka. V prehliadači to bolo spravené, zjavne aby sa vylúčili obmedzenia na rôznych osiach a rýchlo to celé dať dohromady. Počul som, že vy na tom php pracujete, preto je najjednoduchšie to načrtnúť v prehliadači a bude to fungovať všade. K tomu nie sú otázky. Otázka je taká. Tam sa naozaj toho spravilo veľmi veľa. Koľko ľudí na tom pracovalo? A koľko času to všetko zabralo? Pretože nástroje na seba zvyčajne nemajú taký veľký funkčný rozsah.
Od leta do jesene pracoval jeden človek z nášho tímu. To bola prvá verzia. Potom som urobil 330 commitov sám. To, čo vidíte, sme s kolegom robili napol. Za 3 mesiace z prvej verzie na poslednú väčšinu som spravil sám. Ale veľmi zle poznám Javascript. Toto bol môj jediný a, dúfam, posledný projekt na Javascript, na ktorom som pracoval. Dostal som ho, pozrel som sa - o, hrôza. Ale veľmi som chcel dokončiť produkt a toto je výsledok.
Ďakujem veľmi pekne za prednášku! Je to skvelý nástroj. Tableau ste porovnávali?
Ďakujem. Preto som to nazval Tabix, lebo prvé písmená sa zhodujú.
Pretože konkurujete?
Bude veľa investícií, budeme súťažiť.
Ako navrhnete predať interným analytikom, že tento nástroj úplne nahradí *Tableau*? Какие будут аргументы?
Nativne pracuje s ClickHouse. Skúšal som Tableau, ale tam nie je možné písať podporu pre slovníky a podobné. Vieme, ako s Tabix pracujú ľudia. Píšu požiadavky, exportujú do CSV a nahrávajú do BI. A tam už niečo robia. Ale ťažko si viem predstaviť, ako to robia, pretože – je to grafický nástroj. Môže exportovať 5 000 riadkov, maximálne 6 000 riadkov, ale nie viac, inak prehliadač nevydrží.
To znamená, že existujú nejaké vážne obmedzenia objemu dát, áno?
Áno. Neviem si predstaviť, že by ste chceli exportovať 10 000 riadkov na obrazovku prehliadača. Prečo?
Predpokladá sa, že to je rozhranie na rýchle prezeranie dát? Trochu si s tým pohrať, otáčať?
Áno, rýchlo si pozrieť, ako to funguje, a jednoducho vytvoriť súhrnný graf. Potom to niekam poslať. Máme našu vlastnú reportingovú systém, z ktorej jednoducho beriem tento dotaz. Nakreslím to v Tabix a pošlem do našich reportov.
A ešte jedna otázka. Kohortná analýza?
Ak budú požiadavky, pridáme to.
Keď sme len začínali používať ClickHouse, koľko času zabralo zavedenie ClickHouse a dosiahnutie produkčného stavu?
Ako som už povedal, zaviedli sme testovací klaster za veľmi krátke obdobie. Za dva dni sme ho nasadili. A ešte pár týždňov sme ho testovali. Do produkcie sme sa dostali za približne tri mesiace. Ale mali sme svoj vlastný ETL, teda nástroj na ukladanie dát. A ten nám písal do všetkého, čo bolo možné. Vie písať do MongoDB, Cassandra, MySQL. Naučiť ho písať do ClickHouse bolo jednoduché. Mali sme potrebnú infraštruktúru na rýchle nasadenie. Po približne troch mesiacoch sme začali odstraňovať prvý komponent. Po šiestich mesiacoch sme sa úplne vzdali všetkého ostatného. Ostal nám iba ClickHouse.
Igor, veľmi pekne ďakujem za prezentáciu. Veľmi sa mi páčil funkčnosť vytvárania trás na mapách. Plánuje sa integrácia s Yandex.Maps a konkrétne s vlastnými Yandex.Maps?
Snažil som sa integrovať namiesto Google map, ale nenašiel som na Yandex.Maps tmavú tému. Neopísal som jeden kúsok. Vrátim sa, aby som doplnil.
Snímek – Google map. Tam je príkaz „DRAW_GMAPS“, ktorý vykresľuje mapu. Existuje príkaz „DRAW_YMAPS“, t. j. môže vykresliť Yandex.Map. A v skutočnosti sa pod týmto príkazom nachádza Javascript, teda dáta, ktoré dostanete z ClickHouse, môžete preniesť do Javascriptu, ktorý tu napíšete. A máte na výstupe oblasť, kde by mala byť vykreslená. Môžete vykresliť akýkoľvek graf, t. j. akýkoľvek graf, mapu, môžete vykresliť svoj vlastný komponent. Predtým som mal inú knižnicu na vykreslenie samotných grafov.
T. j. existuje nástroj na prispôsobenie funkčnosti zobrazenia?
Akékoľvek. Môžete vziať a prefarbiť tieto body, aby neboli červené, ale modré, zelené.
Ďakujem za prezentáciu! Mal ste snímok, na ktorom boli predstavené alternatívne nástroje na dotazy ClickHouse na vytvorenie dashboardov, analytických správ. Pochopil som, že v čase, keď ste začali pracovať s ClickHouse, pre tieto nástroje neboli napísané adaptéry. Zaujíma ma, prečo ste sa rozhodli vytvoriť svoj vlastný nástroj, namiesto toho, aby ste napísali adaptér pre nejaký existujúci nástroj? Myslím, že doladiť editor testov je rýchle. Prečo ste sa rozhodli urobiť toľko práce?
Tu je zaujímavý moment – ide o to, že som technický riaditeľ, nie dátový vedec. V tom čase, keď sme začali zavádzať Druid, som mal vo svojom roadmape asi 50 % úloh – poďme počítať toto alebo poďme počítať to, alebo analyzujme toto. A nakoniec sme zaviedli ClickHouse. Rýchlo som začal všetko budovať, počítať, rýchlo som dokončil svoj roadmap. A v tom momente som si uvedomil, že mi chýbajú znalosti z Data Science, z vizualizácie dát. Tabix je akési moje domáce úlohy pri štúdiu vizualizácie dát. Pozrel som sa, ako doplniť Zeppelin. Mám k jeho programovaniu mierny odpor. Pozrel som sa na Redash, ako by som ho mohol doplnit, ale chýbal mi tam normálny editor. A SuperSet je tiež napísaný v jazyku, ktorý veľmi nemám rád. A preto som sa rozhodol vytvoriť si vlastný nástroj a takto to dopadlo.
Igor, akceptujete pull requesty?
Áno.
Veľmi pekne ďakujem za prednášku! A dve otázky. Po prvé – nehovoríte o Javascript veľmi lichôtivo. Písali ste na „nahom“ Javascript alebo to bol nejaký framework?
Radšej na „nahom“ Javascript.
Aký framework teda?
Angular.
Rozumiem. A druhá otázka. Nerozvažovali ste R a *Shiny??*
Zvažoval. Hral som sa s tým.
Mohli ste tiež jednoducho napísať adaptér.
Existuje. Zdá sa, že ho vytvorila komunita, ale, ako som odpovedal na predchádzajúcu otázku, chcel som to skúsiť sám.
*Nie, čo sa týka vizualizácie, tam predsa existuje.
Hovoríte, že existuje taká vec, ktorá vám vykreslí graf. Otvoril som knižku o vizualizácii dát. A pomyslel som si: „Dajme tomu, že skúsim tieto dáta vizualizovať. Napíšem to sám, aby to spracovalo údaje.“ A začal som lepšie rozumieť technológii podávania dát. Keby som zobral existujúcu komponentu, naučil by som sa s ňou horšie pracovať, t. j. konkrétne vizualizáciou. Ale takto – áno, R sa mi páčila, ale zatiaľ som nečítal knižku „R pre začiatočníkov.“
Ďakujeme!
Jednoduchá otázka. Existujú nejaké možnosti rýchlo exportovať tabuľku, graf?
Môžete exportovať do CSV, do Excelu.
Nie údaje, ale hotovú tabuľku, hotový graf? Napríklad, aby ste to mohli ukázať nadriadeným.
Existuje tlačidlo „Exportovať“ a tlačidlo „Exportovať graf do png, jpg“.
Ďakujeme!
P.S. Mini-inštrukcia na inštaláciu tabix
- Stiahnuť
- Rozbaliť, skopírovať adresár
builddo nginx root_path - Nastaviť nginx
Zdroj: habr.com

