<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0">

<channel>

<title>Блог об аналитике, визуализации данных, data science и BI, заметки с тегом: dashboard</title>
<link>http://test.leftjoin.ru/tags/dashboard/</link>
<description></description>
<generator>E2 (v3365; Aegea)</generator>

<item>
<title>Проблема Roistat как готового решения для аналитики</title>
<guid isPermaLink="false">149</guid>
<link>http://test.leftjoin.ru/all/problema-roistat-kak-gotovogo-resheniya-dlya-analitiki/</link>
<comments>http://test.leftjoin.ru/all/problema-roistat-kak-gotovogo-resheniya-dlya-analitiki/</comments>
<description>
&lt;p&gt;&lt;img src=http://test.leftjoin.ru/pictures/unnamed-1.png  border=“0” width=100% height=100%&gt;&lt;/p&gt;
&lt;p&gt;Нередко компании, которые обращаются к нам за системой сквозной аналитики, уже используют какие-то инструменты для работы с данными. Иногда это «коробочные» решения. Сразу отказываться от них в пользу кастома не обязательно — на старте их можно интегрировать в новую систему, чтобы сэкономить время и деньги на разработку. Но в этом случае надо быть готовым к тому, что готовые решения не гарантируют точность данных на том же уровне, что специально построенная под вас система аналитики. Именно с этой проблемой мы столкнулись, когда начали строить аналитику для стартапа Refocus: до нас они использовали Roistat, но ошибки в его работе вынудили нас отказаться от него раньше, чем мы планировали.&lt;/p&gt;
&lt;p&gt;Способов построить сквозную аналитику, не обращаясь к готовым решениям, немало: можно собрать in-house отдел аналитики или найти специалистов на аутсорсе.&lt;/p&gt;
&lt;p&gt;При этом нужно учитывать, что работа целой команды аналитики может стоить порядка 5-7 тысяч евро или 500-700 тысяч рублей в месяц. И это не предел — все зависит от размеров компании-заказчика, состояния аналитики до начала работ и других факторов.&lt;/p&gt;
&lt;p&gt;На начальном этапе для многих компаний, у которых объем данных небольшой, такие расходы неоправданы. Из-за этого они часто предпочитают «коробочные» продукты — например, тот же &lt;b&gt;Roistat.&lt;/b&gt; Это самое популярное решение на рынке, которое предлагает премиум-тариф с максимумом функционала и полной поддержкой от 1500 евро / 150 тысяч рублей в месяц. Базовые тарифы у них и того дешевле. У этого инструмента больше 200 встроенных интеграций, и не только с популярными Google Analytics или Яндекс Директ, но и с целым списком нишевых кабинетов и систем, о которых вы даже не слышали.&lt;/p&gt;
&lt;p&gt;После настройки интеграций с вашими источниками Roistat позволит создать дашборды за пару кликов, а сверху предложит автоматизацию маркетинга и лидогенерации. Конкуренты Roistat вроде &lt;b&gt;OWOX BI&lt;/b&gt; или &lt;b&gt;Alytics&lt;/b&gt; также предоставляют базовые возможности для аналитики и визуализации. В общем, недорогих решений под любые потребности много.&lt;/p&gt;
&lt;p&gt;Хотя “коробка” гораздо лучше бесконечных таблиц и поначалу хорошо оптимизирует работу с данными, она далеко не идеальна. С точки зрения эксперта все минусы универсальных решений видны как на ладони:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;не заглянешь под капот, если что-то идет не так;&lt;/li&gt;
&lt;li&gt;их система интеграций может не включать нужных источников;&lt;/li&gt;
&lt;li&gt;интеграции могут устаревать, создавая ошибки в выгрузке данных.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Кроме того, у вендоров таких готовых решений почти никогда нет ресурсов и возможностей, чтобы подогнать его под специфические требования каждого клиента. Более того, чаще такие “кастомные” требования многократно превосходят стоимость самой коробки (в этом суть готового решения). Если что-то не так на бэке у юзера, если меняется воронка в CRM, если нужно настроить кастомные интеграции — велики шансы, что за это придется доплатить немаленькие деньги, если вендор вообще согласится реализовать эти “специфичные требования”.&lt;/p&gt;
&lt;p&gt;На одном из наших проектов нам довелось поработать именно с такой ситуацией: Roistat не смог обеспечить точность данных и интеграций со всеми нужными источниками, и с этим пришлось разбираться самой компании — и нам.&lt;/p&gt;
&lt;h2&gt;Как Refocus работал с аналитикой&lt;/h2&gt;
&lt;p&gt;Один из наших заказчиков,  который строил аналитику на самых ранних этапах — EdTech-стартап Refocus. Неудивительно, что когда мы пришли создавать для них кастомную систему, они уже работали с Roistat.&lt;/p&gt;
&lt;p&gt;Почему Refocus выбрали именно его? Во-первых, он доступен на русском языке, и это было удобно для команды, в которой много русскоязычных сотрудников. Во-вторых, им нужна была именно система сквозной аналитики, а не CRM с функцией автоматического построения графиков, поэтому альтернативы вроде HubSpot не подходили. В-третьих, все базовые потребности компании он удовлетворял за относительно небольшую сумму. Ну и в-четвертых — многие сотрудники из команды Refocus уже имели опыт работы с Roistat, так что для них это был удобный и знакомый инструмент.&lt;/p&gt;
&lt;p&gt;Roistat тянул данные из двух основных рекламных кабинетов — &lt;b&gt;Google и Facebook&lt;/b&gt;*. В нем трекались все базовые метрики — бюджеты, показы, клики, конверсия — и отражались на автоматически созданных внутри программы дашбордах.&lt;/p&gt;
&lt;p&gt;&lt;img src=http://test.leftjoin.ru/pictures/unnamed-(2).png border=“0” width=100% height=100%&gt;&lt;/p&gt;
&lt;p&gt;К сожалению, скрины дашбордов из Roistat у нас не сохранились, но мы нашли для вас пример в интернете — выглядели они примерно так.&lt;/p&gt;
&lt;p&gt;Там даже присутствовал свой пользовательский идентификатор — когда мы вводили общий айди студентов, мы думали попробовать использовать его для мэтчинга персональных данных. На практике оказалось, что сопоставление по нему проходит очень неточно, и эту идею оставили.&lt;/p&gt;
&lt;p&gt;Стартап рос, число требований и людей увеличилось, поэтому нас позвали  строить для ребят кастомную аналитику и более подробные дашборды, и подключились мы.&lt;/p&gt;
&lt;h2&gt;Как обнаружилась проблема&lt;/h2&gt;
&lt;p&gt;Мы провели аудит существующей системы, получили доступы к нужным ресурсам и начали выстраивать инфраструктуру и готовить первый дашборд — маркетинговый, самый актуальный для компании на тот момент.&lt;/p&gt;
&lt;p&gt;Откуда мы тянули данные для этого дашборда? Конечно, из Roistat, ведь именно там уже лежали готовые маркетинговые показатели. Настройка хранилища и выгрузка данных из источников, которые Roistat не трекал, еще не была закончена, а смотреть на классные, качественные дашборды хотелось уже сейчас.&lt;/p&gt;
&lt;p&gt;Например, так выглядел код для выгрузки данных о затратах на рекламу через API:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;def get_costs(channel, channel_level, date_from, date_to, source):
         
     data = '{&amp;quot;dimensions&amp;quot;: [&amp;quot;marker_level_2&amp;quot;, &amp;quot;marker_level_3&amp;quot;, &amp;quot;marker_level_4&amp;quot;],\
     &amp;quot;metrics&amp;quot;:[&amp;quot;visitsCost&amp;quot;, &amp;quot;impressions&amp;quot;, &amp;quot;visits&amp;quot;],\
     &amp;quot;period&amp;quot;:{&amp;quot;from&amp;quot;:&amp;quot;' + date_from + '&amp;quot;,&amp;quot;to&amp;quot;:&amp;quot;' + date_to + '&amp;quot;},\
     &amp;quot;filters&amp;quot;:[{&amp;quot;field&amp;quot;:&amp;quot;' + channel_level + '&amp;quot;, &amp;quot;operation&amp;quot;:&amp;quot;=&amp;quot;, &amp;quot;value&amp;quot;:&amp;quot;' + channel + '&amp;quot;}],\
     &amp;quot;interval&amp;quot;: &amp;quot;1d&amp;quot;}'
     columns=['dimensions.marker_level_2.value',
             'dimensions.marker_level_2.title',
             'dimensions.marker_level_3.value',
             'dimensions.marker_level_3.title',
             'dimensions.marker_level_4.value',
             'dimensions.marker_level_4.title',
             'dateFrom'
             ]
     headers = {'content-type': 'application/json'}

     response = requests.request(&amp;quot;POST&amp;quot;, url, data=data, headers=headers)
     df = response.json()['data']

     l = []
     for i in range(len(df)):
         if df[i]['items'] != []:
             l.append(df[i])
     if len(l) &amp;gt; 0:
         res1 = pd.json_normalize(l, 'items', ['dateFrom'])[columns]
         res2 = pd.DataFrame()
         q = pd.json_normalize(l, ['items', 'metrics'])
         for x in [&amp;quot;visitsCost&amp;quot;, &amp;quot;impressions&amp;quot;, &amp;quot;visits&amp;quot;]:
             res2[x] = q.query('metric_name == @x')['value'].values
         res = pd.concat([res1, res2], axis=1)
         res['source'] = source
         return res
     else:
         return pd.DataFrame()&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Подробнее о &lt;tt&gt;marker_levels&lt;/tt&gt; можно прочитать &lt;a href="https://help-en.roistat.com/API/methods/analytics/#sample-report"&gt;здесь&lt;/a&gt; в документации API Roistat.&lt;/p&gt;
