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

SSAS 2012 калк мембер

$
0
0
Wello World!

1 Есть измерение [Дата](Sale Date), которое строится по таблице view_Dim_Date. Гранулянтность - ДЕНЬ

2 По этой же таблице строится мера [Days Count], которая определяется агр. функ Count of rows.

3 А также калк мембер [Days Count 2]
CREATE MEMBER CURRENTCUBE.[Measures].[Days Count 2]
AS COUNT
(
INTERSECT
	(
		EXISTING([Sale Date].[Date].[Date].MEMBERS)
		,{NULL : StrToMember("[Sale Date].[Date].[Date].&[" + Format(Now(), "yyyyMMdd") + "]").LAG(1)} 
	)
)


При просмотре отчета не могу обосновать полученный результ.
На скрине видно, если установить фильтры на самом нижнем уровне(т.е. отобрать нескольно дней), то [Days Count 2] вообще не учитывает этот фильтр.

Подскажите, как это побороть?

SSAS XMLA добавление групп-юзеров в роли Автоматизировать

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

Работаю в SSAS на 2 енвайрноментах ( DEV , Prod)
- в 2 доменах - соотвтественно разные пользователи
Есть 4 роли в кубе

деплою на Prod пока через xmla удаляя юзеров с своей сети - и добавляя руками юзеров (группы) с другой.
На проде сделал 4 группы AD куда закинул пользователей

?1) могу ли я ОДНИМ скрпитом xmla ДОБАВИТЬ каждой роли по 1 группе НЕ теряя засайенных на роли пользователей (руками раньше)
( ну или на худой конец включить в один xmla - 4 под-скрпита )

если я правильно понимаю то xmla сгенеренный должен содержать ВСХ пользователей
<Alter AllowCreate="true" ObjectExpansion="ObjectProperties" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
  <Object>
    <DatabaseID>A0_bb</DatabaseID>
    <RoleID>Role 3</RoleID>
  </Object>
  <ObjectDefinition>
    <Role xmlns:xsd= ...

      <ID>Role 3</ID>
      <Name>03_Role_Community_admin</Name>
      <Description>Community admin</Description>
      <Members>

      <Member>
          <Name>NEW_GROUP_01</Name>
        </Member>
        


вот здесь есть чере пауер-шелл
http://dvbi.ru/articles/readingroom/tabid/99/ArticleId/57/language/ru-RU/SSAS-MDS.aspx

add-role member -membername "test2" -database "WideWorldImportersDW" -rolename "MyFavoriteRole_Copy_V1"
remove-rolemember -membername "test2" -database "WideWorldImportersDW" -rolename "MyFavoriteRole_Copy_V1"

могу ли я это сделат через xmla ?

2?) Я когда деплою новый куб - сохранюю старую версию - переименовывая Database
но DatabaseID то остается
поэтому в xmla Скрпитах приходитя менять <DatabaseID>A0_bb</DatabaseID> Каждый раз

можно ли измерить DatabaseID в старой БД ?

т.е конечная цель чтобы был один головной (или общий)скрпит (xmla) или bat
запускающий все добавления групп-юзеров в роли
после деплоя куба на прод.

ссылки по бест-практис деплоя куба на разные енвы где разные юзеры
тоже велкам.

Выгрузить данные

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

Есть задача выгрузить ТТ, у которых в заданных месяцах отгрузки больше нуля.

Написал такой MDX-запрос
+
SELECT
	{([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].Children)}
ON 0,
NON EMPTY
	[Торговые точки].[Код ТТ].[Код ТТ]
HAVING (
	([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].&[2016-01-01T00:00:00])>0
	AND
	([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].&[2016-02-01T00:00:00])>0
	AND
	([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].&[2016-03-01T00:00:00])>0
	AND
	([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].&[2016-04-01T00:00:00])>0
	) ON 1
FROM
	(SELECT ([Время].[Месяц].&[2017-01-01T00:00:00]:[Время].[Месяц].&[2017-04-01T00:00:00])ON 0 FROM PROFIT)

Выдает нужный результат
Отгрузки сумма без НДСОтгрузки сумма без НДСОтгрузки сумма без НДСОтгрузки сумма без НДС
Январь 2017Февраль 2017Март 2017Апрель 2017
ТТ1100110120170
ТТ290100120130
ТТ380110125130
ТТ460110135120
...............

HAVING получился длинным, но если придется задавать не 4 месяца, а 12 или 24 месяца, то запись удлиняется.

