Quantcast
Channel: SQL.ru: OLAP и DWH
Viewing all 1167 articles
Browse latest View live

проблема при процессинге куба

$
0
0
есть 3 сервера, находящиеся в разных доменах:
1. сервер-хранилище, SQL2000
2. сервер с кубами, SSAS2012
3. сервер с кубами, SSAS2014

на 2-м сервере построены кубики, настроен DataSource, обращающийся к 1-му серверу-хранилищу. Все работает, все отлично.

далее попытался развернуть куб на 3-м сервер, используя второй.
Т.е. на 2-м сервере в VisualStudio создал новый проект, скопировал куб из старого проекта. В св-вах проекта изменил сервер развертывания на новый сервер (3-й).

развертывание проходит успешно, а вот процессинг не идет. Пишет, что нет доступа к DataSource:
автор
Ошибки в реляционном модуле высокого уровня. Не удалось соединиться с источником данных с DataSourceID ....

В св-вах подключения прописано Windows Autentification, тест проходит успешно (подключение скорее всего происходит от пользователя 2-го сервера, из под которого ведется разработка).

Думаю, проблема в том, что во время процессинга 3-й сервер (хоть разработка и ведется на 2-м сервере) пытается подключиться к 1-му серверу-хранилищу и у него не получается (нет доступа).
Служба SSAS 3-го сервера запускается из под "NT Service\MSSQLServerOLAPService"
На 2-м сервере имя такое же, но процессинг кубов проходит успешно.

Подскажите, какому имени дать доступ к источнику данных на сервере-хранилище 1 для доступа к нему?

Не получается простая иерархия с датами.

$
0
0
Здравствуйте. Я новичек в кубах - осваиваю. Нарисовал куб, без иерархий корректно работает измерение Дата. А вот когда определяю иерархию "Год-Месяц-День", то по непонятной мне причине месяцы не в каждом году получаются, а один месяц в одном году, другой месяц в другом году. Полагаю что связи атрибутов не корректно определил. Как их правильно задать?

книга

$
0
0
Добрый день.

Подскажите пожалуйста, где можно скачать книгу "sql server analysis services 2008 и mdx для профессионалов"

Новый релиз Qlik Sense 3.0 и NPrinting 17.1

$
0
0
Уважаемые коллеги! Позвольте поделиться отличными новостями: у Qlik вышли новые версии продуктов:

• QlikView 12 SR3
• NPrinting 17.1 – теперь NPrinting работает не только с QlikView, но и с Qlik Sense!
• А так же вышла новая нашего продукта Qlik Sense 3.0

Что нового в Qlik Sense 3.0:
• Визуальный поиск (Visual Search) – в Qlik Sense 3.0 появилась функциональность Visual Search, которая позволяет пользователям осуществлять поиск по названию диаграмм, а также в их данных. Например, поиск по ключевому слову «продажи», чтобы найти все диаграммы, которые в описании имеют слово «продажи» и данные, включенных в них.
• Поддержка двунаправленный языков – в Qlik Sense 3.0, появилась поддержка двунаправленных (RTL) языков, и это больше, чем просто право выравнивания текста: Вы также увидите важные изменения, такие как диаграммы, которые отображают информацию в удобном формате RTL и Презентации справа налево.
• Time Aware Charts – новая линия схемы данных, которая автоматически показывает весь период времени, так что вы можете получить «вид с высоты птичьего полета» на ваши данные и будет включать в себя время как непрерывный измерения, даже если некоторые периоды не имеют никаких данных.
• Виджеты (Widgets) – Ранее известные как «QWidgets», это мастер построения расширений, который позволяет опытным пользователям получить доступ к некоторым возможностям визуального программирования расширений, используя только HTML и CSS. Пользовательскими объектами, созданные с помощью виджетов, можно централизованно управлять и повторно использовать.
• Унифицированные Hub – с QlikView 12. Клиентов, которые используют и QlikView 12 и Qlik Sense 3.0 теперь смогут получить доступ к своим приложениям из QlikView 12 и из Qlik Sense 3.0 из одной точки доступа - хаба. Обратите внимание, что это требует развертывания Qlik Sense 3.0 и недавно выпущенного QV12 SR3. Программы по-прежнему необходимо запускать на разных серверах: Приложение QlikView необходимо запустить с сервера QlikView, а приложение Qlik Sense необходимо запустить с сервера Qlik Sense – просто они видны с одной точки доступа.
• Визуальная подготовка данных – в Qlik Sense 3.0 включают в себя новый визуальный метод объединения данных, предназначенный сделать загрузку и объединение данных более доступными для пользователей, которые даже не знают, что такое моделирование данных! Каждая таблица представлена в виде круга, которые плавают на экране, и которые можно соединить друг с другом.
• Генерация приложений «на лету» (On Demand App Generation - ODAG) - Qlik оказывает помощь клиентам в получении представления от работы с большими объемами данных с использованием наших API-интерфейсов для создания приложений на лету, основанные на шаблоне приложений.
• Автоматическое геокодирование - Если набор данных включает в себя широту и долготу, профилировщик данные будут теперь автоматически выполнять функцию «GEOMakepoint», которая позволяет построить точки на объекте карты.
Все продукты доступны на портале Qlik.

