Информация

Последние записи

Теги


Блоги


Записи из всех блогов с тегом: bi


Правильные отношения как залог успеха проекта

Системы бизнес - анализа в определенном смысле представляют собой вершину построения информационной архитектуры предприятия, поскольку с одной стороны консолидируют в себе данные из важнейших учетных систем, а с другой - являются ключевой точкой для переосмысления и развития ИТ-стратегии. Это означает, что в проекте по внедрению BI-решения ключевыми выгодоприобретателями будут первые лица руководства, и, как следствие, пристальное внимание и жесткий контроль над реализацией проекта со стороны заказчика. К сожалению, повышенное внимание со стороны руководства компании далеко не обязательно означает качественное управление и поддержку проекта. Более того, если руководитель проекта в компании заказчика не обладает должным авторитетом и достаточными волевыми характеристиками, это приводит к навязыванию решений, которые негативно сказываются на реализации проекта в целом.

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

читать дальше...
автор: Дмитрий Зиновьев добавлено: 01 сен 17 просмотры: 482, комментарии: 2



как размножить строки... cross join и connect by

Блог: Oracle SQL
Авторский курс. SQL от новичка до профессионала. Бесплатное вводное занятие. Сертификат. Записывайся!
Прокачаю до уровня БОГ!


итак , нам необходимо размножить строки в некоторой таблице, на основе заданного запроса
пусть это будет следующий запрос
select object_name from all_objects where object_type = 'CLUSTER'

этот запрос вернет нам 10 строк , по условиям задачи необходимо повторить эти 10 строк по 10 раз

создадим таблицу с размноженными строками , здесь на поможет конструкция cross join и оператор иерархии connect by
вот скрипт создания такой таблицы:
 create table copy1 as select * from 
 (select level lnl from dual connect by level < 11) 
cross join (select object_name from all_objects where object_type = 'CLUSTER') 

где level < 11 количество вставляемых строк

подсчитаем количество строк в данной таблице
 select count(*) from copy1

-- 100 строк, все верно

продемонстрируем работу оператора insert применительно к данной задаче
очистим таблицу
delete from copy1;

произведем вставку
insert into copy1(lnl, object_name) 
select * from (select level lnl from dual connect by level < 11) cross join 
(select object_name from all_objects where object_type = 'CLUSTER')


посмотрим, что получилось
select object_name,count(1) from copy1 group by object_name

успех...
автор: Myp3_u_K добавлено: 13 мар 17 просмотры: 2002, комментарии: 0



Я выступаю на DevCon 2014

Блог: Gandjustas' blog

Немного запоздалый, но все же анонс.

28 и 29 мая я буду выступать на конференции DevCon 2014. В этот раз у меня целых два доклада. Первый (28 мая в 17:10) на тему новых возможностей BI в SharePoint 2013, где я буду рассказывать рол PowerPivot и PowerView. Второй доклад (29 мая в 10.30) про BI в облаках с применением PowerBI и Office 365.

Приходите на доклады, кто будет присутствовать на конференции или смотрите трансляцию.

читать дальше...
автор: gandjustas добавлено: 02 авг 16 просмотры: 1254, комментарии: 0



Записи докладов по Business Intelligence c DevCon 2014

Блог: Gandjustas' blog
На конференции DevCon, которую ежегодно организует Microsoft, в 2014 году я выступал аж с двумя докладами, оба были на тему Business Intelligence в SharePoint.

Недавно были опубликованы видеозаписи. Выложу их в блоге, чтобы проще было найти.

Первый доклад по Power Pivot в SharePoint 2013 (on-premises), в котором я показываю пример мини-erp решения для управленя отделом, которое можно собрать за несколько часов совершенно без программирования.

Второй доклад посвящен возможностям PowerBI в Office 365. Особое внимание было уделено инструменту Power Query, его использованию в Excel, а также настройке гибридной среды для получения доступа из облака к данным on-premises.

