powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Пробелы в фундаментальных знаниях? MDX Scope...
25 сообщений из 45, страница 1 из 2
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644374
sese
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Други, есть условная мера Value с типом агрегации "сумма" и на порезанных помесячно партициях стоит общий хинт Slice вида

<Slice>[Дата].[Год].&[2016]</Slice>

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


Теперь есть мера Value2 с типом агрегации LastChild.
Пишу скоуп...

scope(
[Дата].[Год].&[2018],
[Дата].[День].[День],
Measures.[Value2]
);
this =
SUM(
(
{
[Дата].[День].&[20180101]
:
[Дата].[День].CurrentMember
}
),
measures.[Value]
);
end scope;


... и попадаю на скан всех партиций за все годы. Почему так? В измерении времени, разумеется, иерархия "год-месяц-день" построена и все связи проставлены.
Что я делаю не так?
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644684
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем в тему вопрос, но почему scope задаете не по листьям, а по всем элементам 2018 года?
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644746
Ferdipux
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sese... и попадаю на скан всех партиций за все годы. Почему так? В измерении времени, разумеется, иерархия "год-месяц-день" построена и все связи проставлены.
Что я делаю не так?

Было похожее, только без scope. Вылечилось установкой rigid связей в измерении времени.
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644764
sese
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bideveloper,

прошу простить, но как это - не по листьям? Я как раз явно пишу: [Дата].[День].[День],

А год в моем скромном представлении призван лишь ограничить набор этих листьев. Нет?
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644768
sese
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ferdipux,

Cоррьки, но мимо. не поленился заглянуть - все rigid.
Да и было бы странно задавать иначе: дни-то между месяцами и годами не перемещаются =)
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644772
sese
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bideveloper,

И потом, год нужен для того, чтобы определить отправную точку - дату, от которой и вычисляется LastChild, которое отражает состояние на любой момент времени. В данном случае эта отправная дата - 2018-01-01. Для другого года будет другой скоуп и другая дата. Обычно более 3-4 лет в кубе не держа, так что слишком большого числа скоупов не будет. И кстати, именно поэтому на партициях я указал год, а не месяц. Мне все равно нужно читать год.
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644778
sese
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Update:

а походу скоуп не при делах: убрал скоуп , чтобы посмотреть на поведение самого ласт чайлда. и вот он, зараза, плюет с высокой колокольни на указания на партициях и читает всю историю.
а что мы знаем про ласт чайлд? может пропертю какую установить?
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644865
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seseUpdate:

а походу скоуп не при делах: убрал скоуп , чтобы посмотреть на поведение самого ласт чайлда. и вот он, зараза, плюет с высокой колокольни на указания на партициях и читает всю историю.
а что мы знаем про ласт чайлд? может пропертю какую установить?
Мы знаем про last-child, что он отрабатывает на уровни иерархии . Для 2018-го берется декабрь 2018, для декабря 2018 берется 31 декабря 2018 (или последняя реальная дата).
Поэтому [Дата].[День].[ День] last-child будет идти вверх сразу до [Дата].[День].[All], а вот для иерархии [Дата].[Год-Месяц-День].[День] уже все будет выходить вверх до месяца, а тот до нужного года.
Но и тут нельзя 2018 год засовывать в Scope, а нужно переопределять условие iif(год(Дата.Год-Месяц-День.CurrentMember) это 2018, тогда первое условие, иначе второе условие).

Не стал подробно расписывать, но общую мысль таки уловили, коллега?
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644873
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sese,

а сам запрос-то где? от него тоже многое зависит
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644889
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgorsese,

а сам запрос-то где? от него тоже многое зависит
Так он выбирает в Excel мультиселект набор по разным датам или месяцам. Для простого Value с типом SUM все идет корректно, какие выбрал - те секции и читаются.
А вот для общего итога при мультиселекте для value2 получается ерунда. Читаются все секции.

