Биты и байты.

Биты и байты.

четверг, 23 января 2014 г.

Загрузка данных в Анаплан. Экспорт и Импорт.

При взаимодействии с внешними системами одним из важнейших вопросов является обмен данными.
Anaplan предоставляет  свои  инструменты для импорта и экспорта данных.

Для импорта данных используется утилита Anaplan Connect скачать (для работы нужна java)
После распаковки, будет доступна документация по  утилите.

Весь процесс организован в виде командных bat файлов.
Доступны 2 вида аутентификации, логин-пароль (файл  example.bat) и по сертификату (файл example-certificate-authentication.bat)

Сертификат можно создать на сайте  Anaplan в своем профиле
Рассмотрим импорт данных  в Anaplan по логину и паролю.
Прежде чем автоматизировать импорт с помощью bat файлов необходимо  один раз настроить механизмы импорта вручную.

При настройке импорта  важно указать, как будут загружаться данные, есть 2 опции
      1.Очищать источник перед загрузкой (чем то напоминает Truncate и Insert в SQL)
      2.Обновлять только импортируемые ячейки (чем то напоминает MERGE в SQL  )

Копируем файл example.bat из папки examples и редактируем его

Затем запускаем его как обычный файл, для поддержки русского языка в cmd не забываем выбрать шрифт Lucida Console

среда, 22 января 2014 г.

Слабо заголовок сделать на каждой странице в SSRS 2008?

Смотрю на этого кота и думаю, ну если он смог значит у меня тоже получится)


Оказывается все не так просто ка было в предыдущей версии 2005.
Достаточно было выставить значения


Теперь же ребята из MS решили немного пошалить и эти опции просто не работают, как говорится: Голосуй, не голосуй все равно получишь…
Ну понятно что ничего не получишь…

Однако как всегда оставили, возможность сделать это нестандартным способом, выбираем опцию Advanced Mode в группировках



И для нашей группы, для строк или столбцов, в моем случае для строк, выставляем опцию RepeatOnNewpage=True  и  KeepWithGroup=After
И все работает) Все гениальное не всегда просто)

Немного юмора как всегда..

понедельник, 20 января 2014 г.

Запуск SSIS пакета из SQL и другие фичи SSIS 2012

Пришлось однажды, реализовывать в отчете SSRS механизм обновления SSAS куба,
Очевидным решением было запустить существующий SSIS пакет из процедуры,
оказывается парни из Microsoft подготовили несколько новых возможностей в SSIS 2012,которыми хочу с вами поделиться.
Прежде чем развертывать проекты на сервере служб Службы Integration Services, необходимо создать каталог SSISDB на этом сервере.
Программа установки SQL Server 2012 не создает этот каталог автоматически.
Его необходимо создать вручную, следуя приведенным ниже инструкциям


Затем развернуть пакет на сервере где установлен SQL, для этого в свойствах пакета Deployment указываем наш SQL сервер и жмем кнопку Deploy


Теперь мы можем запускать наш пакет из SQL скрипта, для этого используем две процедуры
[SSISDB].[catalog].[create_execution] (создать экземпляр выполнения SSIS)
[SSISDB].[catalog].[start_execution] (запустить экземпляр выполнения SSIS)

Ниже пример использования, название пакета, папки и проекта можно получить по скрипту


Также доступны стандартные отчеты,  для просмотра хода выполнения и статистики.


Ниже список всех новых возможностей SSIS 2012

четверг, 16 января 2014 г.

Ускоряем работу отчета SSRS. Кубический отчет.

С тех пор как оперативная память подешевела и все перешли на x64, активно развиваются технологии in-memory баз данных и BI систем (всем привет от Qlikview),
где проблемы с производительностью постепенно отпадают сами.
Поэтому задержка в отклике  работы отчета уже в минуту сейчас считается, серьезным поводом для оптимизации.
Благо для обычных отчетов SSRS всегда была доступна в качестве источника служба аналитики Analysis Services.
Сегодня попробуем сделать простой отчет используя технологии SSAS+ SSRS.

Предварительно должен быть развернут куб на сервере Analysis Services. Создаем источник в отчете для нашего куба


Создаем пустой лист отчета, в дизайнере запроса формируем наш запрос, если необходимо изменить запрос жмем
Соответствующую пиктограмму, для форматирования запроса лучше использовать MDX Beautifier


