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

Исключить из суммирования в cross таблице cognos определенную строку.

$
0
0
Есть cross таблица со строками и итогом по строкам:

Строка 1 - 11
Строка 2 - 12
Строка 3 - 13
Итог 1 - 36

Как для Итог 1 исключить суммирование по строке 2.
То есть чтобы Итог 1 = 24

Можно ли ограничить кол-во выбираемых строк при обработки измерения ?

$
0
0
Можно ли ограничить кол-во выбираемых строк при обработки измерения ? Например выбрать из таблицы только первые 100 000.

в одной ОЛАП-базе одинаковые по сути размерности на разные таблицы

$
0
0
есть ОЛАП-база, а в ней 4 похожих куба. Отличаются только таблицами клиентов. Точнее даже справочник клиентов один (основной) и три вьюхи, фильтрующие клиентов по типам примерно такого вида:
select id, Name from Clients
where TypeId = ...

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

Все эти кубы находятся в одной базе.
Как я понял, внутри базы можно создать размерности (аналог SharedDimensions в MSAS2000) и использовать их в разных кубах.
Но мне нужно, чтобы размерность "Клиенты" во всех кубах называлась одинаково, но ссылалась на разные справочники.
При этом я не могу создать 3 разные размерности с одним именем.

Как можно выйти из этой ситуации?
Не создавать же несколько размерностей с именами "Клиенты Тип1", "Клиенты Тип2"...

Настраиваемый список для сортировки

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

Возможно в MDX-запросе сделать настраиваемый упорядоченный список для сортировки по атрибуту?

Заданный упорядоченный список
Список
Пункт4
Пункт3
Пунтк1
Пункт5
Пункт2


Результат сортировки
ГородСписокТТОтгрузки
Город1Пункт4ТТ1100
Город1Пункт3ТТ2200
Город1Пункт1ТТ3320
Город1Пункт5ТТ4350
Город1Пункт2ТТ5150
Город2Пункт3ТТ6100
Город2Пункт1ТТ7200
Город2Пункт2ТТ8300
Город2Пункт2ТТ9200
Город3Пункт5ТТ10120
Город3Пункт5ТТ11150
Город3Пункт2ТТ12150

SELECT
    [Measures].[Отгрузки шт] ON 0,
NON EMPTY
    [Города].[Город].[Город]*
    [Торговые точки].[Список].[Список]*
    [Торговые точки].[ТТ].[ТТ]
ON 1
FROM
    Profit
WHERE
     [Время].[Месяц].&[2016-06-01T00:00:00]

Добавление пользователей к существующей роли

$
0
0
Всем привет, прошу Вашей помощи!

Вкратце: Есть куб (Табличная модель), в котором создал динамическое администрирование, на основе таблицы "Права доступа" (расположенной в DWH), в эту таблицу будут добавлять новых пользователей. Теперь стоит задачи "Раз в день актуализировать перечень пользователей между таблицей и существующими пользователями SSAS (в определенной БД), но ум приходит только SSIS пакет.

Но ETL модель построена на T-SQL, засунутая в Джоб, хотелось бы там дописать эту часть логики, но ума не прилажу как можно в T-SQL добавить пользователя в существующию роль БД SSAS, подскажите пожалуйста. ASSP.dll не подходит т.к. SSAS табличный.

Вопрос по оптимизации MDX-запроса

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

WITH
SET [Текущий месяц] AS [Время].[Месяц].&[2016-05-01T00:00:00]
SET [Предыдущий месяц] AS  [Текущий месяц].Item(0).Lag(1)

MEMBER [Отгрузки шт Текущий] AS SUM([Текущий месяц],[Measures].[Отгрузки шт])
MEMBER [Отгрузки шт Предыдущий] AS SUM([Предыдущий месяц],[Measures].[Отгрузки шт])
MEMBER [Мера какая то Текущие] AS SUM([Текущий месяц],[Measures].[Мера какая то])

