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

Как вы храните комменты?

$
0
0
Всем привет!
В источнике есть таблица комментариев, в ней хранится текст, дата создание, id сотрудника, id клиента, id того что коментируем, тип того что коментируем (заявка, звонок и т.д.). Для каждого id может быть несколько комментов, не все заявки, звонки и т.д имеют комменты. Анализ идет только на вхождение определенных слов в тексте.
По Кимбалу это Dim, но тогда нужно Bridge делать. Комменты на 90% уникальны. Как факт она тоже не уперлось, к тому же если как факт ее не получится подцепить со звонками, т.к. это факт, а не справочник. Думаю все таки разбивать на 3 таблицы (на 3 типа того что коментируем) и цеплять к соответствующим фактам и делать bridge как нибудь.

Что нужно установить, чтобы можно было работать над проектами SSAS?

$
0
0
раньше у меня был установлен полный пакет SQL Server 2008 - всё работало. Там был Sql Server Data Tools, прямо в меню "пуск" в одной из папок.
сейчас - не понятно. SSAS установлен, а инструмента для создания проекта куба нет.
прочитал, что он перемещён в установщик Visual Studio.

Запустил установщик VS2017, выбрал в установщике галочку (см. скриншот). Запускаю студию - среди проектов её нет. Ищу "Data Tools" в пуске - не нахожу. Что я делаю не так?

Microsoft PowerView

$
0
0
Пытаюсь сообразить, где вообще достать можно эти PowerView и пр. для ms office 365?
Даже на самом сайте вбиваю запрос (скриншот), всё равно не выдаёт. Всё облазил.

Форматирование ячеек

$
0
0
Здравствуйте!

Есть MDX-запрос, который выгружает нужные данные в SSMS.

+MDX-запрос
WITH
MEMBER [Measures].[Мера] AS 
	[Measures].[Отгрузки шт]	
	, BACK_COLOR=IIF([Measures].[Отгрузки шт]>20000, RGB(0,255,0), RGB(255,0,0))  
	, FONT_SIZE=20
	, FORMAT_STRING = '# ###' 
SELECT
[Measures].[Мера] ON 0,
[Города].[Регион города].[Регион города] ON 1
FROM (SELECT ([Время].[Месяц].&[2018-07-01T00:00:00]) ON 0 FROM PROFIT)
CELL PROPERTIES VALUE, BACK_COLOR, FONT_SIZE,  FORMATTED_VALUE //,FORMAT_STRING

1. Правильно понимаю, что ячейки можно форматировать только для мер и параметры задавать только в MEMBER (то есть не перед записью ON 0)?

2. Указываю другой FONT_SIZE, но почему то не изменяется. Почему так?

3. Возможно задать курсив или жирный шрифт?

4. В FORMAT_STRING указываю, что не нужны цифры после запятой справа и разрядность. Но если миллион, то надо указывать так '# ### ###'. Возможно ли разрядность указать универсально?

5. Если запускать в SSMS, то ячейки закрашиваются. Если запускать от Excel, то не закрашиваются. В Excel не предусмотрено, чтобы это работало (кроме случая условного форматирования от excel) или можно где то настроить?

Доступ только к определенным Subject Area-м d OBIEE10g

$
0
0
Можно ли дать доступ группе пользователей только к опрееленным задачам в репозитории.
Имеется в виду не закрыть некоторые и оставить доступ к другим, а сделасть так чтобы были доступны некоторые, а при добавлении новых задач в репозиторий они(новые задачи) были не видны данной группе

Как заставить кубик НЕ показывать нули в эксель файле?

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

пользователи не хотят видеть нули в сводной таблице эксель файла.
Подскажите пожалуйста, есть какая-то настройка в SSAS кубе, которая позволяет это сделать? Т.е. чтобы нули в суммах не показывались, а вместо них просто была пустая ячейка?

Спасибо.

Сменил пароль и Olap перестал процессится

$
0
0
Добрый день форумчане.

Сменил Пароль на sql и Олап перестал процессится,

Ошибка OLE DB: Ошибка OLE DB или ODBC : Login failed for user 'beg'.; 28000.