Вывод - не делать физическую measure, а писать составную формулу, которая учитывает то, что будет выбран не единый уровень по измерению Дата - год, месяц, квартал, неделя, день, а несколько вариантов галочками.
И в таком случае искать из выбранных последний день и для него определять Value2 как last-child из Value.
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644894
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAPShIgorsese,

а сам запрос-то где? от него тоже многое зависит
Так он выбирает в Excel мультиселект набор по разным датам или месяцам...
из чего такой вывод?
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644896
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgorAndy_OLAPпропущено...

Так он выбирает в Excel мультиселект набор по разным датам или месяцам...
из чего такой вывод?
Ой-вей, такой вывод из того, что я читаю у него в голове, что он хочет увидеть и что видит на мониторе. Некоторые называют это старостью, некоторые опытом...
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644922
sese
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andy_OLAP,

То есть предполагалось написать так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
scope([Дата].[Год - Месяц - День].[День], Measures.[Кол-во SKU]);
this =
SUM(
    (
        {
            iif(
                [Дата].[Год - Месяц - День].CurrentMember.Parent.Parent is [Дата].[Год - Месяц - День].[Год].&[2018],
                [Дата].[Год - Месяц - День].[День].&[20180101],
                [Дата].[Год - Месяц - День].[День].&[20170101]
            )
            :
            [Дата].[Год - Месяц - День].CurrentMember
        }
    ),
    measures.[Value]
);
this = iif( Measures.[Кол-во SKU] <> 0, Measures.[Кол-во SKU], null);
end scope;



?

Если так, то мертвому припарки (соррьки за формат и в кубе у меня только 2 года, 2017 и 2018) :

Query BeginSELECT NON EMPTY Hierarchize({DrilldownLevel({[АВС Сегмент Товара].[АВС Сегмент Товара].[All]}INCLUDE_CALC_MEMBERS)}) DIMENSION PROPERTIES PARENT_UNIQUE_NAMEHIERARCHY_UNIQUE_NAME[АВС Сегмент Товара].[АВС Сегмент Товара].[АВС Сегмент Товара] ON COLUMNS FROM [Куб истории номенклатуры] WHERE ([Дата].[Год - Месяц - День].[Месяц].&[201703][Measures].[Кол-во SKU]) CELL PROPERTIES VALUE FORMAT_STRING LANGUAGE BACK_COLOR FORE_COLOR FONT_FLAGSProgress Report BeginНачалось чтение данных секции "201701".Progress Report BeginНачалось чтение данных секции "201702".Progress Report BeginНачалось чтение данных секции "201703".Progress Report BeginНачалось чтение данных секции "201704".Progress Report EndЧтение данных секции "201702" завершено.Progress Report BeginНачалось чтение данных секции "201705".Progress Report BeginНачалось чтение данных секции "201706".Progress Report EndЧтение данных секции "201703" завершено.Progress Report BeginНачалось чтение данных секции "201707".Progress Report BeginНачалось чтение данных секции "201708".Progress Report BeginНачалось чтение данных секции "201709".Progress Report BeginНачалось чтение данных секции "201710".Progress Report BeginНачалось чтение данных секции "201711".Progress Report EndЧтение данных секции "201701" завершено.Progress Report EndЧтение данных секции "201704" завершено.Progress Report BeginНачалось чтение данных секции "201712".Progress Report BeginНачалось чтение данных секции "201801".Progress Report EndЧтение данных секции "201706" завершено.Progress Report EndЧтение данных секции "201705" завершено.Progress Report EndЧтение данных секции "201707" завершено.Progress Report BeginНачалось чтение данных секции "201802".Progress Report BeginНачалось чтение данных секции "201803".Progress Report BeginНачалось чтение данных секции "201804".Progress Report BeginНачалось чтение данных секции "201805".Progress Report EndЧтение данных секции "201708" завершено.Progress Report EndЧтение данных секции "201709" завершено.Progress Report EndЧтение данных секции "201710" завершено.Progress Report EndЧтение данных секции "201712" завершено.Progress Report EndЧтение данных секции "201711" завершено.Progress Report EndЧтение данных секции "201805" завершено.Progress Report EndЧтение данных секции "201803" завершено.Progress Report EndЧтение данных секции "201802" завершено.Progress Report EndЧтение данных секции "201801" завершено.Progress Report EndЧтение данных секции "201804" завершено.Query EndSELECT NON EMPTY Hierarchize({DrilldownLevel({[АВС Сегмент Товара].[АВС Сегмент Товара].[All]}INCLUDE_CALC_MEMBERS)}) DIMENSION PROPERTIES PARENT_UNIQUE_NAMEHIERARCHY_UNIQUE_NAME[АВС Сегмент Товара].[АВС Сегмент Товара].[АВС Сегмент Товара] ON COLUMNS FROM [Куб истории номенклатуры] WHERE ([Дата].[Год - Месяц - День].[Месяц].&[201703][Measures].[Кол-во SKU]) CELL PROPERTIES VALUE FORMAT_STRING LANGUAGE BACK_COLOR FORE_COLOR FONT_FLAGS
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644926
sese
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andy_OLAP,