&lt;p&gt;Когда Refocus посмотрели на первую версию дашборда, они заметили, что цифры не сходятся с их реальными бюджетами, кликами, конверсией в рекламных кабинетах.&lt;/p&gt;
&lt;p&gt;Мы начали искать ошибку с нашей стороны, но убедились, что наш код работает исправно и данные в нашем дашборде один в один совпадают с цифрами в Roistat. Никаких сбоев между источником и дашбордом не происходило.&lt;/p&gt;
&lt;p&gt;Дело в том, что пока компания смотрела только на визуализации Roistat, расхождения в данных не бросались в глаза. А наш дашборд содержал несколько новых графиков, более подробных, чем мог предложить Roistat. Когда Refocus стали сравнивать детали по разным срезам, на которые Roistat не позволял посмотреть, расхождения стали очевидны.&lt;/p&gt;
&lt;p&gt;&lt;img src=http://test.leftjoin.ru/pictures/unnamed-(1).png border=“0” width=100% height=100%&gt;&lt;/p&gt;
&lt;p&gt;У нас дашборд был более гибкий — можно было отфильтровать данные по разным важным срезам, более тонко настроить гранулярность. И благодаря этому ошибки в метриках стали заметны.&lt;/p&gt;
&lt;p&gt;Об этом мы и сообщили коллегам, продемонстрировав совпадение. Как раз в этот момент сыграл роль недостаток закрытой системы — посмотреть внутрь Roistat и найти, где именно происходит ошибка, не могли ни мы, ни бэкенд-специалисты Refocus.&lt;/p&gt;
&lt;p&gt;Разумеется, кастомная система уже предполагала отключение этого источника в будущем — зачем платный посредник, если мы все равно будем грузить данные напрямую и из рекламных кабинетов, и из кучи других источников?&lt;/p&gt;
&lt;p&gt;После обнаружения ошибки стало ясно, что затягивать с этим не стоит, если мы хотим предоставить клиенту чистые данные.&lt;/p&gt;
&lt;p&gt;Полностью отказаться от Roistat сразу не получилось, поэтому мы добавили на дашборд фильтр &lt;tt&gt;“match with Roistat”.&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;На нем мы отмечали количество рекламных кампаний, данные по которым расходятся с показателями на нашем дашборде и на Roistat’овском.&lt;/p&gt;
&lt;h2&gt;Как мы наконец заменили Roistat на кастомную систему и уточнили данные о воронках&lt;/h2&gt;
&lt;p&gt;Мы сразу написали несколько скриптов для выгрузки тех же самых данных из GA4 и Facebook Ads* через API.&lt;br /&gt;
Например, так данные о рекламных показах, затратах и кликах  за день в разрезе {campaign, adset, adname} выгружались из кабинета GA4:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;def get_google_costs(date_start, customer_id):

    request = RunReportRequest(
        property = f&amp;quot;properties/{property_id}&amp;quot;,
        dimensions = [Dimension(name = &amp;quot;date&amp;quot;),
                     Dimension(name = &amp;quot;sessionGoogleAdsCustomerId&amp;quot;),
                     Dimension(name = &amp;quot;sessionGoogleAdsCampaignId&amp;quot;),
                     Dimension(name = &amp;quot;sessionGoogleAdsCampaignName&amp;quot;),
                     Dimension(name = &amp;quot;sessionGoogleAdsAdGroupId&amp;quot;),
                     Dimension(name = &amp;quot;sessionGoogleAdsAdGroupName&amp;quot;),
                     Dimension(name = &amp;quot;sessionGoogleAdsCreativeId&amp;quot;)],
        metrics = [Metric(name=&amp;quot;advertiserAdCost&amp;quot;),
                   Metric(name=&amp;quot;advertiserAdImpressions&amp;quot;),
                   Metric(name='advertiserAdClicks')],
        date_ranges = [DateRange(start_date = date_start, end_date = date_start)],
        dimension_filter = FilterExpression(
            filter = Filter(
                field_name = &amp;quot;sessionGoogleAdsCustomerId&amp;quot;,
                string_filter = Filter.StringFilter(value = customer_id),
            )
        ),
    )
    response = client.run_report(request)

    date = map(lambda x: x.dimension_values[0].value, response.rows)
    customer_id = map(lambda x: int(x.dimension_values[1].value), response.rows)
    campname_id = map(lambda x: int(x.dimension_values[2].value), response.rows)
    campname = map(lambda x: x.dimension_values[3].value, response.rows)
    groupname_id = map(lambda x: int(x.dimension_values[4].value), response.rows)
    groupname = map(lambda x: x.dimension_values[5].value, response.rows)
    adnam_id = map(lambda x: int(x.dimension_values[6].value), response.rows)
    visitsCost = map(lambda x: float(x.metric_values[0].value), response.rows)
    impressions = map(lambda x: int(x.metric_values[1].value), response.rows)
    visits = map(lambda x: int(x.metric_values[2].value), response.rows)

    df = pd.DataFrame({'region': customer_id, 'date': date, 'campname': campname, 'groupname': groupname, 'campname_id': campname_id, 'groupname_id': groupname_id, 'adnam_id': adnam_id, 'visitsCost': visitsCost, 'impressions': impressions, 'visits': visits})
    return df