MEMBER [Новая ТТ] AS (CASE WHEN ([Отгрузки шт Текущий]>0 And [Отгрузки шт Предыдущий]=0) THEN "Новая" END)

MEMBER [Количество ТТ по городам] AS (CASE WHEN [Новая ТТ] ="Новая" THEN Count(Filter(
[Торговые точки].[Код ТТ].[Код ТТ],
([Города].[Город].CurrentMember,
[Отгрузки шт Текущий])>0
)) END)

SELECT
	{[Отгрузки шт Текущий],
	[Отгрузки шт Предыдущий],
	[Мера какая то],
	[Новая ТТ],
	[Количество ТТ по городам]
	} ON 0,
NON EMPTY
	[Города].[Город].[Город]*
	[Измерение какое то].[Измерение какое то].[Измерение какое то]*
	[Торговые точки].[Код ТТ].[Код ТТ]
	HAVING ([Новая ТТ]<>null)
ON 1
FROM
	PROFIT
WHERE
	LastPeriods(2, [Время].[Месяц].&[2016-05-01T00:00:00])


В этом запросе я определяю новых торговых точек по отгрузкам и для них определяю количество торговых точек в соответствующем городе. Без выделенного и без Having выводит 25 000 строк за 3 мин 30 сек. Затрудняюсь оптимизировать.

Скажите

1. Как сделать так, чтобы полученные новые ТТ поместить в субкуб, чтобы был как определенный набор из новых ТТ?

2. Из за выделенного запрос очень сильно тормозит. Как его можно оптимизировать?

Вопрос про объединение

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

Вот такой MDX-запрос.

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

Выдает такой результат
Клиент ЮрлицоОтгрузки шт
Клеинт1Юрлицо101000
Клиент1Юрлицо111100
Клиент310Юрлицо80500
Клиент310Юрлицо811500
Клиент310Юрлицо82250
Клиент310Юрлицо83750

А надо такой
Клиент ЮрлицоОтгрузки шт
Клеинт1Юрлицо101000
Клиент1Юрлицо111100
Клиент310Все3000

Пишу так. С использованием верхнего уровня
{([Торговые точки].[Клиент].&[310]*[Торговые точки].[Юрлицо].[All])}

Выдает ошибку "Функция ожидает для аргумента 1 выражение набора кортежей. Было использовано строчное или числовое выражение."

Как правильно написать?

Считываются не все строки при обработке мер

$
0
0
При обработки таблицы фактов в группе мер считывает только значение у которых нет NULL в свойствах. Т.е. в данной таблице:

Свойство 1 Свойство 2 Свойство 3 Свойство 4 Значение
Строка 1112112
Строка 2533311513
Строка 33 NULL221215
Строка 441212253
Строка 5NULL3NULL1245
Строка 61212115


Он посчитает только строки 1, 2, 4 и 6.Если посмотреть SQL-запрос,выполняемый при обработке куба, то видно объединение этих таблиц, т.е.
WHERE  ([таблица1].[Свойство1] = [Свойство1].[id]) 
AND ([таблица1].[Свойство2] = [Свойство2].[id])
AND ([таблица1].[Свойство3] = [Свойство3].[id])
AND ([таблица1].[Свойство4] = [Свойство4].[id])


Соответственно считать кол-во строк и общие суммы он будет только для считанных строк.
Пробовал задать UnknownMember для NULL значений, но это ничего не изменило

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

ssas и медиана

$
0
0
Всем привет.
На хабре есть статья как рассчитывать медидиану. https://habrahabr.ru/post/153869/

Я переписал предлагаемый код под свой куб
//Количество значений в кортеже 
CREATE MEMBER CURRENTCUBE.[measures].[AdvCount] 
 AS Count(NonEmpty([Номенклатура].[Product Key].members,[Measures].[Закупка Sum LT]) as AdvSet), 
VISIBLE = 0  ;       