С Уважением,
Георгий

Oracle Business Inteligence. Migration

$
0
0
Добрый день! Как можно перенести каталог вместе с отчетами, анализами и т.д из OBI 11g в OBI 11g? Кто-нибудь пробовал производить миграцию с OBI 11g на OBI 12c? Какой порядок действий? Пробовал по инструкции (возможно что-то не учел), вышла ошибка при импорте: "oracle.bi.migration.plugin.metadata.TransformBarException: Transformation failed. Check logs for failure messages".

Мейнстрим по ETL-ям

$
0
0
Доброго дня, коллеги.
А какие ETLки сейчас в мейнстриме по платформам/биз.областям?
Интересуют вести из окопов, а не Гартнер/job сайты.

Не могу разобраться как использовать junk dimension в аналитическом кубе (ms sql server)

$
0
0
Приветствую.

Необходимо в кубе отобразить некоторое количество (11) свойств сущности. Свойства битовые.
Чтобы не плодить кучу измерений, я так понимаю, необходимо использовать junk dimension.
Суррогатный ключ для свойств я рассчитаю а ля:
+
WITH bts AS
(   SELECT CAST(0 AS BIT) [bt]
    UNION ALL
    SELECT CAST(1 AS BIT)
)
,bts_pre AS 
(
    SELECT bts_1.bt AS bt1
          ,bts_2.bt AS bt2
          ,bts_3.bt AS bt3
          ,bts_4.bt AS bt4
    FROM bts AS bts_1
    CROSS JOIN bts AS bts_2
    CROSS JOIN bts AS bts_3
    CROSS JOIN bts AS bts_4
)
,bts_msk AS
(
          SELECT 
          CAST
          (bts_pre.bt1*POWER(2,0)
          +bts_pre.bt2*POWER(2,1)
          +bts_pre.bt3*POWER(2,2)
          +bts_pre.bt4*POWER(2,3)
          AS INT
          ) AS [bitmask]
          ,
          * 
FROM bts_pre
)

SELECT [bitmask]
      ,bt4 [св-во4]
      ,bt3 [св-во3]
      ,bt2 [св-во4]
      ,bt1 [св-во1]
FROM bts_msk
WHERE bitmask > 0
ORDER BY [bitmask];

В таблице фактов заполнил столбец значениями ключей.

Каким образом необходимо описать таблицу в источнике (аналогично запросу или иначе) и как создать измерение, чтобы была возможность выбора по столбцам и возможным комбинациям по строкам?

