Решение диплома Подготовка данных Получение таблицы «Движение ДС» Т.к. файлы с данными по движению ДС лежат в разных папках: 1. Подключаемся к корневой папке 2. Фильтруем только по xlsx-файлам 3. Объединяем данные из них в одну таблицу 4. Из пути до файла извлекаем название сегмента 5. Т.к. название клиентов повторяются в разных файлах, делаем уникальный идентификатор клиента, объединяя сегмент и название клиента Получение курсов валют и создание календаря 1. Получаем таблицы с историческими курсами долларов и евро и объединяем их в одну 2. В таблице с курсами есть пропуски: для выходных и праздничных дней берется курс последнего рабочего дня. Поэтому, если у нас будет календарь (таблица со столбцом дат без пропусков), то к нему логично будет добавить 2 столбца с курсами. При этом мы ничего не проиграем с точки зрения размера модели, т.к. календарь все равно нужен 3. Для создания календаря находим первую и последнюю дату в таблице «Движение ДС» и строим список дат в промежутке между этими датами 4. Объединяем календарь с курсами и заполняем пропуски Получение таблицы «Клиенты» 1. Обращаемся к папке с исходными данными и фильтруем только по pdf-файлам 2. Извлекаем название сегмента из имени папки, где лежал файл 3. Извлекаем таблицы из файлов и разворачиваем их в таблицу 4. Убираем строки с заголовками таблиц в pdf-файлах (строки «Список клиентов») 5. В одном столбце у нас содержаться названия городов, отраслей и информация по клиентам. Нужно развести из на 3 столбца: 1. Строки, содержащие данные по клиентам, начинаются со слова «Клиент» 2. Строки, содержащие название отрасли, всегда стоят перед строкой с данными клиента 3. Строки, содержащие название города – это строки, не содержащие данные клиента и не содержащие название отрасли 6. Данные по ставкам содержатся между символом валюты и знаком процента Построение вспомогательных таблиц 1. Для мер и вспомогательных мер готовим 2 таблицы 2. Добавляем таблицу для среза с выбором валюты. В эту таблицу добавляем 2 столбца (“i”, “j”), кодирующими выбранную валюту. Зачем – увидим на этапе анализа Анализ данных Создание вспомогательных мер для анализа 1. [_1. Привлеченные ДС] – это сумма всех положительных значений, т.к. привлеченные деньги записываются со знаком «+» 2. [_2. Выплаченные ДС] – это сумма всех отрицательных значений, т.к. выплаченные деньги записываются со знаком «-». Не забываем, что сумма получится отрицательной, поэтому в итоге ее нужно взять с обратным знаком 3. [_5.1 Кол-во депозитов] – число всех привлеченных депозитов. То есть число строк, где сумма положительная 4. [_5. Средний размер депозита] – это отношение привлеченных денег к числу депозитов 5. [_RUR/EUR] и [_RUR/USD] – меры, выдающие курс для конвертации валют. Считаются на последнюю выбранную дату Создание меры начисленных процентов в конкретной валюте 1. Начисленные проценты – это сумма начисленных процентов по каждому клиенту 2. Начисленные проценты по конкретному клиенту – это сумма процентов начисленных с каждого дневного остатка 3. Сумма процентов с остатка считается как остаток на дату, умноженный на дневную ставку в данной валюте 4. Фактически, дневную ставку можно вынести за скобки суммы. Таким образом, для данного клиента нам нужно посчитать сумму дневных остатков 5. Сумма остатка на дату считается как сумма всех пришедших и ушедших денег данного клиента в данной валюте с начала данных и по текущую дату. Если остаток отрицательный, то, по условию, проценты начисляться не должны. Соответственно, в этом случае остаток берется равным нулю Создание мер для показателей 1, 2, 4, 5 в конкретной валюте 1. [XXX: 1. Привлеченные ДС], [XXX: 2. Выплаченные ДС], [XXX: 5. Средний размер депозита] – считаются как соответствующая вспомогательная мера в контексте указанной валюты 2. [XXX: 4. Задолженность] – это сумма привлеченных денег и начисленных процентов, за вычетом выплаченных денег Создание мер в валюте приведения Все меры [Uno Currency: …], кроме задолженности и среднего размера депозита, создаются по одному принципу. 1. Каждой валюте, которую выбирает пользователь, соответствует 2 маркера, i и j. Для каждого варианта валюты i и j принимают каждый одно из значений – 1, либо 0 2. Для перевода каждого показателя к одной валюте нужно этот показатель в каждой из валют перевести к искомой 3. Создаем в мере 3 переменные, каждая из которых приводит показатель к «своей валюте» 4. Создаем формулу, которая при данном сочетании маркеров ту переменную, которая вычисляет значение в выбранной валюте, оставляет, а остальные 2 – превращает в 0 5. Пример для одного маркера и двух валют: если пользователь выбирает доллары, то i = 0; если рубли, то i = 1. Тогда формула = [значение в долларах] * (1-i) + [значение в рублях] * I будет давать [значение в долларах] при i = 0 и [значение в рублях] при i = 1 Визуализация результатов Допущения, с которыми делались визуализации 1. Отчет сделан на 2-х страницах: на одной все числовые отображения и отображения в показателей в динамике (п.п. 3.2.2 и 3.2.3 задания) 2. На второй – визуализации в разрезе отраслей и городов 3. Переключение между отображением в отдельных валютах и в одной сделано кнопками 4. При отображении показателей в динамике в отдельных валютах для каждого показателя сделаны отдельные визуализации для каждой валюты, т.к. при отображении данных на одной визуализации из-за разномасштабности данных (доллары/евро к рублю) одни ряды данных «гасятся» другими 5. Отображение числовых показателей сделано многострочными карточками. Для того, чтобы заголовок показателя в многострочной карточке смотрелся в одном стиле с числом, заголовки сделаны отдельными вспомогательными мерами 6. Чтобы в многострочной карточке разместить блоки с разными показателями в разных частях листа, в карточку добавлена мера [_Заглушка], добавляющая пустое место 7. Переключение между валютами сделано срезом 8. Для отображения показателей в разрезе городов/отраслей выбраны матрицы, как наиболее информативные визуализации при минимальном занимаемом месте Спасибо за внимание! Павел Козлов, pavek@emea-box.com