//Поиск значения находящегося посередине кортежа
CREATE MEMBER CURRENTCUBE.[Measures].[MedianReal]  AS ([measures].[AdvCount]-1) * 50 / 100, 
VISIBLE = 0;       
CREATE MEMBER CURRENTCUBE.[Measures].[MedianInt]  AS Int([Measures].[MedianReal]), 
VISIBLE = 0;       
CREATE MEMBER CURRENTCUBE.[Measures].[MedianFrac]  AS [Measures].[MedianReal]- [Measures].[MedianInt], 
VISIBLE = 0;       

//Расчет медианы
CREATE MEMBER CURRENTCUBE.[Measures].[MedianLow]
 AS (NonEmpty([Номенклатура].[Product Key].members,[Measures].[Закупка Sum LT]).Item([Measures].[MedianInt]).Item(0),[Measures].[Закупка Sum LT]), 
VISIBLE = 0;       
CREATE MEMBER CURRENTCUBE.[Measures].[MedianHigh]
 AS (NonEmpty([Номенклатура].[Product Key].members,[Measures].[Закупка Sum LT]).Item([Measures].[MedianInt] + 1).Item(0),[Measures].[Закупка Sum LT]), 
VISIBLE = 0;       
CREATE MEMBER CURRENTCUBE.[Measures].[Salary Median]
 AS ([Measures].[MedianLow] * [Measures].[MedianFrac])
 +([Measures].[MedianHigh] * (1 - [Measures].[MedianFrac])), 

VISIBLE = 1 ;   



На мой взгляд алгоритм не работает. Неправильно определяется порядковый номер медианного элемента, Item([Measures].[MedianInt]). Все из за того, что данные не отсортированы.

Может кто знает, как накинуть сортировку и у вас есть другой алгоритм?

Вопрос по настройке отчета, SSRS

$
0
0
На днях появилась такая задачка... Настраиваю отчеты в SSRS,на основе OLAP куба.
Нужен селф-сервис. Ситуация такова,что есть отчеты, настроенные в репорт билдере. Хочется сделать так,что бы настроить преднастроенный шаблон, в который пользователи самостоятельно смогут добавлять новые поля или дорабатывать. При этом изначально они должны выгрузить уже настроенный отчет...(в случае необходимости доработать)
У меня пока только идеи и куча вопросов(а можно ли так?!)

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

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

Помогите разобраться с Total-oм

$
0
0
Всем привет, ребята помогите найти идею не могу определить как сделать тотал верным, ниже в результирующем наборе
тотал для [Group TEST] считаеться неверно, т.е. ожидаеться 50.72 + 32.41 = 83,13 а по факту вижу 90.79

помогите плз с идеями

CREATE MEMBER CURRENTCUBE.[TEST].[Dummy].[All].[Plan TEST]
AS 
([TEST].[TEST])
, VISIBLE = 1
, SOLVE_ORDER = 1002
;  
CREATE MEMBER CURRENTCUBE.[TEST].[Dummy].[All].[TEST Internal]
AS
(
[TEST].[TEST],
[Measures].[New]
)
, VISIBLE = 1;
CREATE MEMBER CURRENTCUBE.[TEST].[Dummy].[All].[Group TEST]
AS
ROUND(
(
[TEST].[Dummy].[All].[TEST Internal],
[Measures].CurrentMember
)
*
(
[TEST].[Plan TEST],
[Measures].CurrentMember
)
, 2
)
, VISIBLE = 1
;

N TEST Plan Test Test Internal Group Test
1 70.49 55.39  0.916  50.72
2 26.27 35.40  0.916  32.41
Total 96.76 90.79  2.00  90.79

OBIEE 11G, Отселживание изменений в репозитории в режиме онлайн

$
0
0
Подскажите, пожалуйста, возможно ли настроить отслеживание изменений в репозитории при работе с ним в режиме онлайн? Например, смотреть, какой пользователь что меняет? Или хотя бы кто внес последние изменения в объекте?