В итоге получаем MDX запрос следующего вида, если возникнут проблемы с флагом CONSTRAINED и будут возникать ошибки вида
Query (1, 1020) The restrictions imposed by the CONSTRAINED flag in the STRTOSET function were violated.
Рекомендую удалить этот флаг и условие WHERE, этот флаг защищает от Injection атак и проверяет чтобы в параметре были именно элементы измерения.

Эти 2 запроса эквиваленты
Добавляем кросс таблицу в отчет Matrix и приводим ее к следующему виду, в отчете будут указаны продажи по календарным годам для сотрудников,
с возможностью раскрытия данных по каждому сотруднику. 

среда, 15 января 2014 г.

Ограничение доступа. Динамическая роль в SSAS.

Все должно быть динамическим. В мире ничего нет постоянного.
Дать пользователю роль проще простого, если  есть ограниченный набор ролей.
А если у каждого пользователя уникальный доступ к кубу и набор элементов измерения уникален.
В этом случае поможет создание уникальной динамической роли, которую мы сейчас и настроим.
Всего 7 шагов отделяют вас от заветной цели! Всего 7!!
ОСТОРОЖНО внизу много картинок, и это не фотографии красивых женщин!
1.Создаем в базе две таблицы. (Если необходимо ограничить по нескольким измерениям,
рекомендую добавить в Bridge таблицу еще один параметр NAME, разграничивающий доступ к измерениям и создать на ней 2 Bridge представления)

2.И заполняем их начальными данными
3.Следующим шагом добавляем их в исходное представление куба

Облачные движения с Анапланом

Современные технологии позволяют пользоваться программным обеспечением, через браузер без какой либо установки настройки и поддержки.

Все это пришло в обычную жизнь и в корпоративный мир под видом аббревиатур SAAS (программа как сервис), PAAS (платформа как сервис), IAAS (инфраструктура как сервис).
  • самый простой и идеальный пример SAAS это Google Docs, без которого уже не обойдется наверно ни один человек, Pixlr – обработка фотографий
  • для примера PAAS отлично подойдут Goggle App Engine (разработка ваших приложений прямо в облаке, приложения, разворачиваемые на базе App Engine,должны быть написаны на Python, PHP, Java либо Go)и Microsoft Windows Azure или SalesForce.com
  • IAAS  – это прежде всего вычислительные мощности, что-то вроде виртуальный компьютер в аренду как пример Amazon Web Services (AWS).
С одной стороны ты снижаешь издержки (не требуется покупать железо, содержать специалистов на поддержку, заниматься обновлениями,
с другой стороны появляется зависимость от поставщика услуг и интернет провайдера, плюс ко всему появляются вопросы безопасности и гибкости волнующие большинство компаний).
Эти технологии постепенно внедряются и в Business intelligence. Так уж сложилось, что жизнь меня столкнула с одним из таких инструментов.
Итак приветствуйте Anaplan.

Давайте разберемся подробнее, с чем придется иметь дело.  Кто хочет ускорить обучение может посмотреть для начала обучающее видео))
С виду очень похож на Excel , адаптированный под планирование и бюджетирование.
В вашем личном рабочем пространстве вы можете создавать модели, размер ограничен вашей подпиской.


Каждая модель имеет свою структуру и настройки. Все в Анаплане крутится вокруг модулей, и списков.
Модули группируются в функциональные блоки для удобства (по аналогии с файлами и папками).
Модули представляют уникальные представления  бизнеса (в своем роде мини кубы), т.е. комбинации  измерений ("Списки" в языке Anaplan), временной шкалы и показателей, дающие пользователям возможность взглянуть на результаты коммерческой деятельности с разных точек зрения, одновременно представляют собой формы (шаблоны) ввода данных.

Так задается структура нового модуля есть следующие разделы,  PAGES , COLUMNS, ROWS
По умолчанию доступны следующие измерения TIME (время), VERSIONS (версии/сценарии),
LINE ITEMS (что-то напоминающее собой набор показателей, который можно ввести вручную и затем указать для них формулы расчета)


В настройках обычно отображается сколько ячеек памяти участвует в модели, в нашей модели сейчас видим задействовано 14 958 ячеек.
Среди настроек сразу бы хотелось выделить настройку временной шкалы (временное измерение): здесь можно задать тип календаря,
в нашем случае это Месяц – Квартал – Год, начало финансового года,  Текущий финансовый год, Текущий месяц  (обычно нужен для расчета показателей YTD, YTG)
и итоги квартальные, полугодовые, YTD, YTG и общие итоги.