У меня получилось пока просто список из 15 строк, а это не то. :(

Подскажите где можно почитать или посмотреть примеры.

Well, dude, sometimes you eat the bear, sometimes the bear eats you.

Небольшие кубы можно считать внутри SLQ server

$
0
0
Допустим есть таблица tblSalesData с продажами, в которой несколько колонок географии Region1, Region2, Region3, SubRegion, Country. Также есть год, квартал, месяц продаж и колонки мер - стоимость продаж, маржа и к-во в штуках.
Используя встроенные документы Perl можно сгенерить скриптом суммы по всем комбинациям регионов и периодов:
+

# ONLINE IDE for editing = http://www.tutorialspoint.com/execute_perl_online.php
# Use codepad.org to generate SQL

my @regions = ('Region1', 'Region2', 'Region3', 'SubRegion', 'Country');
my @periods = (
      ['Period', 'M'],
      ['Quarter','Q']
);
foreach $Region (@regions){
foreach $TimePeriod (@periods){

print <<_SQL;
  --================================================================================
  -- Period: $TimePeriod->[1] $TimePeriod->[1]                                                           
  -- Region: $Region  
  --================================================================================
SELECT 
  '$Region' as GeoLevel,
  $Region as Geo,
  Product,
  Financial_Year,
  '$TimePeriod->[1]' as PeriodType,
  '$TimePeriod->[1]' as PeriodSubType,
  $TimePeriod->[0] as Period,
  Sum(Revenue) as Revenue, 
  Sum(Margin) as Margin,
  Sum(Qty) as Qty
FROM tblSalesData
GROUP BY $Region, Product, Financial_Year, $TimePeriod->[0]
UNION ALL
_SQL

}}


С помощью smallperl и простого батника можно развернуть этот скрипт в SQL. Затем скопипейстить в SSMS и создать create view вьюху, вырезав последний UNION ALL.

Следующий шаг - посчитать YTD периоды:

+

# ONLINE IDE for editing = http://www.tutorialspoint.com/execute_perl_online.php
# Use codepad.org to generate SQL

my @regions = ('Region1', 'Region2', 'Region3', 'SubRegion', 'Country');


#========================================================
foreach $Period (1..12){
foreach $Region (@regions){

print <<_SQL_YTD;
  --================================================================================
  -- Period: YTD M $Period                                                           
  -- Region: $Region  
  --================================================================================
  SELECT 
  '$Region' as GeoLevel,
  $Region as Geo,
  Product,
  Financial_Year,
  'YTD' as PeriodType,
  'M' as PeriodSubType,
  $Period as Period,
    Sum(Revenue) as Revenue, 
    Sum(Margin) as Margin,
    Sum(Qty) as Qty
  FROM tblSales
  WHERE Period between 1 and $Period
  GROUP BY $Region, Product, Financial_Year
UNION ALL
_SQL_YTD

}}



И наконец, MAT периоды:
+

# ONLINE IDE for editing = http://www.tutorialspoint.com/execute_perl_online.php
# Use codepad.org to generate SQL
#https://www.codechef.com/ide

my @regions = ('Region1', 'Region2', 'Region3', 'SubRegion', 'Country');
 
my @periods = 
(
#------------2015
 
"'2015-01-01'",
"'2015-02-01'",
"'2015-03-01'",
"'2015-04-01'",
"'2015-05-01'",
"'2015-06-01'",
"'2015-07-01'",
"'2015-08-01'",
"'2015-09-01'",
"'2015-10-01'",
"'2015-11-01'",
"'2015-12-01'",
#------------2016
 
"'2016-01-01'",
"'2016-02-01'",
"'2016-03-01'",
"'2016-04-01'",
"'2016-05-01'",
"'2016-06-01'",
"'2016-07-01'",
"'2016-08-01'",
"'2016-09-01'",
"'2016-10-01'",
"'2016-11-01'",
"'2016-12-01'"
 
);
#========================================================

foreach $Period (@periods){
foreach $Region (@regions){
print <<_SQL;
  --================================================================================
  -- Period:  MAT M$Period                                                          
  -- Region:  $Region  
  --================================================================================
  SELECT
   '$Region' as GeoLevel,
   $Region as Geo,
   Product,
   year($Period) as Financial_Year,
   'MAT' as PeriodType,
   'M' as PeriodSubType,
   month($Period) as Period,
    Sum(Revenue) as Revenue, 
    Sum(Margin) as Margin,
    Sum(Qty) as Qty
   FROM tblSales
   WHERE SalesPeriod between DATEADD(month, -11, $Period) and CONVERT(datetime, $Period, 110)
   GROUP BY $Region, Product
   UNION ALL
_SQL

}
}


Для вычисления MAT периодов необходимо иметь колонку SalesPeriod dattime, сделанную из Года+Месяц+01, чтобы по ней брать интервал в 12 периодов.
По всем этим запросам можно сделать вьюхи - единственный геморрой - править периоды в perl-скриптах каждый месяц, когда приходят новые данные продаж.

После можно сгенерить куб insert into.
Если сделать джоин такого куба с самим собой по всем измерениям и типам периодов, только взять dateadd -1 месяц - мы автоматически получим возможность посчитать приросты (cp-pp)/pp.

push mode cube processing - дайте пример у кого есть

$
0
0
Коллеги,

у кого есть ГОТОВЫЙ пример XMLA команды Process для push mode?

Как ни странно, но в сетке нереально найти, а по убогому описанию в MSDN хрен сам сконструируешь вручную...

Наперед спасибо.

OBI11g. Кодировка

$
0
0
Добрый день.

Подскажите плз как победить след. ситуацию:
в промпте отчета выбираю филиал, например, 'Москва'. Отчет ничего не возвращает. Смотрю порожденный BI селект там вместо русских букв 'МПсква'.

Вопрос.
Где правильно настроить кодировки в BI, чтоб запрос "уходил" именно так, как я выбираю в промпте?

На всякий случай в nls_database_parameters бд хранилища стоит american.america.AL32UTF8

Как подружить Analysis services и ODBC?

$
0
0
Коллеги, привет.
Пользуемся многомерным режимом в SSAS.
Хочется подключиться к одной из БД через ODBC, но как это сделать я не могу найти.
Всюду пишут что можно сделать через OLEDB provider for ODBC или .Net ODBC provider, но я не смог найти ничего подобного.

Пожалуйста, помогите, возможно был уже опыт с этим.
Заранее благодарен.

Интеграция Obi11g, MS AD, Weblogic

$
0
0
Коллеги, добрый день.

Кто делал сабж - скиньте плз ссылочку на последовательность шагов.
В AD группы уже созданы, пользователи к ним приписаны. Как теперь их всех в BI увидеть?

При самостоятельном поиске наиболее вменяемой показалась вот эта инструкция

http://www.rittmanmead.com/2010/11/oracle-bi-ee-11g-security-integration-with-microsoft-active-directory/

но она от 2010 года. И в ней нет никаких действий в репозитории BI.
Может так и надо, конечно, но подозрительно... хоть какой-нибудь инит блок-то надо прописать?

OLAP из MySQL в Visual Studio 2010

$
0
0
Добрый день!

Пытаюсь сделать OLAP куб из БД MySQL

Есть:
MySQL 5.7 x64 на вирт.машине (Open Server).
MS Visual Studio pro 2010 sp1 на хосте.
MS SQL Server 2012 Standart на хосте.
Коннекторы MySQL Connector Net 6.9.8 / MySQL for Visual Studio 1.2.6 (установлено через MySQL Installer - Community)

Создал проект:
Bussiness intelligence -> Analysis services

в Data sources:
Создал подключение к БД MySQL, настроек там нет (кроме адреса и учетки) - тест - ОК.

в Data sources views:
Создаю view, выбираю таблицы, подтягиваю related, нажимаю finish, получаю ошибку:
Проблема №1:
MS VS 2010
TITLE: Microsoft Visual Studio
------------------------------

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[test_db].[branches]' at line 2

------------------------------
BUTTONS:

OK
------------------------------

Какую таблицу бы я не выбирал, ошибка сохраняется, меняется только название таблиц.
Пробовал в MySQL
set global sql_mode=ANSI_QUOTES
не помогло.

Нагуглил решение, в Data source в подключении установить
Sql Server Mode = true
Ставлю.
Заново создаю view - успех - открывается дизайнер!)