Уже все "перетыкал" пароль везде новый, в том числе в дата сурсе Олап куба.

Хелп форумчане.

Данные из разных кубов последовательно

$
0
0
Задача поставлена такая: есть куб с данными с 2010 года. Нативные данные для куба есть только с осени 2017 года. В куб нужно внести новое измерение. Соответственно, для сохранения старых данных, нужно делать новый куб. НООО!!!!!! надо сделать так чтобы конечный пользователь не увидел наличия двух кубов (до даты и после даты) и объединить два куба в один. Брать в этот куб данные до определенной даты из первого, а после этой даты из второго. Условно с 1 января 2019 года

Рекоммендованые готовые сервера под AS?

$
0
0
Привет!

Слышал ли кто-то о референсных серверных сборках под SSAS (MD)?
Аналогично FastTrack-у для SQL.

Имеются в виду именно формальная рекоммендованность для AS-MD.

Azure ML

$
0
0
Всем привет.

Подскажите как жить дальше.... Решил поиграться с модным Azure ML:
1. Создал простой эксперимент - прогнозирования продаж.
2. Для машинного обучения использовал алгоритм "Классификация и регрессия (decision forest regression)", на вход подал выборку по магазинам с ежедневными продажами за 2016 и 2017 год.
3. Получил некий прогноз, плевать на точность.

Затем на основе "Эксперимента" создал веб службу, теперь пытаюсь подать данные для прогноза на 2018 год, не зависимо от дня в разрезе каждого магазина я получаю одну и ту же цифру, но если подать данные в пределах обучающего периода (2016 и 2017 год), то цифра варьируется. Как использовать алгоритм обученной модели для прогноза, т.е. для выборки вне обучающем периоде? Что- то еще нужно сделать? С Классификацией гораздо проще....

Гугл молчит, а спрашивать больше не у кого.... Выручайте пожалуйста!!! за ранее всем спасибо, за любые подсказки.

Полуаддитивная мера требует наличия измерения времени

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


Есть Measures sum(), работает нормально, добавляю Measures(Last non empty) и вылизает ошибка "Полуаддитивная мера требует наличия измерения времени". Подскажите, как решить проблему?

Поиск решения по ускорению получения среднего значения.

$
0
0
Добрый день!
Имеется некий куб, в котором имеется аналитика по продажам и движениям товара, существует задача получения показателя оборачиваемости.

Есть меры [ДвижКолво] и [ДвижСумма], которая отражает проводки по движению товара (закпуки, перемещения по торговым точкам и складам, продажи итд). Соответственно остаток высчитывают (через вычисление), как:
[ОстатокКолво]: sum(PeriodsToDate([Время].[Дата].[(All)], [Время].[Дата].currentmember), [Measures].[ДвижКолво])
[ОстатокСумма]: sum(PeriodsToDate([Время].[Дата].[(All)], [Время].[Дата].currentmember), [Measures].[ДвижСумма])


Далее смотрим формулу оборачиваемости. Оборот (дн) = Средний товарный запас / Средний объем продаж за выбранный период.

в mdx для вычисления использую простую формулу:
по количеству:
AVG(DESCENDANTS([Время].[Дата].CurrentMember, [Время].[Дата].[День]), [Measures].[ОстатокКолво]) /
AVG(DESCENDANTS([Время].[Дата].CurrentMember, [Время].[Дата].[День]), [Measures].[ПродажиКолво])

в денежном выражении:
AVG(DESCENDANTS([Время].[Дата].CurrentMember, [Время].[Дата].[День]), [Measures].[ОстатокСумма]) /
AVG(DESCENDANTS([Время].[Дата].CurrentMember, [Время].[Дата].[День]), [Measures].[ПродажиСебестоимость])


где [ПродажиКолво] и [ПродажиСебестоимость], соответствующие меры куба.


Проблема заключается в очень долгом построении отчета на основании данных куба при использовании данных вычислений, если сравнивать с другими мерами и вычислениями. Понимаю, что функция avg() может быть очень требовательной к ресурсам, но есть ли подходы, с помощью которых можно увеличить скорость обработки?