А вы используете в своей работы BI инструменты SharePoint? Напишите в комментах в каких сценариях применяли или почему не применяли.
читать дальше...
автор: gandjustas добавлено: 19 июл 16 просмотры: 1046, комментарии: 0



Я выступаю на Russian BI User Group 14го июля 2015

Блог: Gandjustas' blog
14 июля я буду выступать на юзер-группе по business intelligence. Буду рассказывать про анализ данных в Excel с помощью PowerPivot. Но это будет не обзор для новичков, а продвинутые методы анализа, для тех, кто уже имеет опыт работы с PowerPivot.

Встреча юзер-группы будет проходить в Microsoft Technology Center 14 июля 2015 года, начало в 17:00. Регистрация обязательна, регистрироваться по ссылке.

Приходите все, будет интересно!
читать дальше...
автор: gandjustas добавлено: 02 июн 16 просмотры: 925, комментарии: 0



Записи докладов по Business Intelligence c DevCon 2014

Блог: Gandjustas' blog
На конференции DevCon, которую ежегодно организует Microsoft, в 2014 году я выступал аж с двумя докладами, оба были на тему Business Intelligence в SharePoint.

Недавно были опубликованы видеозаписи. Выложу их в блоге, чтобы проще было найти.

Первый доклад по Power Pivot в SharePoint 2013 (on-premises), в котором я показываю пример мини-erp решения для управленя отделом, которое можно собрать за несколько часов совершенно без программирования.

Второй доклад посвящен возможностям PowerBI в Office 365. Особое внимание было уделено инструменту Power Query, его использованию в Excel, а также настройке гибридной среды для получения доступа из облака к данным on-premises.

А вы используете в своей работы BI инструменты SharePoint? Напишите в комментах в каких сценариях применяли или почему не применяли.
читать дальше...
автор: gandjustas добавлено: 02 ноя 15 просмотры: 811, комментарии: 0



Импорт данных из MS SQL в бесплатный BI Jedox

Блог: BI Jedox
Итак, как и обещал, раскрою тему как при помощи бесплатного BI Jedox закачать данные из MS SQL в куб.
О самой программе Jedox. Написали немцы в 2002 г., сейчас уже существует версия 6. Как платная, так и бесплатная.
Поставить Jedox любой школьник может, заходим на сайт качаем и ставим.
В качестве источника рассмотрим демо-базу Northwind, ее легко скачать и установить. MS SQL поставил Express 2008 R2.
читать далее


Я выступаю на Russian BI User Group 14го июля 2015

Блог: Gandjustas' blog
14 июля я буду выступать на юзер-группе по business intelligence. Буду рассказывать про анализ данных в Excel с помощью PowerPivot. Но это будет не обзор для новичков, а продвинутые методы анализа, для тех, кто уже имеет опыт работы с PowerPivot.

Встреча юзер-группы будет проходить в Microsoft Technology Center 14 июля 2015 года, начало в 17:00. Регистрация обязательна, регистрироваться по ссылке.

Приходите все, будет интересно!
читать дальше...
автор: gandjustas добавлено: 05 авг 15 просмотры: 769, комментарии: 0



Я выступаю на DevCon 2014

Блог: Gandjustas' blog

Немного запоздалый, но все же анонс.

28 и 29 мая я буду выступать на конференции DevCon 2014. В этот раз у меня целых два доклада. Первый (28 мая в 17:10) на тему новых возможностей BI в SharePoint 2013, где я буду рассказывать рол PowerPivot и PowerView. Второй доклад (29 мая в 10.30) про BI в облаках с применением PowerBI и Office 365.

Приходите на доклады, кто будет присутствовать на конференции или смотрите трансляцию.

читать дальше...
автор: gandjustas добавлено: 01 июн 14 просмотры: 1613, комментарии: 0



Аналитика по остаткам в SSAS: MDX, Snapshot и Many-To-Many. Часть третья.