Проблема №2:
Но дальше вижу такую картину:
В дизайнере > в таблицах > в ключевых полях
Data type = Int32
А у меня в БД MySQL по факту указано
UInt64 (BIGINT UNSIGNED)
Как следствие не могу связать поля таблиц, потому как НЕ ключевые поля в Дизайнере остались
UInt64
Между Int32 и UInt64 связь создать невозможно.

Перетаскивать все таблицы на
Int32 
я пока не готов, но это все, что я пока могу сделать сам, хотелось бы найти грамотное решение вопроса.

Прошу помощи:
Уже не знаю как гуглить...
Уважаемые знатоки, пожалуйста, направите на путь истинный?
Возможно я не корректно решил проблему №1 и теперь пожинаю такие плоды?

Oracle BIEE, как сделать верным общий итог ?

$
0
0
Делаю обьединение в одной колонке прописываю:
FILTER("Инфо.(на дату 1)"."Сумма1(всего)") USING ("XXX"."Группа1" = 1))+
FILTER("Инфо.(на дату 1)"."Сумма2(всего)") USING ("XXX"."Группа2" = 2))
во второй:
FILTER("Инфо.(на дату 1)"."Сумма3(всего)") USING ("XXX"."Группа3" = 1))+
FILTER("Инфо.(на дату 1)"."Сумма4(всего)") USING ("XXX"."Группа4" = 2))
Общий итог не суммируется т. к. колонка текстовая получается.
Вопрос как это можно исправить