+ система
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)

Подсчет кол-ва месяцев.

$
0
0
Всем привет. Ребят уже перепробовал многие варианты, но что то неполучается.
Как мне mdx запросом получить кол-во месяцев. Например:
Текущей месяц май-кол-во месяцев предшествующих 5 в т.ч май.
Получается как нарастающий итог, но только по кол-ву дат.

SSAS + Excel поиск по атрибуту очень большого измерения

$
0
0
Доброго дня всем.

В кубе имеется измерение, построенное на таблице, насчитывающей примерно 50 млн записей.
Каждая запись имеет уникальный ключ - X (единственный столбец)
На таблице построен уникальный индекс по ключу X

Измерение в кубе имеет два атрибута из этой таблице. Ключом измерения является значение X, по которому происходит связка с таблицей фактов.

Куб используется посредством Excel, где пользователи хотят в качестве фильтра использовать атрибуты этого измерения.
Поиск по конкретному значения любого из атрибута длится ооочень долго - не менее 10 минут.

Вопрос: как ускорить поиск по значению атрибута?

Индекс по столбцу атрибута маловероятен, так как админ БД не я.

Сумма уникальных значений

$
0
0
Знатоки, прошу помощи, горят сраки сроки.
Нарисовал свой первый куб и столкнулся с проблемой.
Есть размерности дата, отделение, клиент.
Есть мера сумма и кол-во
Проблема в том, что клиент может повторяться много раз за один и тот же день и поэтому когда я считаю сколько он повторяется и рядом вывожу сумму, она суммируется за все повторения.
Как правильно выводить сумму только уникальных значений меры сумм для любой размерности?

Заранее благодарю откликнувшихся.(с большой охотой почитаю что-то сам, если посоветуете)

Datastage mssql refcursor из хранимой процедуры

$
0
0
Согласно документации DS такой изврат для MSSQL поддерживает, но не получается настроить Stored procedure stage
вроде на вкладке Output-column видно маппирование в виде
<процедура>;1.<поле 1>
<процедура>;1.<поле 2>
...
<процедура>;1.<поле N>

как правильно заполнить вкладку parameters?
Parameter Name Maps to Column Parameter maker Parameter type
ReturnValue что тут? ? CursorOutput
dateto что тут? '2018-09-16' Input

процедура имеет один входной параметр

Поиск в иерархии

$
0
0
Здравствуйте.

Есть иерархия:

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

Из неё нужно получить элемент иерархии (Uniquename) по ID.
Сейчас это делаю так:

WITH
MEMBER [Measures].[Uniquename] AS [Work Item Tree].[Work Item Tree Hierarchy].CurrentMember.Uniquename
SELECT {[Measures].[Uniquename]} ON 0,
FILTER 
( 
	(Descendants([Work Item Tree].[Work Item Tree Hierarchy].[Work Item Tree], [Work Item].[System_Id].&[12345])),
	[Work Item].[System_Id].&[12345]
)
ON 1
FROM [Work Item]


При этом возвращается не искомый, а родительский элемент, в котором он находится.
Как получить искомый?

Вопрос по MDX-запросу.

$
0
0
Здравствуйте!

Есть MDX-запрос
+MDX-запрос
WITH
MEMBER [Цена] AS
	(CASE WHEN [Measures].[Отгрузки шт]<>0 THEN
		[Measures].[Отгрузки сумма без НДС]/[Measures].[Отгрузки шт]
	END)
SELECT
	{[Measures].[Отгрузки шт],
	[Measures].[Отгрузки сумма без НДС],	
	[Цена]}
ON 0,	
	NONEMPTY([Торговые точки].[Код ТТ].[Код ТТ],[Measures].[Отгрузки шт])*
	NONEMPTY([Продукция].[Код продукции].[Код продукции],[Measures].[Отгрузки шт])*	
	[Время].[Дата].[Дата]
