# Дополнительные ресурсы ## Мои материалы - [Курс "BI разработчик. Основы работы в Tableau"](https://stepik.org/course/56280/promo) - [Видеоуровки по работе с Tableau в Youtube](https://www.youtube.com/watch?v=TL_4HdyuJoI&list=PLiEhcUyRBhuGPT80soCtMaq85vFRRpuU6) ## Официальные ресурсы Tableau - [Tableau Public](https://public.tableau.com/app/discover) - [Скачать Tableau Public](https://www.tableau.com/products/public/download) - [Видеокурсы с основами работы от Tableau (англ)](https://www.tableau.com/learn/training) # Создание дашборда №1 ## Пример дашборда https://public.tableau.com/app/profile/artem6593/viz/SuperstoreHigh-LevelDashboardv_222-03/SuperstoreHigh-LevelDashboard ## Формулы текущий и прошлый год ### Sales **Sales Current Year** ```sql!= IF YEAR([Order Date]) = INT([Year]) THEN [Sales] END ``` --- **Sales Previous Year** ```sql!= IF YEAR([Order Date]) = INT([Year])-1 THEN [Sales] END ``` --- ### Profit **Profit Current Year** ```sql!= IF YEAR([Order Date]) = INT([Year]) THEN [Profit] END ``` --- **Profit Previous Year** ```sql!= IF YEAR([Order Date]) = INT([Year])-1 THEN [Profit] END ``` --- ### Orders **Orders Current Year** ```sql!= COUNTD( IF YEAR([Order Date]) = INT([Year]) THEN [Order ID] END ) ``` --- **Orders Previous Year** ```sql!= COUNTD( IF YEAR([Order Date]) = INT([Year])-1 THEN [Order ID] END ) ``` --- ### Customers **Customers Current Year** ```sql!= COUNTD( IF YEAR([Order Date]) = INT([Year]) THEN [Customer Name] END ) ``` --- **Customers Previous Year** ```sql!= COUNTD( IF YEAR([Order Date]) = INT([Year])-1 THEN [Customer Name] END ) ``` --- ## Формулы проценты Форматирование процентов `▲ +0.0%; ▼ -0.0%` --- **Sales % Difference** ```sql!= (SUM([Sales Current Year]) - SUM([Sales Previous Year])) / SUM([Sales Previous Year]) ``` --- **Profit % Difference** ```sql!= (SUM([Profit Current Year]) - SUM([Profit Previous Year])) / SUM([Profit Previous Year]) ``` --- **Orders % Difference** ```sql!= (([Orders Current Year]) - ([Orders Previous Year])) / ([Orders Previous Year]) ``` --- **Customers % Difference** ```sql!= (([Customers Current Year]) - ([Customers Previous Year])) / ([Customers Previous Year]) ``` ## Прочие расчеты ### Создание параметра Choose Measure ![изображение](https://hackmd.io/_uploads/Bkx1JUUZ0.png) Значения для параметра - `Sales` - `Profit` - `Customers` - `Orders` --- ### **Measure** ```sql!= CASE [Choose Measure] WHEN 'Sales' THEN SUM([Sales]) WHEN 'Profit' THEN SUM([Profit]) WHEN 'Customers' THEN COUNTD([Customer Name]) WHEN 'Orders' THEN COUNTD([Order ID]) END ``` --- ### **Color for table** ```sql!= if (ZN([Measure]) - LOOKUP(ZN([Measure]), -1)) / ABS(LOOKUP(ZN([Measure]), -1)) < 0 then 'Red' else 'Green' end ``` # Создание дашборда №2 **Название KPI** - Total Orders - Returned Orders | - Average Order Value - Average Delivery Time ## Orders **Total Orders** `COUNTD([Order ID])` --- **Max Orders #** `IF [Total Orders] = WINDOW_MAX([Total Orders]) THEN [Total Orders] END` --- **Min Orders #** `IF [Total Orders] = WINDOW_MIN([Total Orders]) THEN [Total Orders] END` --- **% of Returned Orders** `COUNTD(IF [Returned] = 'Yes' THEN [Order ID] END) / SUM( { COUNTD([Order ID]) } )` --- ## Average Orders **Avg Order Value** `SUM([Sales]) / [Total Orders]` --- **Max AOV** `IF [Avg Order Value] = WINDOW_MAX([Avg Order Value]) THEN [Avg Order Value] END` --- **Min AOV** `IF [Avg Order Value] = WINDOW_MIN([Avg Order Value]) THEN [Avg Order Value] END` ## Order Delivery Time **Order Delivery Time** `DATEDIFF('day', [Order Date], [Ship Date])` --- **Max Avg Delivery Time** `IF AVG([Order Delivery Time]) = WINDOW_MAX(AVG([Order Delivery Time])) THEN AVG([Order Delivery Time]) END` --- **Min Avg Delivery Time** `IF AVG([Order Delivery Time]) = WINDOW_MIN(AVG([Order Delivery Time])) THEN AVG([Order Delivery Time]) END` --- ## Прочие формуры **Distinct Orders for Donut** `COUNTD([Order ID])` --- **Orders Difference for Donuts** `SUM({COUNTD([Order ID])}) - [Distinct Orders for Donut]` --- **Jitter** `RANDOM()` # Кастомные визуализации ## Формулы и параметры ### Барчарт на таймлайне **Additional months** ```sql= {MAX (DATE(DATEADD('month', 6, [Order Date])))} ``` **Parameter for fake X axis** ![изображение](https://hackmd.io/_uploads/Sy8Rfuxfke.png) ### Calendar Heatmap **Months** ```sql= CASE MONTH([Order Date]) WHEN 1 THEN 1 WHEN 2 THEN 2 WHEN 3 THEN 3 WHEN 4 THEN 1 WHEN 5 THEN 2 WHEN 6 THEN 3 WHEN 7 THEN 1 WHEN 8 THEN 2 WHEN 9 THEN 3 WHEN 10 THEN 1 WHEN 11 THEN 2 WHEN 12 THEN 3 END ``` **Week Index** ```sql= DATEPART('week', [Order Date]) - {FIXED DATEPART('month', [Order Date]): MIN(DATEPART('week', [Order Date]) ) } ``` # Лайфхаки в работе с цветом и визуализациями ### Свои фигуры (прямоугольник) https://drive.google.com/file/d/1EkRza8jsfWpmSnvnUwoUiCUaxzqWb2Lu/view Сайты с иконками - [Icons8](https://icons8.ru/) - [Iconfinder](https://www.iconfinder.com/) ### Примеры палитры ```xml!= <?xml version='1.0'?> <workbook> <preferences> <color-palette name="Sequential Palette from White" type="ordered-sequential"> <color>#ffffff</color> <color>#285fd1</color> </color-palette> <color-palette name="Diverging through Gray" type="ordered-diverging"> <color>#de003e</color> <color>#e0e1e8</color> <color>#285fd1</color> </color-palette> <color-palette name="Diverging through White" type="ordered-diverging"> <color>#de003e</color> <color>#ffffff</color> <color>#285fd1</color> </color-palette> <color-palette name="My Superstore Palette" type="regular"> <color>#264653</color> <color>#2A9D8F</color> <color>#E9C46A</color> <color>#F4A261</color> <color>#E76F51</color> </color-palette> </preferences> </workbook> ``` Документация https://help.tableau.com/current/pro/desktop/en-us/formatting_create_custom_colors.htm # Дашборды http://duelingdata.blogspot.com/2019/01/5-types-of-dashboards.html # Проект [Описание источника](https://www.kaggle.com/datasets/usdot/flight-delays/data) ## Таблички ### Авиакомпании (airlines.csv) |Поле|Описание| |---|---| IATA_CODE| ИАТА Код авиакомпании AIRLINE|Название авиакомпании ### Аэропорты (airports.csv) |Поле|Описание| |---|---| IATA_CODE| ИАТА Код аэропорта CITY|Город STATE|Код штата COUNTRY|Страна LATITUDE|Широта аэропорта LONGITUDE|Долгота аэропорта ### Полёты (flights.csv) |Поле|Описание| |---|---| YEAR| Год полёта MONTH| Месяц полёта DAY| День полёты DAY_OF_WEEK| День недели AIRLINE| Код авиакомпании FLIGHT_NUMBER| Номер рейса TAIL_NUMBER| Номер самолёта ORIGIN_AIRPORT| Аэропорт вылета DESTINATION_AIRPORT| Аэропорт прилёта SCHEDULED_DEPARTURE| Planned Departure Time DEPARTURE_TIME| WHEEL_OFF - TAXI_OUT DEPARTURE_DELAY| Общее время задержки TAXI_OUT| Промежуток времени, прошедший с момента отправления из аэропорта (от гейта) отправления и до взлёта WHEELS_OFF| Момент взлёта SCHEDULED_TIME| Планируемое количество времени, необходимое для перелета ELAPSED_TIME| AIR_TIME+TAXI_IN+TAXI_OUT AIR_TIME| Длительность времени между взлетом и посадкой DISTANCE| Расстояние между двумя аэропортами WHEELS_ON| Момент приземления самолёта TAXI_IN| Время, прошедшее между посадкой на колеса и стыковкой с гейтом DEPARTURE_TIME| WHEEL_OFF - TAXI_OUT SCHEDULED_ARRIVAL| Запланированное время прибытия ARRIVAL_TIME| WHEELS_ON+TAXI_IN ARRIVAL_DELAY| ARRIVAL_TIME-SCHEDULED_ARRIVAL (отклонение от плана) DIVERTED| Самолёты перенаправленные в другой аэропорт CANCELLED| Отменённые рейсы (1 = отменён) CANCELLATION_REASON| Причина отмены рейса: A - Авиакомпания/перевозчик; B - Погода; C - Национальная воздушная система; D - Безопасность AIR_SYSTEM_DELAY| Задержка, вызванная воздушной системой SECURITY_DELAY| Задержка, вызванная безопасностью AIRLINE_DELAY| Задержка, вызванная авиакомпанией LATE_AIRCRAFT_DELAY| Задержка, вызванная воздушным судном WEATHER_DELAY| Задержка, вызванная погодными условиями