понедельник, 13 января 2014 г.

Как взять кредит или подводные камни на виду..

История о том как я брал кредит или здравствуйте вы наш самый любимый клиент!
Рано или поздно, в итоге, все равно приходится обращаться к заемным деньгам, таково устройство капиталистического мира.
Бумага стимул прогресса как это ни печально….

Итак приступим, в качестве предусловий есть  такой термин как положительная кредитная история , которая  влияет на предоставление кредита в некоторых банках,
которой у меня конечно же не было и регистрация на полгода в столице.. Есть еще один нюанс  - это впаривание страхования жизни от банков, страховка сама по себе добровольная,
но некоторые банки пытаются втюхать ее как обязательную, а реальная ставка по кредиту с такой страховкой будь здоров, с 20 может легко подняться до 25%. Было решено изучить предложения от нескольких банков и сравнить их между собой,  сравнивал конечно же по ежемесячному платежу, чтобы понять сумму переплаты и отличия между условиями банков.

Первым пал выбор на альфа банк, как корпоративный банк и наличие зарплатной карты, я то наивный подумал вот клево будут автоматом списывать  с зарплатной карты
Каково же было разочарование когда мне впаяли максимальную ставку 28% под предлогом отсутствия кредитной истории,
Причем манагер когда заполнял анкету, оставил эти поля пустыми мотивируя что ставку они определяют сами индивидуально, еще тогда я подумал разводят что-ли,
плюс пыталась добавить туда страховку под всякими предлогами еле отказался)
по факту конечно так и получилось сумма 500  на год ставка 28% ежемесячный платеж 48

Офигевая от таких корпоративных предложений пошел я в Сбер
Девочка менеджор все быстро рассчитала и выдала ставку что то в 19.5 % с ежемесячным платежом в 45.5 для суммы 500 на год
Немного прикинув я дал свое одобрение и девушка с серьезным видом стала заполнять анкету, когда же дело дошло регистрации, тут мну ждал полный финиш..
Сбер может дать кредит не зарплатному клиенту лишь на срок регистрации, и это мне говорит банк у которого филиалы по всей стране…  
Но для зарплатных клиентов у них нужен только паспорт, и тут я пожалел что я не зарплатный клиент сбера)
Плюс заморочки со страховкой, ее впаривавают чуть ли не под видом обязательной, типо без нее не выдадут кредит или ставка будет другой,
оказывается у манагеров в банке от этой страховки зависит премия, но в течении 30 дней можно отказаться от страховки, так меня убедила девочка,
даже сказала что сама напишет заявление от моего имени.. Страховка оказалась не очень большой 8, но нужна ли она?
Вот те думаю новость, надо подключать мозги и ноги дальше, есть же банки которым все еще нужны клиенты..
В то время я был вкладчиком Московского кредитного банка, который по вкладам дает очень неплохие проценты, прикинул раз я у них 2 года клиент, может и условия есть особые.
Моему удивлению не было предела, когда мне сказали вы наш хороший клиент сейчас мы вам все рассчитаем на особых условиях,
Когда я увидел эти условия я долго поднимал свою челюсть с пола, 33.1 на 2 года для суммы 600 со страховкой и 33.5 без страховки…
Решил что это не серьезно и ушел оттуда не думая)
Следующим по дороге был Абсолют банк, сразу скажу был порадован сервисом отделения на Динамо, приняла сама зав. отделения, пока менеджер был занят клиентом,
Все быстро рассчитала и объяснила , никаких страховок, однако тут меня снова ждала неудача, оказывается регион моей регистрации не входит в список регионов где представлен банк,
хотя география у банка очень обширная.
В итоге получил 31.2 на 2 года для суммы 600.

Стань гуру MDX!

Все помнить невозможно  зато под рукой всегда должны быть справочники функций и примеры их использования.
Тут полный список MDX функций и основы основ MDX reference и примеры на MS TechNet Library


В помощь новичкам MS всегда встраивает template Explorer

четверг, 9 января 2014 г.

Кто положил базу?

Очень часто ввиду непроработанной архитектуры, возникают запросы которые способны положить любую высокопроизводительную базу,
Тут может быть и CROSS JOIN или запрос  не попадающий в индекс, заблокированные сессиии и тд..
Как быстро разобраться кто и зачем это делает?)