df = pd.DataFrame()&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;После этого обнаружилось еще одно несовпадение: метрики в самом кабинете были чуть меньше, чем у нас на дашбордах. Отклонение не было критичным, но клиент снова не был уверен в точности наших данных.&lt;/p&gt;
&lt;p&gt;Оказалось, что в GA4 по умолчанию включается настройка &lt;b&gt;Thresholding applied.&lt;/b&gt; Ее цель — предотвратить возможную идентификацию отдельных пользователей по данным о возрасте, гендере и интересах. В результате ее применения терялись данные о кампаниях с небольшим (меньше 50) количеством кликов. Чтобы этого избежать, нужно было или не трекать эти показатели, или не использовать в дашбордах метрики, касающиеся пользователей напрямую. Roistat тоже не выгружал эти “пограничные” кампании через свою дефолтную интеграцию с GA4, поэтому для Refocus расхождение стало неожиданностью. Зато при прямой выгрузке через API этого ограничения не было, и ускользнувшие поначалу кампании считались, так что данные были более полными без дополнительных ухищрений.&lt;/p&gt;
&lt;p&gt;С добавлением все новых и новых источников, конечно, пришлось еще и мэтчить данные рекламных кабинетов о затратах, кликах и показах с записями на вебинары и их посещением, со сделками в CRM — но Roistat этого вовсе не делал, и поэтому не мог дать полной картины о воронках.&lt;/p&gt;
&lt;p&gt;После введения прямой выгрузки из рекламных кабинетов данные наконец-то стали полностью совпадать с реальностью, и Roistat отключили, заменив другими источниками. Теперь Refocus могли не платить дважды и получить куда более точный анализ.&lt;/p&gt;
&lt;h2&gt;Выводы&lt;/h2&gt;
&lt;p&gt;Кастомная сквозная аналитика — конечно, не панацея, и есть много причин и возможностей обойтись без услуг агентств, которые ее строят. Тем не менее, даже самое популярное на рынке коробочное решение, очевидно, не всегда корректно работает. Обрубать его сразу не обязательно, и ничего не мешает сочетать Roistat и похожие продукты с кастомом. В конце концов, иногда удобно просто достроить интеграции, которые не поддерживает Roistat, и держать дашборды в нем. Но в этом случае важно понимать, что данные там могут быть неполными или некорректными, а сообщение с бэком компании — ненадежным. В результате обнаружить или исправить ошибки может быть сложнее, чем организовать прямую выгрузку данных в хранилище — и здесь кастомная система отлично справится.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;*Facebook принадлежит компании Meta, которая признана экстремистской организацией в России.&lt;/i&gt;&lt;/p&gt;
</description>
<pubDate>Wed, 02 Oct 2024 15:25:45 +0300</pubDate>
</item>

