Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Задача следующая: построить куб, чтобы смотреть наличие товаров в магазинах. Таблица фактов, ключи: TimeID StoreID ProductID Меры: [ProdCount] - Кол-во товара другие Измерения: регион магазина тип магазина время продукция класс продукции Получилась снежинка. MsSql2k. Требуется написать MDX, чтоб на выходе получилось примерно следующее: время - on columns, продукция - on rows, мера - дистрибуция - в скольких процентах магазинов есть соответствующий товар (по всей иерархии продукции и других измерений, связанных с продукцией (снежинка)) Код: plaintext 1. 2. 3. 4. 5. Помогите зеленому чем сможете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2006, 16:26 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Есть ли у Вас мера где хранится общее к-во посещаемых магазинов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2006, 16:52 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
АналитикЕсть ли у Вас мера где хранится общее к-во посещаемых магазинов? Нет. Причем есть мера актуальности информации (кол-во прошедших дней) по которой нужно фильтровать, например рассматривать данные которые устарели не более чем на 14 дней. И еще вопрос по измерению [время]. Периодичность данных - неделя. Хотелось бы иметь иерархию (Год, Квартал, Месяц, Неделя) или хотябы (Год, Месяц, Неделя), но мастер создания измерения msas2k не дает подобного. Есть ли какие соображения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2006, 18:48 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Для начала давайте определимся по какой формуле Вы будете считать дистрибуцию. Напишите ее пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2006, 19:14 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
У Вас тип фактов periodic snapshot? Какова гранулярность остатков по времени? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2006, 19:54 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Информация собирается в течении недели в оперативную, в конце недели сбрасывается в хранилище. Если по каким-то магазинам информация не собрана, то все равно сливается в хранилище и указывается актуальность. Это делается на случай сбоя в сборе информации, чтоб из за этого сильно не поменялась картина результатов отчетов. Дистрибуция считается так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 01:21 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Для начала создайте меру: общее к-во посещаемых магазинов. Информация детализируется до уровня дня и до уровня торговые точки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 10:21 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
АналитикДля начала создайте меру: общее к-во посещаемых магазинов. Информация детализируется до уровня дня и до уровня торговые точки? А что такое посещенный магазин? Может вы имели ввиду магазин, в котором товар в наличии ? По-моему именно такие магазины хочет считать автор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 10:50 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Насколько я понимаю задача состоит в расчете дистрибуции, это означает что необходимо учитывать все магазины: те в которых был товар и те в которых должен быть товар, но его там нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 11:02 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
АналитикНасколько я понимаю задача состоит в расчете дистрибуции, это означает что необходимо учитывать все магазины: те в которых был товар и те в которых должен быть товар, но его там нет. А по-моему задачка поставлена предельно чётко. И задачка - непростая. Здесь пахнет многопроходовым скриптом или вложенными подзапросами. И, боюсь, что задачка не для MS AS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 13:21 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Я думаю её решить вполне возможно. Главное нужно уяснить некоторые уточняющие моменты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 14:07 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Виктор Сакович АналитикНасколько я понимаю задача состоит в расчете дистрибуции, это означает что необходимо учитывать все магазины: те в которых был товар и те в которых должен быть товар, но его там нет. А по-моему задачка поставлена предельно чётко. И задачка - непростая. Здесь пахнет многопроходовым скриптом или вложенными подзапросами. И, боюсь, что задачка не для MS AS. Непростая она для AS (в том смыле, что тормозить будет), потому что много Cell Level калькуляций (а что же вы хотели) В написании же MDX вычислений ничего особенного нет. Все упирается в написание СM, для подсчета количества магазинов, в которых есть товар (или товары группы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 14:08 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Абсолютно согласен с г-ном Backfire. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 14:43 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Так что же делать? Упрощенно, насколько я себе представляю, нужно посчитать кол-во магазинов в которых есть товар и разделить на количество всех магазинов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 18:58 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Информация детализируется до уровня дня и до уровня торговая точка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 19:02 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
АналитикИнформация детализируется до уровня дня и до уровня торговая точка? до уровня неделя (до дней нет необходимости). StoreID в таблице фактов указывает на конкретную торговую точку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 19:35 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Первое создайте меру: общее к-во магазинов. [ProdCount] - это мера в которой вы используете SUM или COUNT? Что у вас хранится в таблице фактов наличие товара в магазине либо же к-во товара в магазине? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2006, 10:28 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
АналитикПервое создайте меру: общее к-во магазинов. [ProdCount] - это мера в которой вы используете SUM или COUNT? Что у вас хранится в таблице фактов наличие товара в магазине либо же к-во товара в магазине? В таблице фактов хранится количество товара в магазине ([ProdCount]) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2006, 11:04 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
[ProdCount] - это мера в которой вы используете SUM или COUNT? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2006, 11:16 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Аналитик[ProdCount] - это мера в которой вы используете SUM или COUNT?Это мера не вычисляемая, она заполняется вручную со всей остальной информацией ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2006, 12:56 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Ок. Тогда Вам нужно создать меру, в которой необходимо считать торговые точки в которых есть товар. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2006, 13:00 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Приведите пожалуйста пример, как считать эту меру и что с ней дальше делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2006, 13:12 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Если в таблице фактов у Вас есть поле - к-во товара в магазине с разбивкой по неделям. То в кубе Вам неообходимо создать меру в которой осуществлять Count от к-ва товара в магазине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2006, 13:16 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Чувствую себя ...ком, который не может в экселе сложить 2 ячейки, но всеже можно MDX? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 02:04 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
SelfCoderЧувствую себя ...ком, который не может в экселе сложить 2 ячейки, но всеже можно MDX? Не дождётесь. CM получится сложный, возни с ним много, даже для гуру по MDX, а они люди занятые. Хотите SQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 10:18 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Так! Во-первых, без измерения "Магазин" не обойтись, т.к. надо считать их количество на лету. Во-вторых, все это реализовано и живет на AS2000. CM для подсчета магазинов (назовем ее ShopCount): Код: plaintext 1. 2. 3. 4. Далее надо получить общее число магазинов торговавших любой продукцией. Для этого создадим еще один CM как тупл от всех измерений исключая измерения "время" и "магазин" (назовем ShopCountAll): Код: plaintext Теперь еще один CM в котором просто делим одно на другое и используем формат Percent: Код: plaintext 1. 2. 3. 4. Немного замечаний: 0. Все это можно сделать и в одном CM. 1. Чтоб считать дистрибуцию в регионе или типе магазина, или по классу продукта, надо выкинуть из CM ShopCountAll соответствующий All-член. 2. IIF(IsEmpty.... нужен только для того чтоб нули (0, не null) не появлялись у null ячеек. 3. При большом объеме данных считаться будет медленно особенно в Экселе. 4. Вместо CrossJoin(..., excludeempty) можно использовать NECJ (что быстрее), но только если в дальнейшем не будете делать CalculatedMembers (например рассчитать общую дистрибуцию по двум из общего количества регионов). По этой же причине я не использовал DistinctCount. Если еще чего вспомню - напишу. Или задавайте вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 10:20 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Давайте разберемся с Measures.[ProdCount]. Это физическая мера или CM? Скорее всего это СМ. Так как таблица фрктов представляет Periodic Snapshot, то Measures.[ProdCount] = LastNonEmptyChild(Measures.[ProdCount_Fact]) при аггрегации вдоль ост времени. Следующий вопрос магазин учитывается как имевший товар, если товар был в магазине на конец период или в выбранном периоде товар бывал в магазине? в формуле Count(CrossJoin(Descendants([Магазин].[All Магазин], [Магазин].[Магазин]), Measures.[ProdCount]}), excludeempty) стоит CrossJoin все таки зменить на NonEmptyCrossJoin (скорострельность) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 10:44 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
ShIgorНемного замечаний: Позволю себе откомментировать эти замечания, хотя я и не следил за всей дискуссией. автор0. Все это можно сделать и в одном CM. Но для повышения производительнисти, лучше оставить в разных CM ShIgor2. IIF(IsEmpty.... нужен только для того чтоб нули (0, не null) не появлялись у null ячеек. Это не совсем правильно. Правильная проверка именно на 0 = Measures.ShopCount. Вот здесь я об этом писал подробнее - http://www.sqljunkies.com/WebLog/mosha/archive/2005/06/30/mdx_is_empty.aspx ShIgor3. При большом объеме данных считаться будет медленно особенно в Экселе. А что такого особенного в Экселе что там будет считаться особенно медленно ? ShIgor4. Вместо CrossJoin(..., excludeempty) можно использовать NECJ (что быстрее), но только если в дальнейшем не будете делать CalculatedMembers (например рассчитать общую дистрибуцию по двум из общего количества регионов). По этой же причине я не использовал DistinctCount. Полностью согласен. В AS2005 наиболее оптимально это можно написать используя функцию NonEmpty которая работает так же быстро как и NECJ если нет CMs, а если они есть, то дает правильный результат. Более того, даже написать Filter(..., NOT IsEmpty(measure)) будет намного быстрее чем Count(...,EXCLUDEEMPTY) Моша ---------------------------------------------------- This posting is provided "AS IS" with no warranties, and confers no rights ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 10:51 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
ShIgor Далее надо получить общее число магазинов торговавших любой продукцией. Для этого создадим еще один CM как тупл от всех измерений исключая измерения "время" и "магазин" (назовем ShopCountAll): Код: plaintext Не могу согласится с г-ном ShIgor по расчету общего числа магазинов, в том случае если в измерении "Продукция" хранятся только наши продукты, без учета продукции конкурентов. Также использование приведенного CM для расчета общего к-ва магазинов при расчете дистрибуции, будет давать Вам всегда 100 % дистрибуции на уровнях All Level измерений. Скажите есть ли у Вас в хранилище информация о посещении точек? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 10:56 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Mosha автор0. Все это можно сделать и в одном CM. Но для повышения производительнисти, лучше оставить в разных CM Пожалуйста, а можно про это по подробнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 11:17 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Ко всем, я просто привел, свое решение от которого можно оттолкнуться! 2 backfire Measures.[ProdCount] как написало: SelfCoderВ таблице фактов хранится количество товара в магазине ([ProdCount]) здесь надо просто перенести ее в AS в качестве меры с любой (SUM, COUNT) функцией. Следующий вопрос магазин учитывается как имевший товар, если товар был в магазине на конец период или в выбранном периоде товар бывал в магазине? если мы хотим считать distribution значит надо чтоб товар был в остатке на момент проверки. иначе это handling. авторСледующий вопрос магазин учитывается как имевший товар, если товар был в магазине на конец период или в выбранном периоде товар бывал в магазине?читай примечание 4 моего поста - скорострельность - да, но уменьшаем функционал. 2 Mosha Да, я читал Вашу статью, но 0 меня в этом случае не устраивает, т.к. 0 это не null, - Null для меня - отсутствие данных (например товар в регионе вообще не продается), а 0 означает, что магазин проверили, но товара в наличии не оказалось. Про Эксель: Все мои (и моих коллег) эксперименты с ним приводили к тому, что запрос в экселе примерно на порядок дольше (не в секундах, в минутах и часах :)) ) чем например через MDX Sample Application. 2 Аналитик 1. Продукция конкурентов никак не влияет на дистрибуцию нашего продукта. Я с трудом представляю узконаправленные магазины, ориентированные только на одного производителя. 2. замечание верно, т.к. любые товары есть в любом магазине в любое время 3. Информация о посещении есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 11:41 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
ShIgor 0 это не null, - Null для меня - отсутствие данных (например товар в регионе вообще не продается), а 0 означает, что магазин проверили, но товара в наличии не оказалось Это в SQL Server 100 пудовое и железобетонное различие между 0 и Null. В AS я бы на это полагатся не стал. Я хотел как и Вы различать, обжегся несколько раз. Так что лучше 0 и Null интерпретировать как одно и то же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 11:56 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Аналитик ShIgor Далее надо получить общее число магазинов торговавших любой продукцией. Для этого создадим еще один CM как тупл от всех измерений исключая измерения "время" и "магазин" (назовем ShopCountAll): Код: plaintext Не могу согласится с г-ном ShIgor по расчету общего числа магазинов, в том случае если в измерении "Продукция" хранятся только наши продукты, без учета продукции конкурентов. Также использование приведенного CM для расчета общего к-ва магазинов при расчете дистрибуции, будет давать Вам всегда 100 % дистрибуции на уровнях All Level измерений. Уточню: Результатом приведенного Вами тупла будет общее к-во торговых точек, в которых когда-либо встречался товар. А как же те магазины в которых не было товара, но они были посещены? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 12:08 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
2 backfire Не могу, кроме дистрибуции есть еще несколько параметров, которые так же зависят от того что в ячейке 0 или null. Приведу простой пример: В моей системе есть такие измерения Дивизион Регион Город Точка. В силу обстоятельств (читай желания заказчика) они построены не как иерархическое измерение, а как независимые друг от друга. В связи с этим, при простом CrossJoine получаем в каждом Дивизионе все Регионы, а в каждом Регионе все Города, и если для такого запроса Считать CM - толку мало! 90%, а то и более будут 0, к тому же не имеющими смысла: город Москва в Санкт-Петербургском дивизионе. NON EMPTY BEHAVIOR (как нам недавно рассказал Моша) ничем не помогает, а даже ухудшает ситуацию... и еще Mosha Более того, даже написать Filter(..., NOT IsEmpty(measure)) будет намного быстрее чем Count(...,EXCLUDEEMPTY) Это для меня пройденный этап. Я создавал несколько версий такого типа CM, в том числе и с Filter. В некотоых случаях Filter работал быстрее, в некоторых медленнее, в каких точно сейчас уже не скажу (могу, конечно, провести эксперимент т.к. до сих пор в половине баз использую CJ в более ранних Filter). Но большой разницы в скорости я нигде у себя не заметил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 12:24 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
АналитикУточню: Результатом приведенного Вами тупла будет общее к-во торговых точек, в которых когда-либо встречался товар. Не когда-либо, а только в запрошенный период. Если период не запрашивать (не выводить его ни на одну из осей и не ставить во WHERE) то да - когда-либо. АналитикА как же те магазины в которых не было товара, но они были посещены? Во-первых: представьте себе магазины без товара... значит како-то товар там все-таки будет Во-вторых: если нужно занести магазин без товара - заносятся продажи данного товара = 0 и остаток данного товара = 0. получается, что факт есть но отсутсвие в нем данного товара скажется на расчет дистрибуции по этому товару. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 12:32 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
в догонку... в этом случае только СМ для расчета надо все-таки менять на проверку 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 12:36 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
Всем большое спасибо. Понял в каком направлении двигаться. [ProdCount] - это физическая мера, я уже писал. По поводу общего количества товара, то здесь несколько сложнее. Аналитик прав. Если мониторится какой-либо определенный продукт и конкуренты не заносятся, тогда эти магазины не будут учитываться. Здесь я не договорил. Еще есть мера с информацией кикие магазины кем посещались (отношение многие-ко-многим). Вдобавок эта мера SCD. Задача значительно усложняется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 12:49 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
SelfCoderЕсли мониторится какой-либо определенный продукт и конкуренты не заносятся, тогда эти магазины не будут учитываться. Поиграйте с 0 - см выше. SelfCoderЕще есть мера с информацией кикие магазины кем посещались (отношение многие-ко-многим). Вдобавок эта мера SCD. Задача значительно усложняется... т.е. сами себя перепроверяете? и извините, что такое SCD? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 13:25 |
|
||
|
Помогите составить MDX
|
|||
|---|---|---|---|
|
#18+
SelfCoderВдобавок эта мера SCD. Задача значительно усложняется... Как может быть мера Slowly Changed Dimension? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2006, 15:31 |
|
||
|
|

start [/forum/topic.php?all=1&fid=49&tid=1870662]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 273ms |
| total: | 562ms |

| 0 / 0 |