Если написать так
+
SELECT
	{([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].Children)}
ON 0,
NON EMPTY
	[Торговые точки].[Код ТТ].[Код ТТ]
HAVING (
	([Measures].[Отгрузки сумма без НДС],[Время].[Месяц].Children)>0
	) ON 1
FROM
	(SELECT ([Время].[Месяц].&[2017-01-01T00:00:00]:[Время].[Месяц].&[2017-04-01T00:00:00])ON 0 FROM PROFIT)

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

Как правильно написать запрос, чтобы запись была укороченная?

sas и хранение данных

$
0
0
Народ, а подскажите плиз. Читая какие-то статьи по sas я пришёл к выводу, что данные из кубов кроме формата sas можно ещё хранить в реляционных БД, например Oracle и ряд других фиксированных баз .

Aster
DB2 (UNIX only)
Greenplum
Hadoop
Netezza
Oracle
Teradata

а нет ли такого, что он может хранить данные в любом jdbc-совместимом источнике?

SSAS. Добавление данных в куб в реальном времени

$
0
0
Здравствуйте, помогите пожалуйста с вопросом, возможно ли из приложения вставлять изменения данных напрямую в куб?
Все это необходимо делать без процессинга куба.
Что бы пользователи без задержек могли анализировать данные в реальном времени.

ssas 2016 dev. edition не потребляет ресурсы сервера

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

Имею на вполне приличном серваке 32 CPU 256 RAM SSAS сервер 2016 в developer edition и не очень большой базой (около 300 гиг)

Наблюдаю следующую картину - тупит на запросах, в плоть до недождался и вышел по тайм-ауту и при этом не ест ресурсы вообще - 4% CPU и 32 ГБ RAM , это максимум что он берет.

Как такое может быть? М.б. проблема в редакции софта?

Аналогично тупит на процессинге, кубик процессится около 2-х часов, при этом ресурсов вообще не использует.

Подскажите, если кто сталкивался с таким.

SSAS OLAP - измерения дата и время

$
0
0
Всем доброго времени суток,
Предположим, есть простой куб: Календарь, Номенклатура, Склады, Документы, Продажи\Остатки\Обороты, детализация до даты.
Продажи и обороты также и по документам, но остатки на документ - уже нет.
В источнике детализация есть до документа\транзакции (дата:чч.мм.сс:документ), при этом порядок документов в пределах одной секунды - по порядку идентификатора документа (источник - промежуточная БД между 1С и кубом, полностью подконтрольна).
Есть планы по добавлению в куб измерения Время (что само по себе не проблема) и расчет остатков по каждому документу\транзакции.
Собственно, вопрос - как грамотно связать Время + ИД_Документа? А затем Календарь + Время?
И как, по какой единой формуле затем считать остатки, независимо от того, какая детализация - Календарь или Время - выбрана?
Такое возможно?

SSAS MOLAP и тюнинг-конфигурация HDD

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

Недавно тюнил файловую систему под SQL FILESTREAM, и там делал следующее:
- Отключаем file indexing
- Отключаем 8dot3name
- Отключаем lastaccess update

Смысл этих всех действий в том, что FILESTREAM порождает массу файликов, и данные настройки улучшают производительность файловой системы при работе с ними.
Но - по сути структура хранения SSAS MOLAP похожа - там тоже много файлов. Но явных best practices с похожими настройками не нашел. По идее - выполнение рекомендаций должно помочь или по крайней мере - не навредить. 8dot3name и file indexing - отключал, все ok, с lastaccess - пока не пробовал.
Кто-либо делал что-то подобное?

OBIEE 11 и выгрузка отчетов в Excel 2007+

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

Исходные данные:
Oracle Business Intelligence 11.1.1.7.0

В какой-то момент часть отчетов перестала выгружаться в Excel2007+. Связи между ними никакой - есть и с обычными таблицами, есть и с таблицами срезов, отчеты из разных предметных областей. Ошибка:

Assertion failure: (nCapacity < (0x80000000/sizeof(char_type))) at line 39 of inc/nq/webbedrock/simplestringdef.h
Error Details
Error Codes: ACIOA5LN

Никаких изменений в конфиги BI за последнее время не вносилось. Обрезало, на "ровном месте". По косвенным признакам напрашивается: 25828931 Oracle Business Intelligence Enterprise Edition Suite Bundle Patch 11.1.1.7.170418, но нет уверенности что поможет и не привнесет нам какой-то новой "ботвы".

Может кто сталкивался, подскажите куда "копать".