<item>
<title>Как переверстка помогает превратить хороший дашборд в отличный</title>
<guid isPermaLink="false">147</guid>
<link>http://test.leftjoin.ru/all/kak-pereverstka-pomogaet-prevratit-horoshiy-dashbord-v-otlichny/</link>
<comments>http://test.leftjoin.ru/all/kak-pereverstka-pomogaet-prevratit-horoshiy-dashbord-v-otlichny/</comments>
<description>
&lt;p&gt;&lt;img src=http://test.leftjoin.ru/pictures/0oblogka.png  border=“0” width=100% height=100%&gt;&lt;/p&gt;
&lt;p&gt;В кастомных системах сквозной аналитики конечный продукт, с которым взаимодействует пользователь — дашборды. Он не видит хранилище, витрины данных, скрипты, а дашборды видит каждый день, поэтому важно сделать их не только функциональными, но и понятными. Не всегда удается сразу нащупать оптимальный вариант, и полезно вести работу поэтапно.&lt;/p&gt;
&lt;p&gt;Дело в том, что в современных BI-тулах, которые мы используем — в частности, в популярном Tableau — возможности кастомизации гораздо шире, чем может себе представить сотрудник, мигрирующий с excel-таблиц. Часто пользователь просто не знает, каким вообще может быть дашборд и как составить ТЗ.&lt;/p&gt;
&lt;p&gt;В итоге дашборд содержит огромное количество данных, но возможность их продуктивно использовать спрятана за фильтрами, визуальной сложностью, долгой загрузкой.&lt;/p&gt;
&lt;p&gt;Именно такая ситуация сложилась у нас в процессе работы с образовательным стартапом Refocus.&lt;/p&gt;
&lt;p&gt;Один из главных их дашбордов — обзор &lt;b&gt;SLA (Service Level Agreement).&lt;/b&gt; Его пользователи — руководители отдела продаж и сейлз-менеджеры. Именно здесь их интересует прежде всего скорость обработки входящих лидов в зависимости от ряда факторов, от источника лида до региона.&lt;/p&gt;
&lt;p&gt;Нормативное значение этого показателя для Refocus — 15 минут, значит, там, где он выше, есть потенциал для оптимизации процессов и роста выручки.&lt;/p&gt;
&lt;p&gt;Мы работаем над дашбордами &lt;b&gt;итеративно:&lt;/b&gt; интервью с пользователем — прототип — фидбэк — следующая версия — фидбэк, и так далее. Но в случае с SLA после утверждения финальной версии остались нерешенные аналитиками функциональные проблемы.&lt;/p&gt;
&lt;p&gt;У заказчика было желание оптимизировать дашборды и бюджет на это, так что мы предложили общую переверстку и подключили к проекту датавиз-эксперта.&lt;/p&gt;
&lt;h2&gt;Версия 1: с чем мы работаем&lt;/h2&gt;
&lt;p&gt;Первая версия SLA-дашборда, которой некоторое время пользовался клиент, выглядела так:&lt;/p&gt;
&lt;p&gt;&lt;img src=http://test.leftjoin.ru/pictures/1-32.png  border=“0” width=100% height=100%&gt;&lt;/p&gt;
&lt;p&gt;В фокусе три графика:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Скаттерплот по &lt;b&gt;времени ответа&lt;/b&gt; с момента получения лида.&lt;/li&gt;
&lt;li&gt;Гистограмма по &lt;b&gt;медианному времени ответа.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;Гистограмма по &lt;b&gt;средней длительности первого звонка&lt;/b&gt; с лидом.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Справа — 15 фильтров, от региона и гранулярности до имени сотрудника, работавшего с лидом.&lt;/p&gt;
&lt;p&gt;Сверху — много текста, поясняющего тонкости работы с фильтрами по времени.&lt;/p&gt;
&lt;h2&gt;Задача&lt;/h2&gt;
&lt;p&gt;Представьте, что ваш технический бэкграунд испарился, и вы на месте пользователя: о чем вам говорят эти графики? Сколько кликов вам нужно совершить, чтобы оценить перформанс подчиненных в вашем отделе? Чтобы сравнить SLA для лидов из разных источников? Ясен ли текст-легенда?&lt;/p&gt;
&lt;p&gt;А главное — есть ли у вас понимание, как сделать понятнее и что сказать исполнителю проекта?&lt;/p&gt;
&lt;p&gt;У аналитиков в этой области может быть слепая зона — нам-то на картине выше все понятно. А в прямые задачи датавиз-спеца входит проинтерпретировать запрос пользователя в контексте существующего функционала и создать визуализацию на стыке предпочтений заказчика и здравого смысла.&lt;/p&gt;
&lt;p&gt;Важно определить и причины этих проблем. Иногда ошибки — просто неудачная попытка выполнить запрос заказчика. Конечно, всегда можно отмести «плохой» запрос и сделать, как правильно — но тогда можно потерять важные для заказчика функции.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Проблемы этого дашборда:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Основной график — скаттерплот с SLA для всех лидов — выстроен на логарифмической шкале по оси Y без возможности переключиться на линейную. Есть сомнения, что все сейлз-менеджеры, глядя на дашборд, понимают, как работает логарифмическая шкала.&lt;/li&gt;
&lt;li&gt;При выборе гранулярности по неделям масштаб позволяет показать распределение точек на оси X по дням — но они распределены случайно с помощью функции RANDOM().&lt;/li&gt;
&lt;li&gt;Ось Y не синхронизирована между графиками, поэтому сложно оценить связь всех трех значений.&lt;/li&gt;
&lt;li&gt;Невозможно сравнить медианный SLA по следующим параметрам: курс, источник лида, команда, сейлз-менеджер — все они расположены в фильтрах. Сравнение требует скриншотов разных отображений или нескольких вкладок с одним дашбордом.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Установленные причины:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Логарифмическая шкала: заказчик, который являлся только одним из юзеров дашборда, попросил реализовать логарифмическую шкалу, чтобы смотреть на значения SLA, близкие к нулю. Видимо, это было релевантно для целей именно его отдела.&lt;/li&gt;
&lt;li&gt;Рандомное распределение по оси X: попытка сделать график проще и красивее, потому что скаттерплот уже перегружен информацией, и оценить распределение значений внутри недели — не приоритет.&lt;/li&gt;
&lt;li&gt;Неэффективные фильтры: до ввода дашборда заказчик не знал, какие именно сравнения окажутся ему полезны.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Итог — невозможно оценить общую картину SLA в компании в отдельно взятый период, а значит и корректировать процессы и стратегии продаж.&lt;/p&gt;
&lt;h2&gt;Решение&lt;/h2&gt;
&lt;p&gt;Наш датавиз-специалист рисовал макеты карандашом на бумаге, а после утверждения переносил в Tableau: аналитический функционал и UX-дизайн для готового дашборда можно оптимизировать и без специальных тулов. Здесь хорошо ориентироваться на заказчика: если ему приятнее смотреть на файл в Figma — замечательно. Все понятно и на бумаге — отлично.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Предложенные изменения:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Фильтры справа сделать бар-чартами вместо выпадающих меню, чтобы разбивку по категориям было сразу видно.&lt;/li&gt;
&lt;li&gt;Реорганизовать дашборд в соответствии с принципами дизайна, учитывающими движение глаз человека слева-направо, сверху-вниз.&lt;/li&gt;
&lt;li&gt;Добавить линейную ось на скаттерплот, сделать именно ее форматом по умолчанию. Оставить возможность переключиться на логарифмическую ось.&lt;/li&gt;
&lt;li&gt;Нормализовать шкалу X, убрав рандомное распределение точек.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Версия 2: рабочая версия после переверстки&lt;/h2&gt;
&lt;p&gt;&lt;img src=http://test.leftjoin.ru/pictures/2-31.png  border=“0” width=100% height=100%&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Что поменялось:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;В левой части дашборда появилась таблица-фильтр по командам и сейлз-менеджерам. По ней можно оценить показатели работы отдельных сотрудников и отделов и получить общее представление о том, как обстоят дела с SLA в компании — а именно это изначальное назначение дашборда.&lt;/li&gt;
&lt;li&gt;В центральной части дашборда остался скаттерплот с SLA по всем лидам, только теперь формат отображения оси (линейная или логарифмическая) можно переключить.&lt;/li&gt;
&lt;li&gt;Фильтры курсов, источников лидов и категорий превратились в кликабельные бар-чарты в правой части экрана. Они позволяют сразу визуально оценить медианный SLA по этим параметрам.&lt;/li&gt;
&lt;li&gt;Все глобальные фильтры по категориям, которые нет необходимости сравнивать между собой, оказались в верхней части дашборда, там же — фильтр по дате. Теперь пространство экрана организовано эффективнее.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Фидбэк:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Потерялся график по средней длительности первого звонка.&lt;/li&gt;
&lt;li&gt;На центральном графике исчезли отсечки с медианным SLA.&lt;/li&gt;
&lt;li&gt;Не подписаны столбцы в таблице слева.&lt;/li&gt;
&lt;li&gt;Центральный скаттерплот очень долго загружается при первом открытии дашборда, так как Tableau пытается вывести все лиды из датасета — по умолчанию ни один фильтр не применяется и никак не ограничивает количество информации для отображения.&lt;/li&gt;
&lt;li&gt;Необходимы мелкие правки по оформлению и тултипам.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Версия 3: доработки и брендирование&lt;/h2&gt;
&lt;p&gt;&lt;img src=http://test.leftjoin.ru/pictures/3-27.png  border=“0” width=100% height=100%&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Что поменялось:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;В таблице слева появились подписи столбцов — теперь половина информации о работе отделов понятна при первом взгляде на дашборд.&lt;/li&gt;
&lt;li&gt;Центральный скаттерплот теперь отображается только после выбора фильтра по команде или конкретному сейлзу — это снижает нагрузку на хранилище и сильно ускоряет загрузку графика.&lt;/li&gt;
&lt;li&gt;Добавились отсечки с медианным SLA за конкретный период (месяц, неделю или день в зависимости от выбранной гранулярности).&lt;/li&gt;
&lt;li&gt;Вернулся график с длительностью первого звонка.&lt;/li&gt;
&lt;li&gt;Ось времени всех трех графиков теперь синхронизирована — не нужно сверять единицы измерения, чтобы выявить общие тренды.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Когда функционал доработан и утвержден, вводится &lt;b&gt;брендирование&lt;/b&gt; по корпоративным гайдлайнам. Они у Refocus выглядели так:&lt;/p&gt;
&lt;p&gt;&lt;img src=http://test.leftjoin.ru/pictures/image-1.png  border=“0” width=100% height=100%&gt;&lt;/p&gt;
&lt;h2&gt;Обзор функционала&lt;/h2&gt;
&lt;p&gt;Итоговый дашборд стал гораздо проще в использовании и настройке, а функционал стал интуитивно понятен.&lt;/p&gt;
&lt;p&gt;Так выглядит финальный дашборд при открытии, пока не выбран ни один фильтр:&lt;/p&gt;
&lt;p&gt;&lt;img src=http://test.leftjoin.ru/pictures/final.png  border=“0” width=100% height=100%&gt;&lt;/p&gt;
&lt;p&gt;А так, если выбрать сейлз-менеджера из таблицы слева:&lt;/p&gt;
&lt;p&gt;&lt;img src=http://test.leftjoin.ru/pictures/leads.png  border=“0” width=100% height=100%&gt;&lt;/p&gt;
&lt;p&gt;Использование фильтров справа (например, отобразить только лидов, пришедших с вебинаров):&lt;/p&gt;
&lt;p&gt;&lt;img src=http://test.leftjoin.ru/pictures/web.png  border=“0” width=100% height=100%&gt;&lt;/p&gt;
&lt;p&gt;Тултипы со ссылкой на первоисточник на скаттерплоте с лидами (время в них отображается в минутах при выборе любой шкалы):&lt;/p&gt;
&lt;p&gt;&lt;img src=http://test.leftjoin.ru/pictures/tip.png  border=“0” width=100% height=100%&gt;&lt;/p&gt;
&lt;p&gt;Наконец, переключение между линейной и логарифмической шкалами:&lt;/p&gt;
&lt;p&gt;&lt;img src=http://test.leftjoin.ru/pictures/log.png.jpg  border=“0” width=100% height=100%&gt;&lt;/p&gt;
&lt;p&gt;Этот кейс отлично демонстрирует важность чуткой работы с заказчиком. Всегда важен баланс между экспертностью и ориентацией на пользователя. Конечно, стоит показывать ему разные возможности и предлагать оптимальные с технической точки зрения решения. Но не менее важно доверять клиенту и разбираться в причинах его запросов, чтобы сделать по-настоящему полезно и красиво. Скажем, вдруг он просит логарифмическую шкалу не потому, что не подумал о других, а потому, что без нее в его отделе не обойтись? Внимание к таким моментам — огромный плюс к компетенциям аналитика.&lt;/p&gt;
</description>
<pubDate>Wed, 04 Sep 2024 15:44:06 +0300</pubDate>
</item>