Клиент Excel генерирует MDX =(

$
0
0
добрый день!!!

Подскажите пожалуйста по моим граблям:

Имеется куб табличной модели (DAX), в качестве клиентского приложения использую Excel (2016 года), ранее использовал PowerBI Desktop в качестве клиента, для проверки формул мер (на этапе проектирования).

Собственно сам вопрос, работа с кубом в Excel жутко тормозит по сравнению PBI, начал искать проблему. В Profiler увидел что Excel общается с SSAS на mdx запросах но модель то табличная, как заставить его работать на DAX запросах?

DataMining SSAS найти Importance и AdjustedProbability для всех правил Association модели

$
0
0
ДД.
Есть задача получить из Association модели DataMining SSAS все правила и для них параметры.
С помощью SELECT FROM <model>.CONTENT выгружаю все из модели, в том числе и Support и Probability для каждого правила.
Ну также еще нужно еще знать для правил их Importance и AdjustedProbability.
Этого запрос не дает.
Поиском нашел про AdjustedProbability - https://social.msdn.microsoft.com/Forums/sqlserver/en-US/90b06a21-dd15-4da1-88da-f4a59db41c6e/probability-vs-adjusted-probability?forum=sqldatamining
По ссылке есть формула AdjustedProbability = PredProb * (1 - MargProb) ^ Constant
Но из нее тоже не очень ясно как ее посчитать, так как не известна Constant в формуле, хотя marginal_probabilty в запросе есть.
По Importance вообще ничего толком не нашлось.
Может, кто решал аналогичные задачи и подскажет, где добыть Importance и AdjustedProbability.
Версия SQL 2012.
Заранее всем спасибо!

workbench итого по колонкам, итого по строкам?

$
0
0
добрый день, подскажите можно ли в schema workbench реализовать вывод итоговых строк после закрытия группы:

например вывод статистики показателя

подразделениегод1год2...годNитого по годам
отдел11012...945
отдел1810...1565
..................
отделN430...146
Итого по отделам18363...120547
как добавить синие итоги по строкам, или красные итоги по колонкам?

Проблема при агрегации данных за квартал

$
0
0
Суть следующая:

Существует временное измерение, в нем есть две иерархии:
Дата: Год-Месяц-День, Год с кварталами: Год-Квартал-Месяц-День.

Существует некая мера ДвижениеСумма, которая отражает суточное изменение (разницу) в движениях товара.
+
Т.е. если было 5 единиц чего-то, а стало 7, до значение меры за этот день будет 2, а если было 5, а стало 4, то -1

Функция агрегации у данной меры: Sum, связь с временным измерением по дню.

По этой мере создано вычисление, которое вычисляет остаток на конец дня, вот выражение:
sum(PeriodsToDate([Время].[Дата].[(All)], [Время].[Дата].currentmember), [Measures].[ДвижениеСумма])
Поведение вычисления выбрано по мере ДвижениеСумма.

В итоге остаток вычисляется следующим образом: остаток на день берется корректный, на месяц равен остатку на последний день месяца, на год = на последний день года. Здесь все нормально. А вот остаток на квартал берется как какая-то разница только между чем и чем так и не понял, скорее всего между остатками на конец кварталов.


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




SQL Server:
+
Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
Oct 19 2012 13:38:57
Copyright (c) Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)