Часть третья. Реализация через Many-To-Many
(Начало - здесь:http://www.sql.ru/blogs/dklmnmsbi/1450) и здесь: http://www.sql.ru/blogs/dklmnmsbi/1454)
  Немного порассуждаем.
  Изначальная таблица фактов с проводками содержала у нас 1 454 673 записей.
Таблица фактов с остатками, "расширенная" до каждого дня в измерении,- 2 146 853 записей.
Разница не слишком большая, но дает повод задуматься над вопросом: "От чего может зависеть размер таблицы фактов с остатками"? Каждый факт в этой таблице фиксирует наличие ненулевого остатка в определенный день для определенного сочетания "Товар- Склад..". Стало быть, количество строк в этой таблице фактов равно сумме ряда, где каждый член ряда соответствует одному сочетанию "Товар-Склад" и равен числу дней, в течение которых для данного сочетания был ненулевой остаток.
  Рассмотрим вырожденный случай. В некий час X три года назад в учетной системе разом появилось 10 тысяч товаров, распределенные по ста складам. Итого - миллион комбинаций товар склад. (Напоминаю, что мы рассматриваем упрощенный случай, в реально жизни гранулярность учета обычно включает дополнительные измерения, например номер приходной накладной, и тогда это число еще увеличивается).
И дальше все три года товар двигался туда-суда, но ни на одном из складов не было такого, что какой то товар обнулялся. Стало быть, число строк таблиц фактов за трехлетний период в этом случае равно 10000*100 *(365*3)=.. чуть больше миллиарда. Многовато даже для SSAS.
  Можно ли как то избежать этого? Попробуем.
Для этого нужно подойти к задаче несколько с другой стороны. До сих пор мы рассматривали остаток как некую цифирь, которую нужно запихнуть в запрос для таблицы фактов и построить на нем меру. Но его можно рассмотреть и как некое состояние, характеризующее "Товар-Склад", и это состояние характеризуется неким периодом времени, в течении которого оно действительно.
  Из этого следует логика дальнейших действий:
  а)Мы выделяем в предметной области - "Период" как отдельную аналитическую сущность и соответственно отдельное измерение.
Ключом этого измерения логично сделать два поля - Дату начала периода и Дату конца периода.
Приятным бонусом к этому измерению будет приложен атрибут "Длительность периода", который логично и удобно использовать для аналитики по длительности любых бизнес процессов.
  б)Таблицу фактов мы строим только для изменений остатка. С учетом того, что для некоторых сочетаний "Товар-Склад" бывает несколько движений в течении дня, а нас интересует остаток только на конец дня (ну или начало), эта таблица фактов будет содержать не больше строк, чем исходная таблица с проводками.
Для связи с измерением "Период" у нас в этой таблице фактов будут два поля. Их физический смысл - "Дата появления остатка с таким значением на складе" и "Дата изменения этого значения". Например, если 1 января 2011 г на склад X попал товар Y в количестве 10 штук, а 10 января этот товара со склада был израсходован в кол-ве 5 штук, то для связи с измерение "Период" мы используем две даты - 1 января и 9 января. Если же больше движений по этому товару на этом складе не было, второй датой мы берем дату - сегодня (GETDATE()).
  в)но нам нужна связь с нашим обычным измерение "Дата". Здесь вполне очевидно напрашивается Many-To-Many, так как одному элементу измерения "Периоды" может соотв. более одного элемента измерения "Даты". Для этой связи нам нужна Bridge группа мер, в которой каждой дате мы соотносим те периоды, в которые эта дата попадает.
  г)Увязав все это в кучу, мы получаем снова полуаддитивную меру с остатками, но на этот раз без катастрофического разбухания таблицы фактов.
  д)Так как красоту подхода в бухгалтерии не оценят, а Альфред Нобель жил в докомпьютерную эпоху.. придется довольствоваться моральным удовлетворением... :-)
--
  Итак, поехали.
  а)Строим измерение "Период".