ON 1
FROM
	(SELECT
		([Время].[Месяц].&[2018-01-01T00:00:00]:[Время].[Месяц].&[2018-05-01T00:00:00],
		[Торговые точки].[Код ТТ].&[00001ГРД1],
		[Продукция].[Код продукции].&[00001]
		) ON 0
	FROM
		PROFIT)

Получаем такой результат по дням
Код ТТКод продукцииДатаОтгрузки штОтгрузки сумма без НДСЦена
Код ТТ1Код продукции101.01.20181100100
Код ТТ1Код продукции102.01.20181100100
Код ТТ1Код продукции103.01.2018nullnullnull
Код ТТ1Код продукции104.01.2018216080
Код ТТ1Код продукции105.01.2018324080
Код ТТ1Код продукции106.01.20181100100
..................

Но тут задачка интересная, которую решаю. Нужно промаркировать строки, где идет снижение цены от базовой цены больше чем на 9%. То есть маркируем акции. Написал MDX-запрос и завис.

+MDX-запрос
WITH
MEMBER [Дельта] AS 0.09
MEMBER [Цена] AS
	(CASE WHEN [Measures].[Отгрузки шт]<>0 THEN
		[Measures].[Отгрузки сумма без НДС]/[Measures].[Отгрузки шт]
	END)
MEMBER [Предыдущая цена] AS //?
	(CASE WHEN [Цена] = NULL THEN
		[Предыдущая цена]
	ELSE
		([Время].[Дата].CurrentMember.PrevMember,[Цена])
	END)
MEMBER [Отклонение] AS
	(CASE WHEN [Предыдущая цена] <> 0 THEN
		[Цена]/[Предыдущая цена] - 1
	END)
MEMBER [Предыдущая маркировка] AS //?
MEMBER [Маркировка] AS //?
	(CASE WHEN [Отклонение] <= - [Дельта] THEN
		'Да'
	WHEN [Отклонение] < [Дельта]  AND [Предыдущая маркировка] = 'Да' THEN
		'Да'
	END)
SELECT
	{[Measures].[Отгрузки шт],
	[Measures].[Отгрузки сумма без НДС],	
	[Цена],
	[Предыдущая цена],
	[Отклонение],
        [Предыдущая маркировка],
        [Маркировка]}
ON 0,	
	NONEMPTY([Торговые точки].[Код ТТ].[Код ТТ],[Measures].[Отгрузки шт])*
	NONEMPTY([Продукция].[Код продукции].[Код продукции],[Measures].[Отгрузки шт])*	
	[Время].[Дата].[Дата]
ON 1
FROM
	(SELECT
		([Время].[Месяц].&[2018-01-01T00:00:00]:[Время].[Месяц].&[2018-05-01T00:00:00],
		[Торговые точки].[Код ТТ].&[00001ГРД1],
		[Продукция].[Код продукции].&[00001]
		) ON 0
	FROM
		PROFIT)

Результат должен быть таким.
Код ТТКод продукцииДатаОтгрузки штОтгрузки сумма без НДСЦенаПредыдущая ценаОтклонениеПредыдущая маркировкаМаркировка
Код ТТ1Код продукции101.01.20181100100nullnullnullnull
Код ТТ1Код продукции102.01.201811001001000nullnull
Код ТТ1Код продукции103.01.2018nullnullnullnullnullnullnull
Код ТТ1Код продукции104.01.2018216080100-0.2nullДа
Код ТТ1Код продукции105.01.2018324080800ДаДа
Код ТТ1Код продукции106.01.20181100100800.25Даnull
..............................

1. Данные выгружены по дням. Есть поле [Предыдущая цена], который вытягивает цены предыдущей строки, то есть цена предыдущего дня. Период в субкубе указан с первого 1 января 2018. Первая строка берется из 31.12.2017 г. или 01.01.2018?

2. Отгрузки бывают не ежедневные, поэтому предыдущая цена должна игнорировать null. То есть из таблицы: для 4-ой строки предыдущая цена берется из второй строки. Как правильно написать MEMBER?