Ведь в определенный момент может  остановиться вся система, если не настроены тайм ауты на выполнения запросов.
Для  анализа таких запросов в SQL SERVER очень умный дядька придумал хранимую процедуру sp_WhoIsActive
Мы ее немного модифицируем и сделаем рассылку проблемных запросов с выполнением больше часа на наш ящик для их последующего анализа.

Создадим  в нашей схеме таблицу,  сюда будем складывать наши запросы
Подробнее здесь

DECLARE @destination_table VARCHAR(4000) ;
SET @destination_table = 'WhoIsActive_' + CONVERT(VARCHAR, GETDATE(), 112) ;
DECLARE @schema VARCHAR(4000) ;
EXEC sp_WhoIsActive
@get_transaction_info = 1,
@get_plans = 1,
@return_schema = 1,
@schema = @schema OUTPUT ;
SET @schema = REPLACE(@schema, '<table_name>', @destination_table) ;
PRINT @schema

Качаем последнюю версию sp_WhoIsActive
Для того чтобы сохранить результаты процедуры в таблицу выполняем

EXEC dbo.sp_WhoIsActive      @destination_table = 'WhoIsActiveLog' ;


Создаем представление которое будет показывать самые свежайшие запросы


Создаем процедуру, которая будет нам отправлять  запросы на ящик









+ Немного смайлов

Что скрывается от наших глаз? Я хочу это увидеть.

У продвинутого пользователя и разработчика всегда должен быть на вооружении набор средств и утилит позволяющий увидеть то что недоступно обычному пользователю.


Fiddler - прокси, который работает с трафиком Http и Https между вашим компьютером и удаленным сервером,  позволяет просматривать и менять его.  
Можно просматривать все заголовки, Cookie, параметры и тд.
Хорошая презентация по fiddler  и неплохой мануал


DebugView - бесплатная утилита из сборника SysInternals Suite для просмотра отладочного вывода программ и драйверов в ОС Windows как на локальном ПК, так и на любом компьютере в сети, подключенного по протоколу TCP/IP. DebugView поддерживает вывод как в Kernel-mode, так и User-mode.
Полезна при отладке .NET программ.
По умолчанию отключена в Vista/Server2008 и выше, включается через реестр
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter
Добавляем значение "DEFAULT" : REG_DWORD : 0xFFFFFFFF и перезагружаемся.


Network Monitor — Анализатор сетевых пакетов и фреймов, программа диагностики сетей, которая используется для контроля над локальной сетью и отображения статистики сети в графическом виде. Эта статистика необходима администраторам при решении текущих проблем, например при определении неработающего сервера или сервера, получающего непропорционально много рабочих запросов.
Видео по этой полезной программе тут.


Proccess Monitor отличный инструмент чтобы узнать что происходит в вашей системе, объединяет в себе сразу 3 утилиты, FileMon (мониторинг файловой системы), RegMon (мониторинг реестра) и Process Explorer (мониторинг процессов), и предоставляет пользователям мощный инструмент для мониторинга файловой системы, системного реестра, а также всех процессов в оперативной памяти в реальном времени


TcpView тот же самый netstat только с графическим интерфейсом, показывает детальный список всех процессов TCP, UDP и TCPV6 интернет-соединений,  а также удалённые адреса, с которыми были установлены соединения.


среда, 8 января 2014 г.

WTF отчеты SSRS не отображаются в Chrome и Safari

Есть одна известная проблема, отчеты SSRS  не отображаются в Chrome и Safari,
Сейчас покажу небольшой фокус, который я подсмотрел на stackoverflow,
Все дело в  различной интерпретации свойства overflow элемента div , в моем случае он называется  ctl32_ctl09
Открываем отчет в Chrome, правой кнопкой жмем  Просмотр кода элемента,  дальше CTRL+F  то бишь поиск


Вбиваем VisibleReportContent, выше находим  название нашего элемента
Проверяем, что это тот элемент который нам нужен, выставляем ему свойство visible, убеждаемся что отчет отображается


Дальше идем на сервер отчетов, в папку где расположены скрипты, обычно это выглядит так


Открываем файл reportingServices (не забываем сделать копию на всякий случай), добавляем туда этот скрипт,  обязательно проверяем наличие ;  в конце

function pageLoad() {
    var element = document.getElementById("ctl32_ctl09");
    if (element) {
        element.style.overflow = "visible";
    }

В итоге  выглядит как-то так

Перезапускаем Reporting services и наслаждаемся результатом

About