Именованный запрос в .dsv для этого измерения выглядит так:
/*Попарная комбинации всех дат из диапазона от начала аналитики до текущей даты*/
SELECT dbo.udfDateToInteger(d1.DATE_CURRENT) AS DATE_BEGIN_PERIOD_KEY/*Дата начала периода*/,
dbo.udfDateToInteger(d2.DATE_CURRENT) AS DATE_END_PERIOD_KEY /*дата конца периода*/,
 DATEDIFF([day], d1.DATE_CURRENT, d2.DATE_CURRENT) AS INTERVAL, 
 CONVERT(char(10), d1.DATE_CURRENT, 103) + '-' + CONVERT(char(10), d2.DATE_CURRENT, 103) AS N_PERIOD
FROM   dbo.udf_GetDateRange('20110801', GETDATE()) d1 
JOIN dbo.udf_GetDateRange('20110801', GETDATE()) AS d2 ON d1.DATE_CURRENT <= d2.DATE_CURRENT

а само измерение - так:
Картинка с другого сайта.

  б)Таблица фактов для группы мер с остатками.
select mr.C_MOVE, mr.C_PRODUCT, mr.C_WARE_HOUSE,  dbo.udfDateToInteger(mr.DATE_BEGIN) as DATE_BEGIN_KEY,  dbo.udfDateToInteger(mr.DATE_END) as DATE_END_KEY , mr.MOVE_REM from vOlapMoveRemByPeriods mr


  в)Таблица фактов F_BRIDGE_DATE_VALUES_IN_DATE_RANGES для промежуточной - Bridge группы мер , необходимой для Many-To-Many связи с измерением Даты.
SELECT         dbo.udfDateToInteger(d1.DATE_CURRENT) AS DATE_BEGIN_PERIOD_KEY,  dbo.udfDateToInteger(d2.DATE_CURRENT) AS DATE_END_PERIOD_KEY,  dbo.udfDateToInteger(dates_in_period.DATE_CURRENT) AS DATE_IN_PERIOD_KEY
FROM dbo.udf_GetDateRange('20110801', GETDATE()) AS d1 
JOIN  dbo.udf_GetDateRange('20110801', GETDATE()) AS d2 ON d1.DATE_CURRENT <= d2.DATE_CURRENT 
CROSS APPLY[dbo].[udf_GetDateRange](d1.DATE_CURRENT, d2.DATE_CURRENT) dates_in_period


  г)Связываем все это в структуре куба в dsv, строим нужны меры:
Картинка с другого сайта.

и прописываем Many-to-many связи
Картинка с другого сайта.

Деплоим, процессим, тестим. Теперь у нас есть три варианта реализации мер с остатками.
Идентичность значений можно проверить например таким запросом:
select 
{[cmRemByINCOME_OUTCOME],[REM_FOR_EVERY_DAY],[REM_BY_PERIODS]} on 0,
non empty [DimDate].[Hierarchy].[Month].&[201211].Children on 1 
from [Inventory-Cube]
--where{[DimWareHouses].[WareHouseParent].&[110119643]}


Картинка с другого сайта.

   д)Таким образом, мы реализовали одну задачу тремя способами.
Вопрос, в каких случаях от этого может быть практическая польза (ну кроме уважительного "Месье знает толк в извращениях" от специалистов MS BI :-) ), я постараюсь обсудить в следующей статье..
  Замечу, что этот подход хорошо работает если у нас есть дофига чего дофига где, но двигается оно не слишком часто.
Если у нас каждый день по каждому сочетанию "Товар-Склад" происходят изменения, то уменьшения таблицы фактов - не будет. А уменьшение производительности из за M-2-M обязательно произойдет.
Продолжение - следует.
(SSAS проект и скрипт для создания метаданных в реляционной базе можно взять здесь:https://www.dropbox.com/s/e42ueesskoexk83/Inventory-SSAS-Project.zip )
----------------
Кальманович Дмитрий.
автор: McCar добавлено: 04 фев 13 просмотры: 2502, комментарии: 0


предыдущие записи