3. Есть MEMBER [Маркировка]. Улавливает снижение цены больше 9% и маркирует. Если повышение цены до 9 % нету, но в предыдущей строке есть маркировка, то продолжает маркировать. В остальном случае не маркирует. Тут формула смотрит на предыдущую маркировку. Также игнорируются строки null. То есть MEMBER [Маркировка] должна посмотреть на текущий MEMBER [Предыдущая маркировка], а MEMBER [Предыдущая маркировка] берет из предыдущей строки с учетом null MEMBER [Маркировка].Как правильно написать MEMBER? Как правильно написать MEMBER [Предыдущая маркировка]?

Пока игнорируем такие случаи:
- в первой строке снижение цены, то есть акция
- двойное снижение цен (которые больше дельты)
- двойное повышение цен (которые больше дельты) после снижения цен
- само повышение цен
- в какой то один день повышение цен от базовой (не акционной) цены.

Aggregations в SSAS

$
0
0
Просьба помочь со следующей проблемой.

Есть OLAP Куб, сделанный в SSAS. В кубе 10 партиций в среднем по 2,5 ГБ (около 28 млн. строк в каждой). Данные в партиции выгружены на конец каждого месяца, соответственно в каждой партиции только одна дата - конец соответствующего месяца.
13 измерений. 13 вычисляемых мер (в разделе Calculations).
NullProcessing для мер выставлен в значение Preseve (кроме одной количественной меры).
Для ускорения работы куба создаю Агрегаты. Делаю пока только для одной партиции, чтобы посмотреть размер. Агрегат всего по двум измерениям (Дата и Подразделение) для одной единственной партиции выходит равным около 4,5Гб. Т.е. больше размера партиции! При том что в Design

Почему такое может быть? И как уменьшить?

В измерении около 36тыс. дат. Но в партиции непосредственно только одна дата используется. Может он для остальных дат, для которых нет значения проставляет 0 и это так влияет на размер?

Ещё не могу понять как интерпретировать отображение рассчитанных агрегатов в режиме Advanced View. Там строки - все измерения, столбцы (A0 и A1) - агрегаты. Но в моём случае, хоть и указано для двух измерений AggregationUsage = Default, а для остальных None, почему-то галочка стоит только одна, в столбце A1 напротив Даты. А в столбце A0 напротив Подразделения никакой галочки нет (хотя свойство AggregationUsage = Default) , и вообще в столбце A0 галочки нет нигде. Что это значит?

Буду благодарен за любую помощь.

Расчет остатков в кубе

$
0
0
Коллеги, помогите, пожалуйста, разобраться с расчетом остатков в OLAP кубе.
Система Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64) Jun 17 2016 19:14:09 Enterprise Edition
Клиент Excel 2013.
Делаю прототип OLAP куба для расчета остатков и движений товара.
Таблица фактов:
Дата, Продукт, Склад, Клиент, Движение Товара в упаковках (расход”-“;приход “+”), Начальный остаток, Конечный остаток.
Сумма по движениям товара за период будет положительна или отрицательна, смотря чего было больше прихода или расхода.
Начальный остаток на дату равен сумме приходов и расходов товара в диапазоне от начальной даты в таблице фактов, до даты текущей строки в таблице фактов не включительно.
Конечный остаток на дату равен сумме приходов и расходов товара в диапазоне от начальной даты в таблице фактов, до текущей даты текущей строки в таблице фактов, включительно.
Необходимо считать движение товара, начальный и конечный остаток на любой период.
Сделал SSAS Olap куб с 4мя измерениями: Товар, Клиент, Склад, Время.
И тремя мерами: ДвижениеТовара(SUM), НачальныйОстаток(LastNonEmpty), КонечныйОстаток(LastNonEmpty).
С движением все просто: считает правильно в любых разрезах.
С остатками беда: правильно считает, только если в столбец вывести даты. Местами ошибается, если даты убрать в фильтр и в столбец вытащить месяца. С годами ошибается почти всегда.
Остатки проверяю по формуле: начальный остаток + движение=конечный остаток
Что я делаю не так? Как правильно считать остатки на начало и конец периода в кубе?
Спасибо.
Viewing all 1167 articles
Browse latest View live