Oracle BI Пиво 2016

$
0
0
Привет!

Многие меня спрашивают о том, будет ли Oracle BI Пиво в этом году.
Отвечаю - будет в конце августа. Скорее всего 25 августа 2016.

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

От Оракла, конечно, тоже будет много докладов.

Ну и пиво будет, куда без него.

Соединение ограничений в подкубе

$
0
0
Доброе время суток!

Пытаюсь в подкубе соединить два ограничения.
SELECT
	[Measures].[Отгрузки шт] ON 0,
NON EMPTY
	[Торговые точки].[Код ТТ].[Код ТТ]*
	[Торговые точки].[Тип клиента].[Тип клиента]
ON 1
FROM
(SELECT
	(
		{([Торговые точки].[Тип клиента].&[2],
		LastPeriods(2,[Время].[Месяц].&[2016-04-01T00:00:00]),
                [Торговые точки].[Клиент].[Клиент] - [Торговые точки].[Клиент].&[313])}
		+
		{({[Торговые точки].[Код ТТ].&[10],
		[Торговые точки].[Код ТТ].&[11],
		[Торговые точки].[Код ТТ].&[12]},
                LastPeriods(2,[Время].[Месяц].&[2016-04-01T00:00:00]))}
	)
	ON 0
	FROM PROFIT)

Пишет ошибку "Элементы, кортежи и наборы в функции Add должны использовать одинаковые иерархии".

Переписал так
SELECT
	[Measures].[Отгрузки шт] ON 0,
NON EMPTY
	
	[Торговые точки].[Тип клиента].[Тип клиента]*
	[Торговые точки].[Код ТТ].[Код ТТ]
ON 1
FROM
(SELECT
	(
		{([Торговые точки].[Тип клиента].&[2],
		LastPeriods(2,[Время].[Месяц].&[2016-04-01T00:00:00]),
		[Торговые точки].[Клиент].[Клиент] - [Торговые точки].[Клиент].&[313],
		[Торговые точки].[Код ТТ].[Код ТТ])}
		+
		{([Торговые точки].[Тип клиента].[Тип клиента],
		LastPeriods(2,[Время].[Месяц].&[2016-04-01T00:00:00]),
		[Торговые точки].[Клиент].[Клиент],
		{[Торговые точки].[Код ТТ].&[10],
		[Торговые точки].[Код ТТ].&[11],
		[Торговые точки].[Код ТТ].&[12]}
		)}
	)
	ON 0
	FROM PROFIT)

Работает. Но по времени значительно дольше

Подскажите, как можно соединить ограничения более оптимально?
Viewing all 1167 articles
Browse latest View live