авторВывод - не делать физическую measure, а писать составную формулу, которая учитывает то, что будет выбран не единый уровень по измерению Дата - год, месяц, квартал, неделя, день, а несколько вариантов галочками.
И в таком случае искать из выбранных последний день и для него определять Value2 как last-child из Value.



Я в свое время пошел было путем вычисляемой меры, но как раз не смог обработать мультиселект и потому на годы забросил, поскольку все решалось физической мерой =)
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644929
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seseAndy_OLAP,


авторВывод - не делать физическую measure, а писать составную формулу, которая учитывает то, что будет выбран не единый уровень по измерению Дата - год, месяц, квартал, неделя, день, а несколько вариантов галочками.
И в таком случае искать из выбранных последний день и для него определять Value2 как last-child из Value.



Я в свое время пошел было путем вычисляемой меры, но как раз не смог обработать мультиселект и потому на годы забросил, поскольку все решалось физической мерой =)
Таки да - вот Вы и пришли к варианту, когда не все решается физической мерой. И нужно обрабатывать мультиселект.
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644940
sese
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andy_OLAP,

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


Соррьки, не уловил мысли: то есть мои попытки с физической мерой и скоупом ограничиться только чтением нужной области обречены?
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644978
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sese,

ну так что получается, никакого мультиселескта в запросе нет.
тогда второй вопрос - сколько записей в секции?
помнится мне, что начиная с 2008r2 необходимость явного указания слайса для секции не обязательно.
ssas сам это вычисляет (худо-бедно, о результатах этих оптимизаций пока не говорим).
так вот, в настройка есть порог в количество записей на секцию, когда он точно не вычисляется и, более того, при установке слайсов руками они не задействуются, конечно порожек по-умолчанию маловат (4096), но вдруг?
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644982
sese
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShIgor,

ну, год 2017-й - это примерно 350 млн записей. При том там на каждую смену состояния две записи: старая с минусом и новая с плюсом. По месяцам наверное более-менее равномерно и даже начальное состояние всех СКЮ на первое января наверное компенсируется потом каникулами и наверное в январе не больше записей, чем во всех остальных месяцах. В ноябре-декабре только слегка побольше, а так равномерно. То есть грубо, по 20 млн в мес.
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644986
sese
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShIgor,

К СОСТОЯНИЮ сложно сделать мультиселект по времени. Вернее, механически-то проще простого, но смысл-то какой?
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39644994
sese
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShIgor,


авторв настройка есть порог в количество записей на секцию



В настройках чего? Группы мер? Покопался - пока не нашел. Проекта в целом?
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39645057
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sese,