<item>
<title>Дашборд первых 8 месяцев жизни малыша</title>
<guid isPermaLink="false">117</guid>
<link>http://test.leftjoin.ru/all/dashboard-newborn/</link>
<comments>http://test.leftjoin.ru/all/dashboard-newborn/</comments>
<description>
&lt;p&gt;&lt;a href="http://test.leftjoin.ru/tableau/newborn.html" style="text-decoration:none; border:0"&gt;&lt;img src="http://test.leftjoin.ru/pictures/newborn.png-2.jpg" border="0" width="100%" height="150%"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;В декабре прошлого года я стал папой, а это значит, что наша семейная жизнь с супругой колоссально изменилась. Разумеется, я делюсь с вами этой новостью не просто так, а в контексте тех данных, которые сегодня будем изучать и исследовать. Они для меня очень личные, а потому имеют какую-то особую магию и ценность. Сегодня я хочу показать как круто меняется жизнь семьи на примере собственного анализа данных жизни первых 8 месяцев малыша.&lt;/p&gt;
&lt;h2&gt;Сбор данных&lt;/h2&gt;
&lt;p&gt;Исходные данные: трекинг основных элементов заботы о малыше в первые 8 месяцев: сон, кормление, смена подгузника. Данные были собраны с помощью &lt;a href="https://nighp.com/babytracker/"&gt;приложения BabyTracker&lt;/a&gt;.&lt;br /&gt;
Моя жена — большая молодец, потому что в течение первых 7 месяцев она очень тщательно и исправно отслеживала все важные моменты. Она забыла отключить время кормления малыша ночью всего пару раз, но я достаточно быстро увидел в данных заметные выбросы, и датасет был от них очищен.&lt;br /&gt;
Изначально у меня в голове было несколько форматов визуализации данных, и я попробовал их сразу же внедрить в проектируемый дашборд. Мне хотелось показать интервалы сна малыша в виде вертикальной диаграммы Гантта, однако ночной сон переходил через сутки (0:00), и было совершенно непонятно как это можно исправить в Tableau. После ряда самостоятельных безуспешных попыток найти решение этой проблемы, я решил посоветоваться с &lt;a href="https://t.me/revealthedata"&gt;Ромой Буниным&lt;/a&gt;. К сожалению, мы вместе пришли к заключению, что это никак не решить. Тогда пришлось написать небольшой код на Python, который дробил такие временные отрезки и добавлял новые строки в датасет.&lt;br /&gt;
Однако, пока мы переписывались, Рома прислал идентичный моей идее пример! В этом примере утверждается, что женщина собирала данные о сне и бодрствовании своего ребенка в первый год его жизни, а затем написала код, с помощью которого получилось вышить &lt;a href="https://youtu.be/2R3dXARPH10?t=1723"&gt;полотенце с датавизом паттернов сна малыша&lt;/a&gt;. Для меня это оказалось удивительным, так как выяснилось, что подобный способ визуализации — основной метод, который позволяет показать, как непроста жизнь и сон родителей в первые месяцы появления ребенка.&lt;br /&gt;
В моем &lt;a href="http://test.leftjoin.ru/tableau/newborn.html"&gt;дашборде на Tableau Public&lt;/a&gt; получилось три смысловых блока и несколько “KPI”, про которые я хотел бы рассказать детально и поделиться основными житейскими мудростями. В верхней части дашборда можно увидеть ключевые средние показатели часов дневного и ночного сна, часов и частоты кормлений малыша, а также число смен подгузника в первые три месяца. Я выделил именно три месяца, поскольку я считаю это самым непростым периодом, ведь в вашей жизни происходят существенные изменения, к которым нужно адаптироваться.&lt;/p&gt;
&lt;h2&gt;Сон&lt;/h2&gt;
&lt;p&gt;Левая диаграмма — “Полотенце” — иллюстрирует сон малыша. На этой диаграмме важно обратить внимание на белые пропуски, особенно ночью. Это те часы, когда малыш бодрствует, а это значит бодрствуют и родители. Посмотрите, как меняется диаграмма, особенно в первые месяцы, когда мы отказывались от привычки ложиться спать в 1-2 часа ночи и засыпали пораньше. Грубо говоря, в первые три месяца (до марта 2021) ребенок мог заснуть в 2 или 3 часа ночи, но нам повезло, что ночной сон нашего ребенка оказался довольно длинным.&lt;br /&gt;
Правый график наглядно иллюстрирует как меняется длина сна малыша ночью и днем со временем, а боксплоты под ним показывают распределение часов дневного и ночного сна. График подтверждает вывод: “Это временно и скоро точно станет лучше!”&lt;/p&gt;
&lt;h2&gt;Кормление&lt;/h2&gt;
&lt;p&gt;Из левой диаграммы заметно, как изменяется количество и продолжительность кормлений. Это число постепенно уменьшается, а продолжительность кормлений сокращается. С середины июля мы изменили способ учета времени кормлений, поэтому в данном анализе они не валидны.&lt;br /&gt;
С моей точки зрения, полученные выводы — это прекрасная возможность для пар, планирующих беременность,  не строить иллюзий о возможности работать или заниматься какими-либо делами в первые месяцы после родов. Обратите внимание на частоту и продолжительность кормлений, все это время родитель всецело занят ребенком. Однако, не пугайтесь слишком сильно: со временем количество кормлений уменьшается.&lt;/p&gt;
&lt;h2&gt;Смена подгузника&lt;/h2&gt;
&lt;p&gt;Левая карта — это изюминка данного дашборда. Как вы понимаете, перед вами карта самых веселых моментов — смены подгузника. Звездочки — это моменты дня, когда нужно поменять подгузник, а светло-серым цветом снизу показано количество смен в сутки. Правый график показывает смены подгузников в разбивке по части дня. В целом, диаграмма не показывает каких-то интересных зависимостей, однако, она готовит к вам тому, что этот процесс, частый, регулярный и случается в любое время суток.&lt;/p&gt;
&lt;h2&gt;Выводы&lt;/h2&gt;
&lt;p&gt;Мне кажется, что использование настоящих личных данных и подобная визуализация иногда куда показательнее, чем множество видео или прочитанных книг о том, каким будет этот период. Именно поэтому я решил поделиться здесь своими выводами и наблюдениями с вами. Главный вывод, который я хотел, чтобы вы вынесли из датавиза: дети — это прекрасно! ❤️&lt;/p&gt;
</description>
<pubDate>Tue, 14 Sep 2021 13:15:59 +0300</pubDate>
</item>