Заранее спасибо за ответ.

SSAS / PowerShell - синхронизация ролей между базами

$
0
0
Кто (если есть) поделится готовым PowerShell скриптом для копирования (или синхронизации) настроек безопасности (на атрибуты измерений в кубах, измерений в ДБ, доступ к кубам) между схожими по структуре базами (названия и ID ролей тоже есть в обеих базах - но в принимающей они пустые).
Может у кого готовый есть - а то мне до вечера придётся писать/отлаживать .. если не пару дней..
Идея обойти foreach(){} вложенными циклами по цепи
CubePermissions[$cub.ID]
DimensionPermissions[$dim.ID]
AttributePermissions[$attr.ID]
и прописать свойства типа:
AllowedSet =
DeniedSet =
VisualTotals =
DefaultMember =
$cubeacc.Read = ReadAccess.Allowed

перевод транспорта извлечения данных полностью на очередь изменений объектов

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

У коллег есть идея перевести полностью транспорт извлечения данных (часть extract из ETL) c SQL запросов на работу с очередью изменений объектов.

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

sergeyavdovin.ru

oracle bi: системные переменные

$
0
0
Столкнулась с неожиданной проблемой.
Пытаюсь создать столбец, который будет определяться как VALUEOF(NQ_SESSION.USER)
Получаю ошибку [nQSError: 23006] The session variable, NQ_SESSION.USER, has no value definition
Иду в сессионные системные переменные - там ничего нет, но в меню можно выбрать, например, New USER...
Выбираю, он просит привязать ее к блоку инициализации, но никакого специального блока инициализации я не вижу.
Подскажите, так и должно быть? Тогда как задать эту переменную явно, чтобы BI не ругался на ошибку? Как сделать блок инициализации?
Или кто-то до меня что-то сломал и блок должен был быть? Тогда как это исправить?

Excel и SSAS - изменение данных через CUSTOM логику

$
0
0
Привет!
Если это не совсем тот форум, то ткните меня в правильный пожалуйста ...

Известно, что Excel позволяет (используя SSAS WriteBack и стандартный MDX UPDATE CUBE) изменять значения, полученный из SSAS данных.

Я в другой ветке интересовался, возможно ли перехватить на уровне SSAS события изменений ячеек (тригер на WRITE BACK) - как выясняется нельзя.

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

Теперь похожий вопрос, но с другого конца - возможно ли в EXCEL написать custom логику изменения данных полученных из SSAS.
Т.е. сделать так, чтобы MEASURES-ячейки в Excel можно было изменять и вызывать при этих изменениях custom расширения Excel.
Те уже, в свою очередь, производят изменения в R-ROLAP партиции SSAS заставляют Excel перезапросить данные - цикл замкнулся.

Мне, в принципе достаточно просто ДА/НЕТ, но если к ДА еще и какая ссылка с примером приложится, то было бы просто чудесно.


Заранее безмерно благодарен за все ответы (ну, почти за все :-) )

oracle bi 10 как отключить кеширование? В NQSConfig.INI задано cache = NO - не помогает

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

Не смотря на то, что в NQSConfig.INI задано cache = NO, после рестарта BI и presentation server такое ощущение что все-равно кэшируется.

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

SSAS - правильный many-to-many

$
0
0
Всем доброго времени суток,
Пожалуйста, наставьте на путь истинный в следующем вопросе - возможно ли сделать правильный many-to-many как:
Есть измерение SalesSigns:
SalesSign_IDDescription
0«Реализация внутренняя»
1«Реализация на сторону»
2«Реализация по плану продаж»

Есть таблица фактов Sales (Date_ID, Order_ID, BridgeSalesSign_ID, Amount)
Есть бридж и измерение BridgeSalesSigns, выглядит как:
SalesSign_IDBridgeSalesSign_ID
00
110
111
211

Т.е. в бридже перечислены возможные комбинации признаков продажи, и в таблице фактов отражен этот же ключ.
Сделал в кубе many-to-many (SalesSigns -> бридж BridgeSalesSigns -> Sales) на основе этой схемы, но, предсказуемо, при процессинге ругается на не-уникальность ключа измерения BridgeSalesSigns (BridgeSalesSigns_ID)
Проигнорировал для него KeyDuplicate, процессинг прошел, но наверняка это неправильный путь.

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

SSAS 2012 MDX-запрос