в настройках SSAS, но раз там в секции 20 лям (это по всем листьям, не в исходнике надеюсь?), то не поможет!
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39645078
sese
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andy_OLAP,

автор
Вывод - не делать физическую measure, а писать составную формулу, которая учитывает то, что будет выбран не единый уровень по измерению Дата - год, месяц, квартал, неделя, день, а несколько вариантов галочками.
И в таком случае искать из выбранных последний день и для него определять Value2 как last-child из Value.


Подсказочку бы...
А то вот переписал без физической меры, но не добился ничего. Такой же скан всей истории


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create calculated member currentcube.Measures.[Кол-во SKU 2] as 
sum(
    {
        LinkMember(tail(existing [Дата].[День].[День]).Item(0),[Дата].[Год - Месяц - День]).Parent.Parent.FirstChild.FirstChild
        :
        LinkMember(tail(existing [Дата].[День].[День]).Item(0),[Дата].[Год - Месяц - День])
    },
    Measures.[Value]
    )
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39645080
sese
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShIgor,


авторэто по всем листьям, не в исходнике надеюсь?

Прошу простить, я не совсем понял, по каким всем листьям.
20 лямов - это результат того select-а, который задан в <QueryDefinition>
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39645109
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sese,

тогда если это все сворачивается меньше чем в 4096 строк, то посмотрите настройку IndexBuildThreshold в msmdsrv.ini

а вообще тема древняя и мало что изменилось с того времени ( тут )

Кстати, Моша в статье Get most out of partition slices в разделе Related attribites так и пишет: "FE (formula engine) does coordinate decoding lazily, only if it really needs to" и дальше объясняет, что если слайс = Год, но CurrentMember этого атрибута в запросе не используется, то и декодирования его не будет, а значит и слайс тоже не получит указание использовать только эту партицию.
А у Вас очень похожая ситуация - слайс - год, а в запросе иерархия ГМД с указанием члена только на уровне день.
...
Рейтинг: 0 / 0
Пробелы в фундаментальных знаниях? MDX Scope...
    #39645110
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
seseAndy_OLAP,

авторВывод - не делать физическую measure, а писать составную формулу, которая учитывает то, что будет выбран не единый уровень по измерению Дата - год, месяц, квартал, неделя, день, а несколько вариантов галочками.
И в таком случае искать из выбранных последний день и для него определять Value2 как last-child из Value.


Подсказочку бы...
А то вот переписал без физической меры, но не добился ничего. Такой же скан всей истории


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create calculated member currentcube.Measures.[Кол-во SKU 2] as 
sum(
    {
        LinkMember(tail(existing [Дата].[День].[День]).Item(0),[Дата].[Год - Месяц - День]).Parent.Parent.FirstChild.FirstChild
        :
        LinkMember(tail(existing [Дата].[День].[День]).Item(0),[Дата].[Год - Месяц - День])
    },
    Measures.[Value]
    )


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

Что касается перебора.
create dynamic set currentcube.[Set_of_Days_without_Hierarchy] AS existing [Дата].[День].[День];
create dynamic set currentcube.[Set_of_Days_with_Hierarchy] AS existing [Дата].[Год - Месяц - День].[День];
Вот с этого нужно начать.
Что касается нужного набора - то логично, что он будет {[Дата].[Год - Месяц - День].&[20180101]:{[Дата].[Год - Месяц - День].CurrentMember} при условии, что CDbl(tail(existing [Set_of_Days_with_Hierarchy]).item(0).Properties("Key")) > CDbl (20180101).

Почему ключ для ключевого атрибута День нужно конвертировать функцией CDbl и сравнивать с CDbl (20180101), а не просто 20180101 - подумайте на досуге, это таки интересно :)
...
Рейтинг: 0 / 0
25 сообщений из 45, страница 1 из 2
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Пробелы в фундаментальных знаниях? MDX Scope...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]