<item>
<title>Деплой дашборда на виртуальной машине Amazon EC2</title>
<guid isPermaLink="false">107</guid>
<link>http://test.leftjoin.ru/all/deploy-dashboard-ec2/</link>
<comments>http://test.leftjoin.ru/all/deploy-dashboard-ec2/</comments>
<description>
&lt;p&gt;Мы уже рассказывали о том, как развернуть дашборд с помощью сервиса Elastic Beanstalk от Amazon Web Services. В этом материале расскажем как развертывать дашборды на виртуальной машине Amazon EC2.&lt;/p&gt;
&lt;h2&gt;Подготовка&lt;/h2&gt;
&lt;p&gt;Начало работы с платформой AWS и создание сервера мы описали в материале &lt;a href="http://test.leftjoin.ru/all/stavim-clickhouse-na-aws/"&gt;Устанавливаем Clickhouse на AWS&lt;/a&gt;. Проект дашборда был подготовлен в предыдущей заметке &lt;a href="http://test.leftjoin.ru/all/dashboard-python-2/"&gt;Деплой дашборда на AWS Elastic Beanstalk&lt;/a&gt;. Все файлы можно скачать из нашего репозитория на &lt;a href="https://github.com/valiotti/leftjoin/tree/master/dashboard_deployment"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Работа с терминалом&lt;/h2&gt;
&lt;p&gt;Подключитесь к вашему серверу на EC2 через терминал, используя SSH-ключ.&lt;br /&gt;
Из домашней директории копируем архив с необходимыми файлами на сервер командой scp:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;scp -i /home/user/.ssh/ssh_key.pem /home/user/brewery_dashboard.zip ubuntu@api.sample.ru:/home/ubuntu/&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Распаковываем архив с помощью команды &lt;span class="inline-code"&gt;unzip&lt;/span&gt;, указав директорию:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;unzip -d /home/ubuntu/brewery_dashboard brewery_dashboard.zip&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;После этого в каталоге появится папка &lt;span class="inline-code"&gt;/brewery_dashboard/&lt;/span&gt;, в которой среди прочих будет текстовый файл &lt;span class="inline-code"&gt;requirements.txt&lt;/span&gt;. В нем находятся все библиотеки Python, которые нужны для корректной работы дашборда. Устанавливаем их следующей командой:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;pip install -r requirements.txt&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Запускаем дашборд&lt;/h2&gt;
&lt;p&gt;Создаем сервисный файл &lt;span class="inline-code"&gt;brewery.service&lt;/span&gt; в системной папке &lt;span class="inline-code"&gt;/etc/systemd/system&lt;/span&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;sudo touch brewery.service&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В нем прописываем всю необходимую информацию для деплоя нашего дашборда. Текстовый редактор вызывается следующей командой:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;sudo nano brewery.service&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;В WorkingDirectory указываем папку, в которой находятся файлы проекта, а в ExecStart команду для запуска:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;[Unit]
Description=Brewery Dashboard
After=network.target

