{"id":73358,"date":"2020-03-09T08:42:14","date_gmt":"2020-03-09T05:42:14","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/clickhouse-vizualno-bystryj-i-naglyadnyj-analiz-dannyh-v-tabix-igor-stryhar"},"modified":"2020-03-09T08:42:14","modified_gmt":"2020-03-09T05:42:14","slug":"clickhouse-vizualno-bystryj-i-naglyadnyj-analiz-dannyh-v-tabix-igor-stryhar","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/clickhouse-vizualno-bystryj-i-naglyadnyj-analiz-dannyh-v-tabix-igor-stryhar","title":{"rendered":"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><strong>Apresento a voc\u00eas a transcri\u00e7\u00e3o do relat\u00f3rio de 2017 de Igor Strychar \u00abClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix\u00bb.<\/strong><\/p>\n<p><\/p>\n<p>Interface web para ClickHouse no projeto Tabix.<br \/>\nPrincipais funcionalidades:<\/p>\n<p><\/p>\n<ul>\n<li>Funciona com ClickHouse diretamente do navegador, sem necessidade de instala\u00e7\u00e3o de software adicional;<\/li>\n<li>Editor de consultas com destaque de sintaxe;<\/li>\n<li>Autocompletar comandos;<\/li>\n<li>Ferramentas de an\u00e1lise gr\u00e1fica da execu\u00e7\u00e3o de consultas;<\/li>\n<li>Esquemas de cores \u00e0 escolha.<br \/>\n<img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/9d95cf5ceb5acc3a1301943165ca9225.png\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"w1-XsL3nbRg\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/w1-XsL3nbRg\/hqdefault.jpg\" alt=\"Por que no hosting comum a administra\u00e7\u00e3o do PrestaShop \u00e9 lenta, e no seu n\u00e3o \u00e9?\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/950e3d0a3ff10d267ae48e897f5cbdb6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Sou o diretor t\u00e9cnico do \u0421\u041c\u04182. N\u00f3s somos um agregador de not\u00edcias. Armazenamos muitos dados que recebemos de nossos parceiros e os registramos no ClickHouse \u2013 cerca de 30.000 consultas por segundo.<\/p>\n<p><\/p>\n<p>Esses dados incluem:<\/p>\n<p><\/p>\n<ul>\n<li>Cliques em not\u00edcias.<\/li>\n<li>Exibi\u00e7\u00f5es de not\u00edcias no agregador.<\/li>\n<li>Exibi\u00e7\u00f5es de banners na nossa rede.<\/li>\n<li>E registramos eventos do nosso pr\u00f3prio contador, que \u00e9 semelhante ao Yandex.Metrica. Essa \u00e9 nossa pr\u00f3pria microan\u00e1lise. <\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/8f5a7af9fef04a51fed29279557c3b64.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tivemos uma vida muito agitada antes do ClickHouse. Sofremos muito tentando armazenar esses dados em algum lugar e analis\u00e1-los de alguma forma.<\/p>\n<p><\/p>\n<p><strong>Vida antes do ClickHouse \u2014 infiniDB<\/strong><\/p>\n<p><\/p>\n<p>A primeira coisa que tivemos foi a infiniDB. Ela ficou conosco por 4 anos. Lan\u00e7amos com dificuldades. <\/p>\n<p><\/p>\n<ul>\n<li>Ela n\u00e3o suporta clusteriza\u00e7\u00e3o ou sharding. Nenhuma dessas funcionalidades avan\u00e7adas j\u00e1 vinha configurada por padr\u00e3o. <\/li>\n<li>Ela tinha dificuldades para carregar dados. Apenas uma utilidade de console espec\u00edfica, que s\u00f3 podia carregar arquivos CSV e de forma bastante confusa. <\/li>\n<li>O banco de dados era single-threaded. Podia-se escrever ou ler. Mas permitia processar grandes volumes de dados. <\/li>\n<li>Al\u00e9m disso, havia um truque curioso. A cada noite, precis\u00e1vamos reiniciar o servidor, caso contr\u00e1rio ele n\u00e3o funcionava. <\/li>\n<\/ul>\n<p><\/p>\n<p>Ela funcionou conosco at\u00e9 o final de 2016, quando fizemos a transi\u00e7\u00e3o completa para o ClickHouse.<\/p>\n<p><\/p>\n<p><strong>Vida antes do ClickHouse \u2014 Cassandra<\/strong><\/p>\n<p><\/p>\n<p>Como a infiniDB era single-threaded, decidimos que precisar\u00edamos de algum banco de dados multi-threaded, onde pud\u00e9ssemos escrever muitos fluxos simultaneamente.<\/p>\n<p><\/p>\n<p>Experimentamos muitas coisas interessantes. Depois decidimos testar o Cassandra. Com o Cassandra, tudo estava perfeito. 10.000 consultas por segundo ao inserir. Cerca de 2.000 consultas ao ler. <\/p>\n<p><\/p>\n<p>Mas tamb\u00e9m havia suas peculiaridades. Uma vez por m\u00eas ou de dois em dois meses, ocorria uma desincroniza\u00e7\u00e3o do banco de dados. Era preciso acordar e correr para consertar o Cassandra. Reinici\u00e1vamos os servidores um por um. E tudo ficava suave e bonito. <\/p>\n<p><\/p>\n<p><strong>A Vida Antes do ClickHouse \u2013 Druid<\/strong><\/p>\n<p><\/p>\n<p>Depois percebemos que precis\u00e1vamos escrever ainda mais dados. Em 2016, come\u00e7amos a considerar o Druid. <\/p>\n<p><\/p>\n<p>Druid \u00e9 um banco de dados aberto, escrito em Java. Muito espec\u00edfico. E se adequava ao clickstream, quando precis\u00e1vamos armazenar algum fluxo de eventos e depois realizar agrega\u00e7\u00f5es ou gerar relat\u00f3rios anal\u00edticos.<\/p>\n<p><\/p>\n<p>O Druid tinha a vers\u00e3o 0.9.X. <\/p>\n<p><\/p>\n<p>Por si s\u00f3, o banco de dados \u00e9 muito dif\u00edcil de implementar. Essa \u00e9 a complexidade da infraestrutura. Para instal\u00e1-lo, era necess\u00e1rio colocar muitos servidores. E cada servidor tinha seu pr\u00f3prio papel. <\/p>\n<p><\/p>\n<p>Para carregar dados nele, era necess\u00e1rio aplicar um certo 'shamanismo'. Existe um projeto Open Source \u2013 Tranquility, que perdia dados no fluxo. Quando carreg\u00e1vamos dados nele, ele os perdia. <\/p>\n<p><\/p>\n<p>Mas de alguma forma come\u00e7amos a implement\u00e1-lo. Fomos como porcos-espinhos que se espetavam, mas continuavam a comer cacto, come\u00e7amos a implement\u00e1-lo. Levamos cerca de um m\u00eas para preparar toda a infraestrutura para ele, ou seja, encomendar servidores, configurar fun\u00e7\u00f5es e realizar uma automa\u00e7\u00e3o completa de implanta\u00e7\u00e3o. Ou seja, em caso de queda do cluster, um segundo cluster seria implantado automaticamente. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/a8193aab09ab9cce3b69e3b84ce470dd.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mas ent\u00e3o aconteceu um milagre. Eu estava de f\u00e9rias e meus colegas me enviaram um link para <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/yandex\/blog\/303282\/\">habr<\/a><\/noindex>, onde dizia que a Yandex decidiu abrir o ClickHouse. Eu disse que vamos experimentar.<\/p>\n<p><\/p>\n<p>E em apenas 2 dias implantamos um cluster de teste do ClickHouse. Come\u00e7amos a carregar dados nele. Comparado ao infiniDB \u2013 \u00e9 simples, comparado ao Druid \u2013 \u00e9 simples. Comparado ao Cassandra tamb\u00e9m \u00e9 simples. Porque se voc\u00ea carregar dados no Cassandra a partir do php, isso n\u00e3o \u00e9 simples.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/0b4b6ea08f7f7037d0e26dbe3f33fa53.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>O que obtivemos? Desempenho em velocidade. Desempenho no armazenamento de dados. Ou seja, \u00e9 utilizado muito menos espa\u00e7o em disco. O ClickHouse \u00e9 r\u00e1pido, ele \u00e9 muito r\u00e1pido em compara\u00e7\u00e3o com outros produtos. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/9ff5e2ac127be8813b5d5cec49dab73a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>No momento do lan\u00e7amento, quando a Yandex publicou o ClickHouse como Open Source, havia apenas um cliente de console. N\u00f3s, na nossa empresa, o \u0421\u041c\u04182, decidimos tentar criar um cliente nativo para web, para que pud\u00e9ssemos abrir uma p\u00e1gina no navegador, escrever uma consulta e obter o resultado, porque come\u00e7amos a escrever muitas consultas. Escrever no console \u00e9 dif\u00edcil. E fizemos nossa primeira vers\u00e3o.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/a2569a45f9bf1b91815ca3dfa0eefcf3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>E mais perto do inverno do ano passado, come\u00e7aram a aparecer ferramentas de terceiros para trabalhar com o ClickHouse. Essas ferramentas incluem:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/redash.io\/\">Redash.IO<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/zeppelin.apache.org\/\">Apache Zeppelin<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/airbnb\/incubator-superset\">Superset Airbnb<\/a><\/noindex>. (Agora <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/apache\/incubator-superset\">https:\/\/github.com\/apache\/incubator-superset<\/a><\/noindex>)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/blog.jetbrains.com\/datagrip\/2018\/08\/15\/datagrip-2018-2-2-clickhouse-support-and-bugfixes\/\">Jetbrains IDE<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Vertamedia\/clickhouse-grafana\">Vertamedia\/clickhouse-grafana<\/a><\/noindex>. <\/li>\n<\/ul>\n<p><\/p>\n<p>Vou considerar algumas dessas ferramentas, ou seja, aquelas com as quais trabalhei. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/7b91bc29b1c04020b56c89621287e8c1.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c9 uma boa ferramenta, mas para Druid. Quando implementamos o Druid, experimentei o SuperSet. Gostei dele. Funciona muito rapidamente para Druid. <\/p>\n<p><\/p>\n<p>N\u00e3o \u00e9 adequado para ClickHouse. Ou seja, ele funciona e \u00e9 capaz de rodar, mas s\u00f3 consegue processar consultas elementares como: SELECT event, GROUP BY event. N\u00e3o suporta sintaxe mais complexa do ClickHouse.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/a708c787120de3db725a9bba4c8bd642.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A pr\u00f3xima ferramenta \u00e9 o Apache Zeppelin. \u00c9 uma coisa boa e interessante. Funciona bem. Suporta notebooks, dashboards e vari\u00e1veis. Sei que algu\u00e9m da comunidade ClickHouse o utiliza. <\/p>\n<p><\/p>\n<p>Mas n\u00e3o h\u00e1 suporte para a sintaxe do ClickHouse, ou seja, voc\u00ea ter\u00e1 que escrever as consultas no console ou em outro lugar. Depois, verificar se tudo funciona. Isso \u00e9 simplesmente inconveniente. Mas o suporte para dashboards \u00e9 bom. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/0c2afefc1504d14dd50f88459a652a1c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A pr\u00f3xima ferramenta \u00e9 o Redash.IO. O Redash \u00e9 hospedado na internet. Ou seja, ao contr\u00e1rio das ferramentas anteriores, n\u00e3o precisa ser instalado. \u00c9 um sistema de dashboard com a capacidade de consolidar dados de diferentes DataSources. Ou seja, voc\u00ea pode extrair de ClickHouse, MySQL, PostgreSQL e outros bancos de dados. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/dc639fe6e9716c835d1fe0fdfaa300b8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Literalmente, h\u00e1 um m\u00eas (em mar\u00e7o de 2017) foi adicionada a suportar no Grafana. Quando voc\u00ea constr\u00f3i relat\u00f3rios no Grafana, por exemplo, sobre o estado do seu hardware ou algumas m\u00e9tricas, agora \u00e9 poss\u00edvel criar o mesmo gr\u00e1fico ou um painel a partir dos dados do ClickHouse diretamente. Isso \u00e9 muito conveniente, e estamos usando aqui. Isso permite encontrar anomalias. Ou seja, se algo est\u00e1 acontecendo e algum hardware falha ou fica sobrecarregado, voc\u00ea pode verificar a raz\u00e3o, se esses dados j\u00e1 chegaram ao ClickHouse. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/0dd54a7633d25d0c924c2e6825028eb3.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Foi muito inconveniente escrever nessas ferramentas ou no console. Ent\u00e3o, decidi aprimorar nossa primeira interface. E peguei a ideia do EventSQL, SeperSet, Zeppelin.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/3252a09e0942428143336639aa399f4d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>O que eu queria? Queria obter gr\u00e1ficos, um editor aprimorado, e implementar o suporte para dicion\u00e1rios de sugest\u00f5es. Porque o ClickHouse tem uma fun\u00e7\u00e3o \u00f3tima \u2013 dicion\u00e1rios. Mas \u00e9 dif\u00edcil trabalhar com dicion\u00e1rios, porque voc\u00ea precisa lembrar o formato dos valores armazenados, ou seja, se \u00e9 um n\u00famero ou uma string, etc. Como usamos dicion\u00e1rios em suas v\u00e1rias vers\u00f5es com frequ\u00eancia, era bastante dif\u00edcil escrever as consultas.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/90a529b4fb5d03a6d61c89e00287b21d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Passaram-se 3 meses desde o lan\u00e7amento da nossa primeira vers\u00e3o. Fiz cerca de 330 commits na branch privada e surgiu o Tabix.<\/p>\n<p><\/p>\n<p>Diferente da vers\u00e3o anterior, que se chamava ClickHouse-Frontend, eu decidi renome\u00e1-lo para um nome simples. E assim surgiu o Tabix.<\/p>\n<p><\/p>\n<p>O que h\u00e1 de novo?<\/p>\n<p><\/p>\n<p>Desenha gr\u00e1ficos. Suporta a sintaxe SQL do ClickHouse. Oferece sugest\u00f5es de fun\u00e7\u00f5es e tem muitas outras funcionalidades interessantes.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/cd2bbb0c2c3e0fa2d2622bbd2aecdbc7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Assim \u00e9 como o esquema geral do Tabix se apresenta. \u00c0 esquerda est\u00e1 a \u00e1rvore. No centro \u2013 o editor de consultas. E embaixo \u2013 o resultado dessa consulta.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/becf5df173220480e077ae8d8e0ebf3e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Agora vou mostrar como funciona o editor de consultas. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/d5ca1028922a12d5e6f133704d4c91a2.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aqui o autocompletar foi acionado automaticamente na tabela, oferecendo sugest\u00f5es relacionadas aos campos e \u00e0s fun\u00e7\u00f5es. Se voc\u00ea pressionar ctrl e enter, a consulta ser\u00e1 executada ou exibir\u00e1 um erro. A consulta mais simples \u00e9 enviada ao Tabix e retorna o resultado, ou seja, \u00e9 poss\u00edvel trabalhar rapidamente com o ClickHouse.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/74623f9f5030eb08523dc7269517a5d5.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Os dicion\u00e1rios, como j\u00e1 mencionei, s\u00e3o uma coisa muito interessante com a qual trabalhamos bastante. E que permitiu realizar muitas tarefas. Por exemplo, nos dicion\u00e1rios armazenamos todas as cidades. Guardamos o identificador da cidade e o nome da cidade, sua latitude e longitude. E no banco, armazenamos apenas o identificador da cidade. Dessa forma, comprimimos os dados significativamente.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/fa698b916b01a58f182003e6a15dfea0.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Parece uma coisa simples, mas no ClickHouse isso ajuda de forma bastante interessante. Como o ClickHouse suporta apenas joins aninhados, a consulta se expande significativamente tanto em profundidade quanto em largura. E quando a chave abre e surge uma express\u00e3o longa, uma coisa simples como dobrar a consulta torna mais f\u00e1cil trabalhar com ela mesma. Porque quando a consulta tem 200-300 linhas e sua largura \u00e9 enorme, essa fun\u00e7\u00e3o de reduzir a consulta \u00e9 realmente uma salva\u00e7\u00e3o, ajudando a encontrar um lugar ou localiz\u00e1-la de outra forma.<\/p>\n<p><\/p>\n<p>\u00c1rvore de objetos, m\u00faltiplas consultas e guias (V\u00eddeo 13:46 <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/w1-XsL3nbRg?t=826\">https:\/\/youtu.be\/w1-XsL3nbRg?t=826<\/a><\/noindex>)<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/d43efecc6b0b395cdc17a3dd9db53400.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A seguir, irei mostrar a \u00e1rvore e as guias. \u00c0 esquerda \u2013 est\u00e1 a \u00e1rvore, e em cima voc\u00ea pode criar v\u00e1rias guias. As guias funcionam como um espa\u00e7o de trabalho. Voc\u00ea pode criar v\u00e1rias guias e nome\u00e1-las de forma espec\u00edfica. \u00c9 como um mini-sistema para a constru\u00e7\u00e3o de relat\u00f3rios.<\/p>\n<p><\/p>\n<p>As guias s\u00e3o salvas automaticamente. Se voc\u00ea recarregar o navegador, fechar ou abrir o Tabix, tudo isso ser\u00e1 mantido.<\/p>\n<p><\/p>\n<p>Tecla de atalho \u2013 pr\u00e1tico (V\u00eddeo 14:39 <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/w1-XsL3nbRg?t=879\">https:\/\/youtu.be\/w1-XsL3nbRg?t=879<\/a><\/noindex>)<\/p>\n<p><\/p>\n<p>Existem teclas de atalho e s\u00e3o bem numerosas. Aqui est\u00e3o alguns exemplos que selecionei. Isso inclui alternar entre guias, executar consultas ou executar v\u00e1rias consultas. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/27f3e6d0dbb4d1038bb551808b13d2ac.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vou mostrar como trabalhar com o resultado. Enviamos a solicita\u00e7\u00e3o. Aqui eu desenho sin, cos e tg. \u00c9 poss\u00edvel destacar o resultado, ou seja, desenhar um gr\u00e1fico t\u00edpico em uma coluna. Podemos real\u00e7ar os valores positivos ou negativos. Ou simplesmente colorir um elemento espec\u00edfico da tabela. Isso \u00e9 \u00fatil quando a tabela \u00e9 enorme e precisamos encontrar alguma anomalia visualmente. Quando procurei anomalias, destaquei algumas linhas e elementos em verde ou vermelho.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/af0c21073a1edd81e4d688f119ef7568.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>H\u00e1 muitas coisas interessantes l\u00e1. Por exemplo, como copiar para o Redmine em Markdown. Se voc\u00ea precisa copiar o resultado para algum lugar, isso \u00e9 muito conveniente. Basta selecionar a \u00e1rea, dizer \"Copiar para o Redmine\" e ele copiar\u00e1 em Markdown ou criar\u00e1 uma solicita\u00e7\u00e3o Where.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/43034a47b5ca31ee08e7721cc5f5159c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Em seguida, vem a otimiza\u00e7\u00e3o de consultas. Uma vez, esqueci de especificar o campo \"date\". E minha consulta no ClickHouse foi processada n\u00e3o muito r\u00e1pido, mas rapidamente, ou seja, em menos de um segundo. Quando vi quantas linhas ele percorreu, fiquei assustado. N\u00e3o escrevemos tantas linhas nesta tabela em um dia. Comecei a analisar a consulta e percebi que havia esquecido de um ponto: que precisava dos dados n\u00e3o de toda a tabela, mas de um per\u00edodo espec\u00edfico.<\/p>\n<p><\/p>\n<p>No Tabix, h\u00e1 uma aba \"Stats\", onde fica todo o hist\u00f3rico de solicita\u00e7\u00f5es enviadas, ou seja, l\u00e1 voc\u00ea pode ver quantas linhas foram lidas por essa consulta e quanto tempo levou para ser executada. Isso permite otimizar. <\/p>\n<p><\/p>\n<p>Voc\u00ea pode construir uma tabela resumo com o resultado da consulta. Voc\u00ea enviou uma consulta para o ClickHouse, obteve alguns dados. E depois, esses dados podem ser arrastados com o mouse para construir alguma tabela resumo.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/0365df303eb55336eeb8a037cb118113.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Outra coisa interessante \u00e9 a constru\u00e7\u00e3o de gr\u00e1ficos. Suponha que temos essa consulta: para sin, cos de 0 a 299. E para desenh\u00e1-la, \u00e9 preciso selecionar a aba \"Draw\" e voc\u00ea receber\u00e1 o gr\u00e1fico com seus sin e cos. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/bdf00b9d6bffb907e88d2fdb7bfb16dc.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c9 poss\u00edvel dividir isso em eixos diferentes, ou seja, \u00e9 poss\u00edvel desenhar dois gr\u00e1ficos lado a lado. Escreva um comando e o segundo comando. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/efe77846e3f5f30a5d73e75be53d608a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c9 poss\u00edvel desenhar histogramas.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/e531aac548eca2eb9e30dac21f8876b8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c9 poss\u00edvel dividir isso em uma matriz de gr\u00e1ficos.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/3404f87cee0e376df8ca62f03fc0fc7e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Voc\u00ea pode construir um mapa de calor. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/e15fe90c49bb850c821dab7492856b0b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Voc\u00ea pode construir um calend\u00e1rio de calor. Ali\u00e1s, \u00e9 uma coisa muito conveniente quando se precisa analisar anomalias ao longo de um ano, ou seja, encontrar picos ou quedas. Essa visualiza\u00e7\u00e3o de dados me ajudou muito. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/08945df379d33aa73518ef10d02fe561.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>O pr\u00f3ximo \u00e9 o Treemap.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/a7331b33b77e98ce85aff0316e3dcc76.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/5794844e8c1db71f1507cbdae67fedf6.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Sankeys \u2013 um gr\u00e1fico interessante. Ele \u00e9 ou Streamgraphs ou River. Mas eu o chamo de River. Ele tamb\u00e9m permite buscar anomalias. \u00c9 muito conveniente. Recomendo us\u00e1-lo para buscas.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/483f363d93ba80dc9ac165ae083db585.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A pr\u00f3xima coisa interessante \u00e9 a renderiza\u00e7\u00e3o de um mapa din\u00e2mico. Se voc\u00ea armazena latitude, longitude e, por exemplo, um destino em seu banco de dados, se voc\u00ea est\u00e1, por exemplo, com transporte rodovi\u00e1rio ou voos de avi\u00e3o, pode tra\u00e7ar os caminhos dos destinos. Tamb\u00e9m \u00e9 poss\u00edvel definir a velocidade e o tamanho desses objetos que eles chegam.<\/p>\n<p><\/p>\n<p>Mas o problema com este mapa \u00e9 que ele desenha apenas o mapa do mundo, sem detalhes.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/13f302e67e7f84dc85728204153d6377.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Posteriormente, adicionei o Google Map. Se voc\u00ea armazena latitude e longitude, pode apresentar o resultado no Google Map, mas sem suporte a avi\u00f5es.<\/p>\n<p><\/p>\n<p>N\u00f3s discutimos as fun\u00e7\u00f5es principais para trabalhar com o resultado, com a consulta no Tabix. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/849baa55e6865ab451b82f23fe6e5110.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>O pr\u00f3ximo ponto \u00e9 a an\u00e1lise do seu servidor ClickHouse. H\u00e1 uma aba separada chamada 'M\u00e9tricas', onde voc\u00ea pode ver o tamanho dos dados armazenados por cada coluna. Na captura de tela, \u00e9 mostrado que o campo 'referrer' ocupa cerca de 730 GB. Se desistirmos desse campo, economizaremos tr\u00eas shards de 700 GB, ou seja, cerca de 2 TB que n\u00e3o precisamos. <\/p>\n<p><\/p>\n<p>Tamb\u00e9m temos o campo 'request_id', que armazenamos em formato de string. Mas se come\u00e7armos a armazen\u00e1-lo em formato num\u00e9rico, isso reduzir\u00e1 significativamente o tamanho desse campo. <\/p>\n<p><\/p>\n<p>Aqui tamb\u00e9m est\u00e1 configurado o servidor e a lista de n\u00f3s do seu cluster. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/fa2a35c1af59b3f56059fcfb26571c6e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A pr\u00f3xima aba s\u00e3o as m\u00e9tricas. Elas s\u00e3o coletadas em tempo real do ClickHouse e simplesmente permitem analisar o estado do servidor e entender o que est\u00e1 acontecendo com ele. Isso n\u00e3o \u00e9 uma substitui\u00e7\u00e3o completa do Grafana. \u00c9 necess\u00e1rio para uma an\u00e1lise r\u00e1pida. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/7de741718ef19b81bd0f7f33dbed019e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A pr\u00f3xima aba s\u00e3o os processos. Atrav\u00e9s deles \u00e9 poss\u00edvel entender o que est\u00e1 acontecendo no servidor. Compreender o que est\u00e1 em curso. Eu tive uma consulta que consumia 200 GB de leitura a cada vez. Eu percebi isso gra\u00e7as a essa interface. Identifiquei e ajustei, e o resultado foi cerca de 30 GB, ou seja, um desempenho muito melhor.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e clara no Tabix. Igor Strykhar\" src=\"\/wp-content\/uploads\/2020\/03\/084b6131b189364f9e093792125649df.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Obrigado! E isso est\u00e1 em OpenSource.<\/p>\n<p><\/p>\n<p>Terminei. E, a prop\u00f3sito, isso est\u00e1 em OpenSource, \u00e9 gratuito e voc\u00ea nem precisa baixar. Abra no navegador e tudo funcionar\u00e1. <\/p>\n<p><\/p>\n<p>Perguntas<\/p>\n<p><\/p>\n<p><em>Igor, o que vem a seguir? Para onde voc\u00ea vai desenvolver esta ferramenta?<\/em><\/p>\n<p><\/p>\n<p>A seguir, haver\u00e1 um dashboard, ou seja, pode ser que um dashboard apare\u00e7a. Integra\u00e7\u00e3o com outros bancos de dados. Eu fiz isso, mas ainda n\u00e3o publiquei como OpenSource. Isso \u00e9 MySQL e, possivelmente, PostgreSQL. Ou seja, ser\u00e1 poss\u00edvel enviar consultas do Tabix n\u00e3o apenas para o ClickHouse, mas tamb\u00e9m para outras ferramentas.<\/p>\n<p><\/p>\n<p><em>\u00c9 evidente que um enorme volume de trabalho foi realizado. A ideia acabou sendo bastante completa. Foi feito no navegador, provavelmente para evitar solu\u00e7\u00f5es improvisadas em v\u00e1rias dimens\u00f5es e rapidamente juntar tudo isso. Eu ouvi que voc\u00ea est\u00e1<\/em> <em>php<\/em> <em>trabalhando, ent\u00e3o \u00e9 mais f\u00e1cil colocar no navegador e funcionar\u00e1 em toda parte. N\u00e3o h\u00e1 d\u00favida quanto a isso. A pergunta \u00e9: muito foi realmente feito l\u00e1. Quantas pessoas trabalharam nisso? E quanto tempo tudo isso levou? Porque ferramentas personalizadas geralmente n\u00e3o t\u00eam um funcionalidade t\u00e3o ampla.<\/em><\/p>\n<p><\/p>\n<p>De ver\u00e3o a outono, trabalhou uma pessoa da nossa equipe. Essa foi a primeira vers\u00e3o. Depois, fiz 330 commits sozinho. O que voc\u00ea v\u00ea, fizemos eu e um colega em conjunto. Em 3 meses, da primeira vers\u00e3o at\u00e9 a \u00faltima, eu fiz a maior parte sozinho. Mas eu conhe\u00e7o muito pouco de Javascript. Este foi meu \u00fanico e, espero, \u00faltimo projeto em Javascript que trabalhei. Ele caiu nas minhas m\u00e3os, eu olhei \u2013 oh, horror. Mas eu realmente queria finalizar o produto e aqui est\u00e1 o resultado.<\/p>\n<p><\/p>\n<p><em>Muito obrigado pela apresenta\u00e7\u00e3o! \u00c9 uma ferramenta excelente. A<\/em> <em>Tableau<\/em> <em>compararam?<\/em><\/p>\n<p><\/p>\n<p>Obrigado. \u00c9 por isso que chamamos de Tabix, porque as primeiras letras coincidem. <\/p>\n<p><\/p>\n<p><em>Porque competem?<\/em><\/p>\n<p><\/p>\n<p>Haver\u00e1 muitos investimentos, vamos competir. <\/p>\n<p><\/p>\n<p><em>Como sugeriria vender para os analistas internos que essa ferramenta substituir\u00e1 totalmente<\/em> *Tableau*<em>? \u041a\u0430\u043a\u0438\u0435 \u0431\u0443\u0434\u0443\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b?<\/em><\/p>\n<p><\/p>\n<p>Funciona nativamente com o ClickHouse. Eu experimentei o Tableau, mas l\u00e1 n\u00e3o \u00e9 poss\u00edvel escrever suporte a dicion\u00e1rios e assim por diante. <strong>Eu sei como as pessoas usam o Tabix. Elas escrevem consultas, exportam para CSV e carregam no BI.<\/strong> E j\u00e1 l\u00e1 fazem algo. Mas eu mal consigo imaginar como elas fazem isso, porque \u2013 \u00e9 uma ferramenta gr\u00e1fica. Ela pode exportar 5.000 linhas, no m\u00e1ximo 6.000 linhas, mas n\u00e3o mais do que isso, caso contr\u00e1rio, o navegador n\u00e3o suporta. <\/p>\n<p><\/p>\n<p><em>Ou seja, h\u00e1 restri\u00e7\u00f5es significativas em rela\u00e7\u00e3o ao volume de dados, n\u00e3o \u00e9?<\/em><\/p>\n<p><\/p>\n<p>Sim. Eu n\u00e3o consigo imaginar que voc\u00ea queira exportar 10.000 linhas para a tabela na tela do navegador. Por que? <\/p>\n<p><\/p>\n<p><em>Presume-se que esta \u00e9 uma interface para uma r\u00e1pida visualiza\u00e7\u00e3o de dados? Rotacionar um pouco, folhear?<\/em><\/p>\n<p><\/p>\n<p>Sim, \u00e9 r\u00e1pido ver como funciona e s\u00f3 construir um gr\u00e1fico consolidado. Depois, envi\u00e1-lo para algum lugar. Temos nosso pr\u00f3prio sistema de relat\u00f3rios, de onde simplesmente pego essa consulta. Fa\u00e7o o desenho no Tabix e envio para nosso report. <\/p>\n<p><\/p>\n<p><em>E mais uma pergunta. An\u00e1lise de coorte?<\/em><\/p>\n<p><\/p>\n<p>Se houver solicita\u00e7\u00f5es, adicionaremos. <\/p>\n<p><\/p>\n<p><em>Quando come\u00e7amos a usar<\/em> <em>ClickHouse, quanto tempo demorou para a implementa\u00e7\u00e3o<\/em> <em>ClickHouse<\/em> <em>e coloc\u00e1-lo em<\/em> <em>estado de produ\u00e7\u00e3o?<\/em><\/p>\n<p><\/p>\n<p>Como eu disse, implementamos um cluster de testes em um tempo muito curto. Levou apenas dois dias para configur\u00e1-lo. E mais algumas semanas o testamos. Chegamos \u00e0 produ\u00e7\u00e3o em cerca de 3 meses. Mas t\u00ednhamos nosso pr\u00f3prio ETL, ou seja, uma ferramenta para grava\u00e7\u00e3o de dados. Ele conseguia gravar em tudo que fosse poss\u00edvel. Ele pode gravar em MongoDB, Cassandra, MySQL. Ensinar ele a gravar no ClickHouse foi simples. T\u00ednhamos uma infraestrutura pronta para uma implementa\u00e7\u00e3o r\u00e1pida. Ap\u00f3s 3 meses, come\u00e7amos a remover o primeiro componente. Em 6 meses, abrimos m\u00e3o de todo o resto. Ficou apenas o ClickHouse.<\/p>\n<p><\/p>\n<p><em>Igor, muito obrigado pela apresenta\u00e7\u00e3o. Gostei muito da funcionalidade de constru\u00e7\u00e3o de caminhos em mapas. Est\u00e1 prevista a integra\u00e7\u00e3o com o Yandex.Maps, e em particular com os mapas personalizados do Yandex?<\/em><\/p>\n<p><\/p>\n<p>Eu tentei me integrar em vez do Google Maps, mas n\u00e3o encontrei o modo escuro nos Yandex.Maps. Eu n\u00e3o contei uma parte. Vou voltar para complementar. <\/p>\n<p><\/p>\n<p>O slide \u2013 Google Maps. L\u00e1 existe o comando \"DRAW_GMAPS\", que desenha o mapa. Existe o comando \"DRAW_YMAPS\", ou seja, pode desenhar o Yandex.Map. E, na verdade, sob esse comando, existe Javascript, ou seja, os dados que voc\u00ea obt\u00e9m do ClickHouse podem ser passados para o Javascript que voc\u00ea escrever aqui. E voc\u00ea tem uma \u00e1rea de sa\u00edda onde isso deve ser desenhado. Qualquer gr\u00e1fico pode ser desenhado, ou seja, qualquer gr\u00e1fico, mapa, voc\u00ea pode desenhar seu pr\u00f3prio componente. Antes disso, eu tinha outra biblioteca para desenhar os gr\u00e1ficos.<\/p>\n<p><\/p>\n<p><em>Ou seja, existe uma ferramenta para personalizar a funcionalidade de exibi\u00e7\u00e3o?<\/em><\/p>\n<p><\/p>\n<p>Qualquer um. Voc\u00ea pode pegar e mudar a cor desses pontos, tornando-os n\u00e3o vermelhos, mas azuis, verdes.<\/p>\n<p><\/p>\n<p><em>Obrigado pela apresenta\u00e7\u00e3o! Voc\u00ea tinha um slide que apresentava ferramentas alternativas para consultas<\/em> <em>ClickHouse<\/em> <em>para constru\u00e7\u00e3o de dashboards, relat\u00f3rios anal\u00edticos. Entendi que, no momento em que voc\u00ea come\u00e7ou a trabalhar com<\/em> <em>ClickHouse, para essas ferramentas n\u00e3o foram escritos adaptadores. E eu me pergunto, por que voc\u00ea decidiu criar sua pr\u00f3pria ferramenta, em vez de escrever um adaptador para alguma ferramenta existente? Eu penso que ajustar o editor de testes \u00e9 r\u00e1pido. Por que voc\u00ea decidiu fazer tanto trabalho?<\/em><\/p>\n<p><\/p>\n<p>Aqui h\u00e1 um ponto interessante \u2013 o fato \u00e9 que sou diretor t\u00e9cnico, e n\u00e3o cientista de dados. Na \u00e9poca em que come\u00e7amos a implementar o Druid, eu tinha cerca de 50% das tarefas no meu roadmap \u2013 vamos calcular isso ou vamos calcular aquilo, ou vamos analisar isso. E acabou que implementamos o ClickHouse. E comecei a construir tudo rapidamente, calcular, finalizei rapidamente meu roadmap. E nesse momento percebi que me faltavam conhecimentos em Data Science e visualiza\u00e7\u00e3o de dados. Tabix \u00e9 uma esp\u00e9cie de meu dever de casa para aprender sobre visualiza\u00e7\u00e3o de dados. Eu observei como complementar o Zeppelin. Eu tenho uma leve avers\u00e3o \u00e0 sua programa\u00e7\u00e3o. Redash eu observei como complementar, mas me faltava um editor decente. E o SuperSet tamb\u00e9m foi escrito na linguagem que eu n\u00e3o gosto muito. Ent\u00e3o decidi inventar a roda, e aqui est\u00e1 o que resultou.<\/p>\n<p><\/p>\n<p><em>Igor, voc\u00ea aceita Pull requests?<\/em><\/p>\n<p><\/p>\n<p>Sim.<\/p>\n<p><\/p>\n<p><em>Muito obrigado pela apresenta\u00e7\u00e3o! E duas perguntas. Primeiro \u2013 voc\u00ea n\u00e3o fala muito bem sobre<\/em> Javascript. Voc\u00ea programou em Javascript puro ou foi algum framework?*<\/p>\n<p><\/p>\n<p>Melhor em Javascript puro.<\/p>\n<p><\/p>\n<p>Ent\u00e3o, qual framework?<\/p>\n<p><\/p>\n<p>Angular.<\/p>\n<p><\/p>\n<p><em>Entendi. E a segunda pergunta. Voc\u00ea n\u00e3o considerou<\/em> R <em>e<\/em> *<strong>Shiny**<\/strong>?*<\/p>\n<p><\/p>\n<p>Eu considerei. Brinquei com isso. <\/p>\n<p><\/p>\n<p><em>Poderia tamb\u00e9m apenas escrever um adaptador.<\/em><\/p>\n<p><\/p>\n<p>Ele existe. Parece que a comunidade o fez, mas, como respondi \u00e0 pergunta anterior, eu queria experimentar por conta pr\u00f3pria.<\/p>\n<p><\/p>\n<p>*N\u00e3o, em rela\u00e7\u00e3o \u00e0 visualiza\u00e7\u00e3o, h\u00e1 sim.<\/p>\n<p><\/p>\n<p>Voc\u00ea diz que existe essa coisa e ela vai desenhar um gr\u00e1fico para voc\u00ea. Eu abri um livro sobre visualiza\u00e7\u00e3o de dados. E pensei: \"Vou tentar visualizar esses dados. Vou escrever eu mesmo, para que ele estruture os dados\". E comecei a entender melhor a tecnologia de apresenta\u00e7\u00e3o de dados. E se eu tivesse pegado um componente pronto, eu pessoalmente aprenderia a us\u00e1-lo pior, ou seja, especificamente a visualiza\u00e7\u00e3o. Mas sim \u2013 eu gostei do R, mas ainda n\u00e3o li o livro \"R para leigos\". <\/p>\n<p><\/p>\n<p><em>Obrigado!<\/em><\/p>\n<p><\/p>\n<p><em>Pergunta simples. Existem maneiras de exportar rapidamente uma tabela, um gr\u00e1fico?<\/em><\/p>\n<p><\/p>\n<p>\u00c9 poss\u00edvel exportar para CSV, para Excel.<\/p>\n<p><\/p>\n<p><em>N\u00e3o os dados, mas uma tabela pronta, um gr\u00e1fico pronto? Por exemplo, para mostrar para a ger\u00eancia.<\/em><\/p>\n<p><\/p>\n<p>H\u00e1 um bot\u00e3o \"Exportar\" e um bot\u00e3o \"Exportar gr\u00e1fico em png, em jpg\".<\/p>\n<p><\/p>\n<p><em>Obrigado!<\/em><\/p>\n<p><\/p>\n<p>P.S. Mini-instru\u00e7\u00f5es para instalar o tabix<\/p>\n<p><\/p>\n<ul>\n<li>Baixar <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/smi2\/tabix.ui\/releases\">\u00faltima vers\u00e3o<\/a><\/noindex><\/li>\n<li>Descompactar, copiar o diret\u00f3rio <code>build<\/code> para o root_path do nginx<\/li>\n<li>Configurar o nginx<\/li>\n<\/ul>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/491308\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 2017 \u0433\u043e\u0434\u0430 \u0418\u0433\u043e\u0440\u044c \u0421\u0442\u0440\u044b\u0445\u0430\u0440\u044c \u00abClickHouse \u2013 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Tabix\u00bb. \u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f ClickHouse \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 Tabix. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438: \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 ClickHouse \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u041f\u041e; \u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0441 \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u043a\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430; \u0410\u0432\u0442\u043e\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434; \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432; \u0426\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u0441\u0445\u0435\u043c\u044b \u043d\u0430 \u0432\u044b\u0431\u043e\u0440. \u042f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":73359,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-73358","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 2017 \u0433\u043e\u0434\u0430 \u0418\u0433\u043e\u0440\u044c \u0421\u0442\u0440\u044b\u0445\u0430\u0440\u044c \u00abClickHouse \u2013 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Tabix\u00bb. \u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f ClickHouse \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 Tabix..\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/clickhouse-vizualno-bystryj-i-naglyadnyj-analiz-dannyh-v-tabix-igor-stryhar\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47ClickHouse \u2013 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Tabix. \u0418\u0433\u043e\u0440\u044c \u0421\u0442\u0440\u044b\u0445\u0430\u0440\u044c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 2017 \u0433\u043e\u0434\u0430 \u0418\u0433\u043e\u0440\u044c \u0421\u0442\u0440\u044b\u0445\u0430\u0440\u044c \u00abClickHouse \u2013 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Tabix\u00bb. \u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f ClickHouse \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 Tabix..\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/clickhouse-vizualno-bystryj-i-naglyadnyj-analiz-dannyh-v-tabix-igor-stryhar\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-03-09T05:42:14+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-09T05:42:14+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e intuitiva no Tabix. Igor Strikharch | ProHoster","description":"Sugiro que voc\u00ea confira a transcri\u00e7\u00e3o da apresenta\u00e7\u00e3o de 2017 de Igor Strikharch \"ClickHouse \u2013 an\u00e1lise de dados visualmente r\u00e1pida e intuitiva no Tabix\". Interface web para ClickHouse no projeto Tabix..","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/clickhouse-vizualno-bystryj-i-naglyadnyj-analiz-dannyh-v-tabix-igor-stryhar","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47ClickHouse \u2013 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Tabix. \u0418\u0433\u043e\u0440\u044c \u0421\u0442\u0440\u044b\u0445\u0430\u0440\u044c | ProHoster","og:description":"\u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u0434\u043e\u043a\u043b\u0430\u0434\u0430 2017 \u0433\u043e\u0434\u0430 \u0418\u0433\u043e\u0440\u044c \u0421\u0442\u0440\u044b\u0445\u0430\u0440\u044c \u00abClickHouse \u2013 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 Tabix\u00bb. \u0412\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0434\u043b\u044f ClickHouse \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 Tabix..","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/clickhouse-vizualno-bystryj-i-naglyadnyj-analiz-dannyh-v-tabix-igor-stryhar","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-03-09T05:42:14+00:00","article:modified_time":"2020-03-09T05:42:14+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"73358","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:34:26","updated":"2022-09-28 10:01:24","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/73358","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=73358"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/73358\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/73359"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=73358"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=73358"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=73358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}