$
0
0
Hello World!
Есть запрос, который должен возвращать количество брендов, которые продавались в 2016 и товар - не перекупка
WITH SET [Product1] AS 
	 NONEMPTY(
		  EXISTING([Product].[Brand].[Brand].members), 
		  [Measures].[Прибыль на дату продажи, р]
		 )
	 MEMBER [Measures].Profit1 as [Product1].count
select {[Measures].[Прибыль на дату продажи, р],
		[Measures].Profit1 }  ON 0,
		[Product1]  ON 1
FROM	[Cube]
WHERE	([Sale Date].[Year].&[2016], [Product].[Признак Перекупки].[НеПерекупка])

Результат
Бренды Прибыль р. Profit1
<Нет> 235 592.62 510
A/S Wodschow & Co 614 138.99 510
Abat 34 212 891.23 510
Abbott 2 958 817.65 510
Abert 584 453.01 510
и так далее ...

ЭРГ-AL 6 789.51 510
ЭРТИЛЬСКИЙ ЗАВОД 113 863.06 510
ЮМТ-ИНДАСТРИ 45 696.00 510
Юнитрейд 2 377 628.94 510
Всего 510 записей

Также в кубе есть калк мембер:
CREATE MEMBER CURRENTCUBE.[Measures].[Продажи. КолВо Брендов]
AS (NONEMPTY(EXISTING([Product].[Brand].[Brand].MEMBERS), [Measures].[Прибыль на дату продажи, р])).Count, 
FORMAT_STRING = "#,##;-#,##", 
VISIBLE = 1 ,  ASSOCIATED_MEASURE_GROUP = 'Sale';    
Который дает несколько другой результат(см. скрин)

1.
Подскажите, действительно ли в обоих случаях необходимо использоваль конструкцию
EXISTING([Product].[Brand].[Brand].members)
или достаточно
[Product].[Brand].[Brand]

2.
Из-за чего результаты отличаются?

OBIEE ODBC

$
0
0
Коллеги, приветсвую.
Нужна помощь.
Соединяюсь с DWH через ODBC.
При создании фильтра в анализе задаю значение в Кириллице.
Итог: нет данных.

obis1-query.log:

select distinct T882."NAME"
from
"DMART"."DIM_SALESROOM" T882
where ( T882."NAME" = N'"1001 тур" турфирма' or T882."NAME" = N'"Global service"')

Сделал traceout на ODBC:
select distinct T882."NAME" from "DMART"."DIM_SALES" T882 where ( T882."NAME" = N'"1001 " ' or T882."NAME" = N'"Global service"' )


Версия OBIEE 12.2.1.x
Версия ODBC DataDirect 8.0.1

Есть ли чудесная настройка позволяющая решить проблему?

Фильтр в сводной с подключением OLAP - задать через VBA

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

Если в коде VBA-Excel задавать фильтр по дивизиону через переменную, вот так:

Sub Div()
Dim DD As Byte 'Код дивизиона
DD = 11
ActiveSheet.PivotTables("Sale").PivotFields("[Clients].[Division].[Division]"). _
VisibleItemsList = Array("[Clients].[Division].&[DD]")
End Sub

то ошибка: Не удается найти элемент в кубе OLAP.

Если вместо переменной вписать цифру (в данном случае 11 вместо DD), то код выполняется.

Как использовать переменную?

Кракозябры в отчете о выполнении пакета SSIS

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

дано:
- SQL Server 2016;
- Visusual Studio 2015;

Делаю пакет Integration Services, в нем шаги имеют названия на русском языке. Публикую пакет.
Затем иду на сервер, в Integration Services Catalog, нахожу пакет и вывожу отчет о его выполнениях. Т.е. правой кнопкой по пакету, дальше "All reports" => "Standard reports" =>"All executions". Там, где отчет должен выводить название шага SSIS пакета, идут непонятные и нифига нечитаемые кракозябры. Кириллица сбилась...

Подозреваю что дело в каких-то региональных настройках сервера или Visual Studio, но где это и что найти не смог.

Заранее спасибо.

Анализ на основе другого анализа который содержит фильтр

$
0
0
Приветствую, уважаемые...

Сделал анализ, который выбирает ID клиентов. В анализе сделал фильтр по дате (от промта на инфопанели).
Сделал второй анализ с покупками клиентов, в качестве фильтра сделал "на основе анализа" - указал первый анализ.
При просмотре результирующего запроса к БД, запрос второго анализа действительно использует подзапрос от первого анализа, НО без фильтра по дате.
Первый анализ не помещал на инфопанель, второй поместил.


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