[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/brewery_dashboard/
ExecStart=/usr/bin/gunicorn3 --workers 3 --bind 0.0.0.0:8083 application:application&lt;/code&gt;&lt;/pre&gt;&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/--2021-04-29--14.21.41.png" width="669" height="130" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Запускаем &lt;span class="inline-code"&gt;brewery.service&lt;/span&gt; следующей командой:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;sudo systemctl start brewery.service&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;И проверяем успешность запуска:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;sudo systemctl status brewery.service&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Система должна ответить, что все хорошо:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/--2021-04-29--14.24.57.png" width="991" height="257" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Теперь дашборд доступен по публичному адресу сервера с указанием порта . Можно открыть его в браузере или вставить на любой сайт с помощью тега &amp;lt;iframe&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code&gt;&amp;lt;ifrаme id='igraph' scrolling='no' style='border:none;'seamless='seamless' src='http://54.227.137.142:8083/' height='1100' width='800'&amp;gt;&amp;lt;/ifrаme&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
<pubDate>Fri, 30 Apr 2021 14:33:38 +0300</pubDate>
</item>

<item>
<title>Теннисные мячики из статистики Swing Vision на графике в Tableau</title>
<guid isPermaLink="false">67</guid>
<link>http://test.leftjoin.ru/all/tableau-swing-vision/</link>
<comments>http://test.leftjoin.ru/all/tableau-swing-vision/</comments>
<description>
&lt;p&gt;Я увлекаюсь теннисом и недавно обнаружил относительно свежее приложение, помогающее теннисистам понять качество своей игры — &lt;a href="https://swing.tennis"&gt;Swing Vision&lt;/a&gt;. Приложение чудесное: в реальном времени распознает удары ракеткой по мячу и отображает координаты каждого удара. Автор приложения — профессор UC Berkeley, &lt;a href="http://www.swupnil.com"&gt;Swupnil Sahai&lt;/a&gt;, недавно я написал ему на почту и поблагодарил за такую полезную вещь.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/1@2x.jpg" width="562.5" height="619.5" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Так выглядит статистика в приложении&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Приложение позволяет посмотреть свои «ралли» и конкретные удары, понять среднюю скорость удара и узнать процент ошибок. Помимо этого в приложении есть возможность экспорта статистики о собственных ударах в формате xls-файла.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/2@2x-1.png" width="1128" height="849" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Так выглядит xls-файл&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;В этом видео я расскажу, как визуализировать данные из приложения в Tableau и получить красивую статистику собственных ударов.&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe src="https://www.youtube.com/embed/7qSWj35kHRk" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Краткое резюме:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Подготавливаем &lt;a href="http://test.leftjoin.ru/pictures/court_image.png"&gt;изображение теннисного корта&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Импортируем данные из &lt;a href="http://test.leftjoin.ru/files/swingvision.xls"&gt;xls-файла&lt;/a&gt; в Tableau.&lt;/li&gt;
&lt;li&gt;Создаём новые Calculated Fields, в которых преобразуем вертикально и горизонтально координаты удара.&lt;/li&gt;
&lt;li&gt;Для всех мячей, попавших в сетку, ставим конкретную координату по Y = -11,89.&lt;/li&gt;
&lt;li&gt;Фильтруем, добавляем цвета и размечаем данные на графике:  &lt;br /&gt;
a. Работаем с фоновым изображением  &lt;br /&gt;
b. Считаем ratio корта на изображении к корту в метрах. К примеру, в моём случае ширина 913px, а ширина корта — 10,97 метров. Значит, соотношение — 83,2270  &lt;br /&gt;
c. Считаем отступы, которые нужно сделать от 0 коориднат  &lt;br /&gt;
d. Аналогичные действия проделываем с Y-координатами  &lt;br /&gt;
e. Добавляем фоновое изображение и устанавливаем его свойства&lt;/li&gt;
&lt;li&gt;Находим векторную иконку тенисного мяча.&lt;/li&gt;
&lt;li&gt;Кладём иконку в папку Shapes репозитория Tableau.&lt;/li&gt;
&lt;li&gt;Меняем иконку в меню Shapes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;В результате получаем:&lt;/p&gt;
&lt;div class='tableauPlaceholder' id='viz1602497747053' style='position: relative'&gt;&lt;p&gt;&lt;noscript&gt;&lt;a href='#'&gt;&lt;img alt=' ' src='https:&amp;#47;&amp;#47;public.tableau.com&amp;#47;static&amp;#47;images&amp;#47;Sw&amp;#47;SwingVisionstatistics&amp;#47;Swing&amp;#47;1_rss.png' style='border: none' /&gt;&lt;/a&gt;&lt;/noscript&gt;&lt;/p&gt;
&lt;object class='tableauViz'  style='display:none;'&gt;&lt;param name='host_url' value='https%3A%2F%2Fpublic.tableau.com%2F' /&gt; &lt;param name='embed_code_version' value='3' /&gt; &lt;param name='site_root' value='' /&gt;&lt;param name='name' value='SwingVisionstatistics&amp;#47;Swing' /&gt;&lt;param name='tabs' value='no' /&gt;&lt;param name='toolbar' value='yes' /&gt;&lt;param name='static_image' value='https:&amp;#47;&amp;#47;public.tableau.com&amp;#47;static&amp;#47;images&amp;#47;Sw&amp;#47;SwingVisionstatistics&amp;#47;Swing&amp;#47;1.png' /&gt; &lt;param name='animate_transition' value='yes' /&gt;&lt;param name='display_static_image' value='yes' /&gt;&lt;param name='display_spinner' value='yes' /&gt;&lt;param name='display_overlay' value='yes' /&gt;&lt;param name='display_count' value='yes' /&gt;&lt;param name='language' value='en' /&gt;&lt;/object&gt;
&lt;/div&gt;&lt;script type='text/javascript'&gt;                    var divElement = document.getElementById('viz1602497747053');                    var vizElement = divElement.getElementsByTagName('object')[0];                    if ( divElement.offsetWidth &gt; 800 ) { vizElement.style.width='1000px';vizElement.style.height='827px';} else if ( divElement.offsetWidth &gt; 500 ) { vizElement.style.width='1000px';vizElement.style.height='827px';} else { vizElement.style.width='100%';vizElement.style.height='727px';}                     var scriptElement = document.createElement('script');                    scriptElement.src = 'https://public.tableau.com/javascripts/api/viz_v1.js';                    vizElement.parentNode.insertBefore(scriptElement, vizElement);&lt;/script&gt;
</description>
<pubDate>Wed, 14 Oct 2020 12:50:28 +0300</pubDate>
</item>

<item>
<title>Дашборды умерли</title>
<guid isPermaLink="false">58</guid>
<link>http://test.leftjoin.ru/all/dashbords-are-dead/</link>
<comments>http://test.leftjoin.ru/all/dashbords-are-dead/</comments>
<description>
&lt;p&gt;&lt;i&gt;Перевод статьи &lt;a href="https://towardsdatascience.com/dashboards-are-dead-b9f12eeb2ad2" class="nu"&gt;«&lt;u&gt;Dashboards are Dead&lt;/u&gt;»&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Дашборды были главным оружием распространения данных в течение последних нескольких десятилетий, но мир не стоит на месте. Чтобы восприятие данных стало доступнее, нам следует переосмыслить текущие инструменты, а ответ может оказаться ближе, чем нам кажется.&lt;/p&gt;
&lt;h2&gt;Hello Dashboard, my old friend&lt;/h2&gt;
&lt;p&gt;На старте карьеры я работала в крупной технологической компании. Компания только-только приобрела свой первый инструмент для создания дашбордов, и наша команда отвечала за захватывающий переход от устаревших spreadsheets и отчетов SSRS к новым ярким дашбордам.&lt;/p&gt;
&lt;p&gt;Переход от spreadsheets к дашбордам стал значительным шагом в нашем росте как аналитиков. Продуманный дизайн и интерактивность дашбордов резко снизили «стоимость доступа» к данным. Представьте, вы прогуливаетесь по офису и видите сотрудников любой должности и любого опыта, которые возятся с дашбордами. Это рай для любителей данных, правда?&lt;/p&gt;
&lt;p&gt;Не совсем. Вскоре мы обнаружили, что дашборды приносят с собой ряд новых проблем:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Как? У вас ещё нет дашборда?! Неожиданно повсюду появились дашборды. Инженеру нужны данные для специального анализа? Вот дашборд. У вице-президента будет презентация на следующей неделе и ему нужны диаграммы? Она получает дашборд. А что происходит дальше? О нём просто забывают. Такой шаблонный подход истощал время, ресурсы и мотивацию нашей команды. Это уникальное деморализующее чувство — наблюдать, как ещё один из ваших дашбордов забросили быстрее, чем профиль MySpace в 2008 году.&lt;/li&gt;
&lt;li&gt;Смерть от 1000 фильтров. После того, как новый дашборд заработал, нас сразу же заваливали запросами на новые представления, фильтры, поля, страницы (напомните мне рассказать вам о том, как я увидела 67-страничный дашборд). Было ясно: дашборды не отвечали на все вопросы, что было либо неудачей на этапе разработки, либо неспособностью инструментов дать ответы, в которых нуждались люди. Что ещё хуже, мы выяснили, что люди использовали все эти фильтры, чтобы экспортировать данные в Excel и уже там работать с ними 🤦‍♀️&lt;/li&gt;
&lt;li&gt;Не мой дашборд. Постепенно шумиха вокруг дашбордов начала сходить на нет, люди начали пренебрегать ими и откровенно игнорировать их. Многие видели в них угрозу для своей работы, и если они встречали неожиданные цифры, то списывали всё на «плохие данные». У нас на работе были серьёзные проблемы с доверием между людьми, и дашборды только усугубляли положение. В конце концов, мы ведь не могли отправлять другим наши SQL-запросы для получения данных: люди бы просто не смогли не только прочитать их, но даже понять ту сложную схему, по которой они работают. И тем более мы не могли отправлять другим командам необработанные данные. Итак, у нас была просто огромная, наболевшая, серьезная проблема с доверием.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Реальный пример: что это за странная красная точка на карте?&lt;/h2&gt;
&lt;p&gt;Для примера давайте рассмотрим дашборд, который стал широко популярен во время пандемии — &lt;a href="https://www.google.com/url?q=https://coronavirus.jhu.edu/map.html&amp;sa=D&amp;ust=1598616752822000&amp;usg=AFQjCNFRUzw5bve2HdMAY72otVE6txTUTw"&gt;панель мониторинга коронавируса университета Джона Хопкинса&lt;/a&gt;.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/1-11.png" width="700" height="319" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Дашборд привлекателен визуально. Красный и чёрный вызывают чувство строгости и важности с первого взгляда. По мере того, как взгляд останавливается на странице, мы сталкиваемся с числами, точками разного размера и графиками, которые почти всегда направлены вправо-вверх. У нас осталось ощущение, что всё плохо, и, кажется, становится ещё хуже. Этот дашборд был создан с целью получения данных доступным и интересным способом. Возможно, он даже был разработан, чтобы ответить на несколько ключевых вопросов: «Сколько новых случаев было сегодня в моей стране? А в моём регионе?». Безусловно, это намного лучше, чем если бы они просто разместили таблицу или ссылку для скачивания.&lt;/p&gt;
&lt;p&gt;Но кроме этих поверхностных выводов мы не можем сделать с данными ничего. Если бы мы хотели использовать данные для определенной цели, у нас не было бы необходимого контекста вокруг этих цифр, чтобы сделать их полезными и доверять как своим собственным. Например, «Когда в моей стране или в моём регионе начали действовать меры социального дистанцирования? Насколько доступны тесты в моей стране?». И даже если бы нам каким-то образом удалось получить этот контекст, чтобы доверять этим числам самому дашборду не хватает гибкости для проведения самостоятельного анализа.&lt;/p&gt;
&lt;p&gt;Как и в моём опыте работы в компании, имя которой я не называю, этот дашборд позволяет людям делать что-то с данными, но вовсе не что-то значимое. В указанной неназванной компании мы пытались решать эту проблему, добавляя всё больше и больше дашбордов, а затем добавляя всё больше и больше фильтров к этим дашбордам, а затем убивая эти дашборды, когда они становились бесполезными. Эта отрицательная обратная связь способствовала серьёзному недоверию к данным и межгрупповым расколам, многие из которых, как я полагаю, всё ещё существуют, если верить пассивно-агрессивным обновлениям статусов на LinkedIn.&lt;/p&gt;
&lt;p&gt;Дашборды расширили возможности обработки данных, но они определенно не являются оптимальным интерфейсом для совместной работы с данными и создания отчётов. К счастью, есть претендент, который вы, возможно, уже используете...&lt;/p&gt;
&lt;h2&gt;Данные в портретном режиме&lt;/h2&gt;
&lt;p&gt;Блокноты с данными, такие как Jupyter, стали очень популярными за последние несколько лет в области Data Science. Их технологическая направленность оказалась лучше традиционных скриптовых инструментов для Data Analysis и Data Science. Это не только полезно для аналитика, выполняющего работу, но также помогает начальнику, коллеге, другу, который вынужден этим пользоваться.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/2-11.png" width="700" height="310" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;По сути, блокноты обеспечивают:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Доверие процессу, потому что пользователи буквально видят код и комментарии автора&lt;/li&gt;
&lt;li&gt;Возможность ответить на любой вопрос, при условии, что пользователь знает язык, на котором написан код&lt;/li&gt;
&lt;li&gt;Сотрудничество между группами и представление решений с более широкой аудиторией&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Я, конечно, не первая, кто хочет применить мощь и гибкость блокнотов в области анализа данных или бизнес-аналитики, и мы поговорили с рядом компаний, которые используют их вместо дашбордов. Некоторые используют только Jupyter для своих отчётов, другие вырезают и вставляют диаграммы оттуда в текстовый редактор для аналогичного эффекта. Это не совершенные решения, но это признак того, что компании готовы отказаться от тщательно продуманных дашбордов, чтобы попробовать преимущества блокнотов.&lt;/p&gt;
&lt;p&gt;Нам просто нужен способ вынести эту идею за пределы Data Science и сделать блокнот таким же доступным, как и дашборды.&lt;/p&gt;
&lt;h2&gt;Блокноты в массы&lt;/h2&gt;
&lt;p&gt;В Count мы настолько верим в преимущества блокнотов, что создали платформу для анализа данных на их основе. Народ, больше никаких дашбордов!&lt;/p&gt;
&lt;p&gt;Чтобы использовать их за пределами Data Science, нам пришлось создать собственную версию, но фундаментальные принципы всё ещё применимы с некоторыми дополнительными преимуществами...&lt;/p&gt;
&lt;h2&gt;Создан для любого уровня опыта&lt;/h2&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="http://test.leftjoin.ru/pictures/3-10.png" width="700" height="378" alt="" /&gt;
&lt;/div&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Нет необходимости учить всех в вашей команде Python или SQL, поскольку запросы можно создавать по принципу drag-and-drop, используя «составной запрос» SQL или написания запроса с нуля.&lt;/li&gt;
&lt;li&gt;Стройте графики и диаграммы одним щелчком мыши, без сложных пакетов визуализации или программного обеспечения&lt;/li&gt;
&lt;li&gt;Автоматическое объединение таблиц и результатов запроса, нет необходимости писать сложные объединения или пытаться объяснить схему&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Collaboration-enabled&lt;/h2&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Делитесь блокнотами с товарищем по команде, всей командой или тем, у кого есть ссылка&lt;/li&gt;
&lt;li&gt;Добавляйте комментарии и выноски, чтобы сделать документ действительно общим&lt;/li&gt;
&lt;/ol&gt;
&lt;iframe src="https://vk.com/video_ext.php?oid=178098251&amp;id=456239625&amp;hash=d4c30b43d6b4e39f" width="640" height="360" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;Взяв лучшее от блокнотов, Count обеспечивает мощность, прозрачность и взаимодействие, необходимое командам, чтобы не просто сообщать людям цифры, а давать возможность получать нужную информацию и делиться ею с остальной частью компании. В процессе создания Count мы работали с рядом организаций, чтобы посмотреть, как блокноты меняют способ взаимодействия с данными в команде. Вот, что мы обнаружили:&lt;/p&gt;
&lt;ol start="1"&gt;
&lt;li&gt;Аналитики используют блокноты вместо SQL-скриптов для создания нескольких базовых таблиц, которые используют другие команды. Эти блокноты доступны для просмотра всем, что решает проблему доверия в команде&lt;/li&gt;
&lt;li&gt;Команда по работе с данными создаёт несколько базовых отчётов. Эти отчёты полны комментариев, которые помогут читателю лучше понять, как интерпретировать числа и какие соображения следует принять&lt;/li&gt;
&lt;li&gt;Затем пользователи делают fork этих дата-блокнотов или создают свои собственные. Они делятся этими блокнотами с Data Team, чтобы они могли помочь им, а затем и с другими подразделениями компании&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Поскольку всё используется всеми и находится в одном месте, проблемы с доверием начинают решаться. В результате вы не строите дашборды для людей, которые их не используют, не создаются тысячи фильтров для удовлетворения любых потребностей, поскольку у людей больше возможностей для создания полноценных отчётов, которые им действительно нужны. Небольшой переход от дашборда к блокноту может существенно повлиять на то, как ваша команда использует данные.&lt;/p&gt;
</description>
<pubDate>Fri, 28 Aug 2020 15:06:46 +0300</pubDate>
</item>


</channel>
</rss>