Цель вопроса - контроль многопользовательской разработки.

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

Посоветуйте книгу по MS BI

$
0
0
Посоветуйте хорошую книгу по MS Business Intelligence для чайника из IT.

MDX запрос по topcount

$
0
0
Задача такая: вычислить топ10 производителей на текущую дату, а потом по этим производителям вывести данные с 14 года по текущий месяц.
Что-то я мозг сломал, как сделать. Запрос в следующем виде выводит данные только по текущему месяцу.
Запрос еще осложнен тем, что необходимо в запросе вывести данные по всем в сумме, чтобы на графике сумма по всем отображалась отдельной кривой.

SELECT NON EMPTY { [Measures].[Оборот] } ON COLUMNS, 
 NON EMPTY 
 { (
 
 [Дата].[Г-М].[Месяц].ALLMEMBERS * 
  
	topcount(
	STRTOSET("[Номенклатура].[Сегмент].&[3]", CONSTRAINED) *
	STRTOSET("[Дата].[Год_Месяц].&[201605]", CONSTRAINED)*
	{   
		{[Номенклатура].[Производитель].[Производитель].ALLMEMBERS},
		{[Номенклатура].[Производитель].DefaultMember}
	}
	, 10, [Measures].[Оборот])
 ) } 
FROM [CUBE]

OBIEE 12c как создать новую предметную область?

$
0
0
В анализе не удается создать новую предметную область. Там уже висит дефолтная SampleAppLite. Пробовал через data-model-cmd.sh downloadrpd ... не появился. через ЕМ задеплоить тоже не дает. Подключиться онлайн к существующему репозиторию с SampleAppLite не могу т.к. не подходит стандартный пароль Admin123. База и OBIEE стоят на Unix.

OBI11G Admintool windows7 (64bit) home premium

$
0
0
Добрый день.
Подкскажите плз возможно установить
Oracle Business Intelligence Developer Client Tools
на windows 7 home premium (64 bit), да так чтобы admintool работал?

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


Понятно, что эта ОС не сертиф. под BI.
Но может как-то в режиме совместимости и т.д. или только виртуалку развертывать и уж на нее BI клиента?

ssas 2012 server properties

$
0
0
Ни у кого нет описания таких advanced свойств?

SessionMemoryLimit
An advanced property that you should not change, except under the guidance of Microsoft support.

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

Номера элементов атрибута

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

1. В программе Microsoft SQL Server Management Studio слева в атрибуте "Город" отображается список городов. Но когда выбираешь нужные города в поле MDX-запроса, то вылезают вместо названии городов - номера городов. Например
[Города].[Город].&[12]
Как правильно писать элементы атрибута в запросе, чтобы указывать не номера городов, а наименование городов?

2. При таком запросе
SELECT
	{} ON 0,
	[Города].[Город].[Город] ON 1
FROM
	PROFIT
получаем список городов.

Нужно получить вторую колонку, где по каждому городу (элементу) отображается соответствующий номер, который после знака "&". Как это сделать?

Excel Мультиселект и Итоги

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

В Excel при работе с кубом выявилась следующая проблема.

Есть измерение "Показатель" с Parent-Child Иерархией и использованием UnaryOperator.

Если UnaryOperator проставлен как '+'

nIdnParentIdsNamesTypesUnaryOperator
1NULLпоказатель_1NULL+
21показатель_1_1Sum+
31показатель_1_2Sum+
41показатель_1_3Sum+


В таком случае все корректно выбирается и мультиселектом.

Результат без фильтрации:

OBI 11.1.1.6.12 доступ пользователей к BI Publisher

$
0
0
Настроена синхронизация с BI - AD. В части BI работает нормально: создаю группы в AD, роли в EM, назначаю права. Всё ОК.

Вопрос. Как настроить доступ пользователей к паблишеру (к меню модели данных, шаблоны стилей и т.д.)? Дайте ссылочку плз.
Viewing all 1167 articles
Browse latest View live