Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
Вобщем впервые поставлена была передо мной задача - вывести данные по продажам за каждый день. До этого я работал с Ms Sql 2000, всё более менее понимал, синтаксис, да и утилиты удобные - профайлер, аналайзер, да менеджер. Пришел к выводу, что если выводить данные по продажам товара номер ХХХ за три месяца - это 90 колонок (или полей для субд). Довольно много, получается убого. Решил, что как раз для такого и создан ОЛАП. Полез смотреть... Мда... Вобщем аналога профайле вообще не нашел, MDX-Sample слабо тянет на аналог аналайзера, да и AM на EM похож как сто третья ксерокопия червонца. Но это ладно. Дело в следующем. У меня етсь несколько таблиц, одна для фактов, 2 для измерений. таблица фактов имеет следующие поля: Код: plaintext 1. 2. 3. 4. 5. 6. 1. Дата (мне надо год, неделя года, день недели(словами типа пн., вт.)) 2. Номенклатурный номер карточки (группа-номер-партия) по третьему измерению у меня непонятка- мне просто надо отсортировать по убыванию продажи за день. Теперь мои вопросы: как правильно задать измерения для куба? Т.е. в мастере я задал, но вот ведь проблема: в группе несколько номеров. Предположим есть группа "Анальгин", в ней "Анальгин 0,1", "Анальгин 0,2". Если я хочу посмотреть данные по карточке "Анальгин 0,1" за неделю, то у меня 7 колонок, в них продажи. Первая, вторая, третья и т.д. - А когда по группе? Он же просуммирует первые продажи, вторые продажи? А мне надо несуммировать, а показать, просто их будет больше. Как реализовать это половинчатое измерения типа "порядковый номер"? А еще мне надо видеть не только данные по каждой продаже, но и сумму за день и сумму за неделю. Вверху таблицы, как на рисунке. Как вытянуть такое? Я очень слаб в МДХ, я построил по всем данным новую таблицу (это доп. расход времени) Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. 3. 4. RANK - это порядковый номер, я его ввел, чтобы иметь какое-то подобие третьего измерения. Буду очень рад советам, т.к. пока слабо понимаю как все это делается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 18:01 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
Отображать данные можно только в Delphi? Сводные таблицы Excel не подходят? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2006, 18:24 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
Нет, не подходят, я Эксельный Pivot проверял, он мне не подходит. Он рисует сумму сбоку, а мне надо сверху. Кроме того, он раскрывает только одну ветку дерева измерения. а мне надо все - как на рисунке. Но главное вы мне подскажите - порядковый номер как измерение - как сделать? Я понимаю, что сортировкой, но если 10 одинаковых значений - как он их расставит? Мне надо по щелчку на ячейке получить дополнительные поля фактов, как то: agentcode, partia А Эксель вынесет все три факта в таблицу. Вобщем главная моя проблема на данном этапе - порядковый номер данные по суммам за день и неделю отображение недели года и дня недели ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2006, 09:33 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
совсем глухо, да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 10:26 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
Народ, подскажите хоть ресурс по МДХ, с примерами. БОЛ не помошник в этом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 14:17 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
GrigoriyНарод, подскажите хоть ресурс по МДХ, с примерами. БОЛ не помошник в этом this ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 14:52 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
(Похоже, что в сторону MDX еще рано смотреть) Ищите книгу А.Федоров Н.Елманова "Введение в OLAP-технологии Microsoft" На olap.ru было несколько глав из этой книги (и немного примеров на Delphi). Пока в сути не разберетесь в MDX лезть бесполезно! А через язык запросов изучать технологию - с OLAPом такое не пройдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 15:25 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
Мда... за книгу спасибо. Но мне надо щас и срочно :) Я решил сделать три запроса и заполнить сначала шапку, потом подшапку, а потом и таблицу. Но вот как бы увидеть красиво названия колонок? Вот мой запрос Код: plaintext 1. 2. Код: plaintext Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 16:55 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
GrigoriyЧитаю я вас с 31-го января, но ничего не понимаю.... может по-русски заговорите? Правильно сформулированный фопрос - половина ответа! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 23:35 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
2 Dmitry Biryukov "По-русски" он не сможет... Гворят "Не зная броду не лезь в воду" - однако здесь случай тяжелее, тут проблема незнания что такое вода! 2 Grigoriy у-у-у!!!! какое измерение создал, таких членов оно тебе и выдает... типа на пальцах объяснить? ну пожалуйста: С какого перепугу в экселе если набрать Январь 2006 и нажать ввод, ячейка примет вид янв.2006, а содержать будет 01.01.2006? Что нужно делать - менять формат. Так и у тебя - прошелся мастером создания измерения типа "дата" - мастер, как его учили, так и отработал. А уж красиво тебе или некрасиво - мастеру, извините, плевать... Короче - либо создавай измерения самостоятельно, либо меняй формат в Member Name Column. Ну и резюме - читай матчасть (ссылку давал). А вообще, совет мой тебе на будущее (от чистого сердца), если перед тобой стоит задача, причем выполнить ее надо в короткие сроки, выполняй ее с помощью тех средств с которыми умеешь и знаешь как работать. И совет из форума по Дельфи тебе дали действительно хорошой - смотри лучше в сторону HierCube.... Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2006, 08:53 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
На многих форумах я зарегистрирован и не сказать, что такой уж чайник, могу и совет дать и умное спросить. И на каждом форуме есть предвзятое отношение к новичкам, спрашивающим "почему у меня Access Violation на P^:=@Z выдает?"... Но везде по разному, где-то это легкое прикалывание, где-то просто нереальные снобы, от которых воротит. Я от этого уже отвык, хотя чайникам, за исключением крайних случаев типа "почему кнопки и хелп не на русском" и "а как программировать игрушку" всегда отвечаю. Вы мне вернули это незабываемое ощущение молодости, высокомерно-снисходительными ответами. кулхацкер1"Читаю я вас с 31-го января, но ничего не понимаю.... может по-русски заговорите? Правильно сформулированный фопрос - половина ответа!" кулхацкер2 " здесь случай тяжелее, тут проблема незнания что такое вода!" Спасибо. а теперь попытаюсь сформулировать "фопрос" , чтобы облегчить отвечающему задачу. Я и правда многого не понимаю, я например не понимаю как использовать функции в запросе. Потом, в примере где-то, я увидел, что оказывается сначала Код: plaintext 1. 2. 3. Код: plaintext 1. 2. 3. Я ведь не спрашиваю ПОЧЕМУ не так как я хочу. Я спрашиваю КАК HierCube это круто, но ИМХО я решу свои проблемы, если правильно составлю MDX-запрос. Я решил сделать 3 запроса - сумма за неделю, сумма за день и каждая операция за день и просто разместить их в таблице. Т.к. дни идут неподряд, были дни когда торговли не было и соответственно число дней не равно числу недель*7, то хочется в запросе по дням узнать неделю этого дня. Т.е. день №27, а какая неделя? вариант [Day].Parent выдает ошибку, явно что-то не то делаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2006, 10:03 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
GrigoriyПредположим есть группа "Анальгин", в ней "Анальгин 0,1", "Анальгин 0,2". Если я хочу посмотреть данные по карточке "Анальгин 0,1" за неделю, то у меня 7 колонок, в них продажи. Первая, вторая, третья и т.д. - А когда по группе? Он же просуммирует первые продажи, вторые продажи? А мне надо несуммировать, а показать, просто их будет больше. А как тут может быть что то отличное от суммы? GrigoriyТ.к. дни идут неподряд, были дни когда торговли не было и соответственно число дней не равно числу недель*7, то хочется в запросе по дням узнать неделю этого дня. Т.е. день №27, а какая неделя? вариант [Day].Parent выдает ошибку, явно что-то не то делаю... Вы строите измерение времени на таблице фактов (quick and durty) или на отдельной таблице (rules)? Совет, определитесь сначала с дизайном куба и измерений. После этого запросы будут не просто простыми, а очень простыми. И зачем вам второй куб, я так и не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2006, 10:28 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
O-o-o!!! (закатывая глаза кверху) Ну неужели действительно непонятно, что твой "фопрос", которого на самом деле-то и нет, хотя ты и попытался его сформулировать, сродни: Grigoriy "почему кнопки и хелп не на русском" и "а как программировать игрушку" А уж чего стоит: Grigoriy Я так и не понял как работает сортировка, для чего иногда ставятся, а иногда нет фигурные скобки, но работает. И как в этом случае давать советы и оказывать помощь. А причина в том, что ты: GrigoriyПолез смотреть... а не изучать, т.к. времени у тебя на изучение нет. Еще доходчивый пример из твоей серии? Диалог у врача: -Доктор, у меня болит! -Где болит? -Ну Вы же доктор, вот Вы и скажите где у меня болит и как лечить! Так же и у нас с тобой получается... На каждый твой вопрос надо сначала задать с десяток уточняющих вопросов. Давай, по твоему 1 посту пройдемся... Grigoriyкак правильно задать измерения для куба?... Ты его уже задал, для куба-то!... Читаем дальше..., а..., да не для куба вероятно, а в запросе... Ну тут все просто. Да, действительно, если взять группу, то все продажи просуммируются по группе, а тебе надо, чтоб по элементам группы или как? если по элементам группы, то: Код: plaintext Дальше: GrigoriyКак реализовать это половинчатое измерения типа "порядковый номер"? Никак, оно тебе не нужно - просто отсортируй элементы, которые мы вытянули Код: plaintext 1. 2. 3. все-равно ты результаты в Delphi на StringGrid бросать будешь, так что с MDX типа "все в одном" лучше не мучайся. Вот тока такие ответы, наверное, мало кого устроят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2006, 14:46 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
backfire Вы строите измерение времени на таблице фактов (quick and durty) или на отдельной таблице (rules)? И зачем вам второй куб, я так и не понял. Ранmit хотел на таблице фактов, но теперь пришел к выводу, что надо создать искуственно календарь и на его основе замутить измерение. Возможно это поможет тем, что мне не придется мучатся с красивым отображением недель года, это я наверное могу в SQL-сервере задать и потом просто как строку использовать вместо времени. Второй куб - это я бредил, думал, что придется строить второй куб, уже по неделям, не понимал что это и есть задача куба- выдавать данные по члену иерархии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2006, 16:00 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
backfire GrigoriyПредположим есть группа "Анальгин", в ней "Анальгин 0,1", "Анальгин 0,2". Если я хочу посмотреть данные по карточке "Анальгин 0,1" за неделю, то у меня 7 колонок, в них продажи. Первая, вторая, третья и т.д. - А когда по группе? Он же просуммирует первые продажи, вторые продажи? А мне надо несуммировать, а показать, просто их будет больше. А как тут может быть что то отличное от суммы? В том то и дело. Мне надо продажи(факт) за день (колонки) по препарату (страницы). Но строки я не выбираю. Т.к. мне нужны просто отсортированные по факту. Как сделать такой запрос я не знаю. Т.е. предполагаю, что если явно не задам в ON ROWS что-то, то вылезет сумма за день. А вот чтобы не вылезла? Я пока делаю так - пришиваю к таблице фактов еще поле rank - искуственное. порядковый номер по препарату за день. И на его основе строю продажи. Но может ОЛАП может как-то иначе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2006, 16:09 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
ShIgorO-o-o!!! (закатывая глаза кверху) Ну неужели действительно непонятно, что твой "фопрос", которого на самом деле-то и нет, хотя ты и попытался его сформулировать, сродни: Grigoriy "почему кнопки и хелп не на русском" и "а как программировать игрушку" А уж чего стоит: Grigoriy Я так и не понял как работает сортировка, для чего иногда ставятся, а иногда нет фигурные скобки, но работает. И как в этом случае давать советы и оказывать помощь. Я ж не отказываюсь. Ну извините, что не написал в теме письма магические фразы чайника "не бейте сильно", "не пинайте ногами" и всё такое :)) ShIgor Давай, по твоему 1 посту пройдемся... Grigoriyкак правильно задать измерения для куба?... Ты его уже задал, для куба-то!... Читаем дальше..., а..., да не для куба вероятно, а в запросе... Ну тут все просто. Да, действительно, если взять группу, то все продажи просуммируются по группе, а тебе надо, чтоб по элементам группы или как? Я задал, но мне кажется это сделано неправильно - Ведь какая у меня иерархия? С датами всё просто - Год-Неделя-День недели (желательно русскими буковками, если нельзя - циферками.) Но эту иерархию я могу реализовать даже в Sql Server создав искуственную таблицу-календарь, с полями (Дата, Неделя года, день недели-число, день недели-слово) и привязав по дате, использовать остальные поля как члены строковой иерархии. ShIgor если по элементам группы, то: Код: plaintext Теперь по группе-номеру. Каждый препарат имеет свой номенклатурный номер, он уникален. Все продажи, все расчеты ведутся с номенклатурным номером (NNUM). Например есть следующая группа "Метилурацил 0.5г №10,таб "(GNUM=" 130699"), там есть следующие элементы (NNUM, NAME, PRODUCER) Код: plaintext 1. 2. Потому и иерархия - завтра опять захотят анализировать по номеру. Я конечно могу создать 2 rank-измерения, один для группы, сквозной, другой для каждого номера, но это, интуитивно чувствую, неверный путь, наверняка есть вариант просто вывести члены измерения за день. ShIgorДальше: GrigoriyКак реализовать это половинчатое измерения типа "порядковый номер"? Никак, оно тебе не нужно - просто отсортируй элементы, которые мы вытянули Код: plaintext 1. 2. 3. Возможно это то, что мне надо. Хотя я сделал Код: plaintext 1. 2. 3. 4. 5. ShIgor GrigoriyА еще мне надо видеть не только данные по каждой продаже, но и сумму за день и сумму за неделю. здесь предлагаю реализовать просто 3 запроса к базе, все-равно ты результаты в Delphi на StringGrid бросать будешь, так что с MDX типа "все в одном" лучше не мучайся. Именно так и сделаю - три запроса, по кусочкам закину в Грид и буду доволен. Всё равно HierCube как-то долго осваивать, StringGrid ближе и тупее ShIgorВот тока такие ответы, наверное, мало кого устроят. Как раз таки такие и нужны, а книгу я на озоне закажу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2006, 17:24 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
Объясните мне, как работает сортировка? Вот есть у меня измерение rank, целочисленное, 1,2,3...15, я его использую для строк в запросе: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 1 10 11 12 13 14 15 2 3 4 Хотя это не строки, а числа! Если же указывать в запросе ORDER, то при DESC сортирует 1,2,3, а при ASC наоборот. То же самое с датами - сортировка всё портит, если ее отключить - то всё рисует как положено. Где и что я неправильно пишу? Если конечно это можно объяснить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 14:14 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
тип данных ключа или имени (по чём вы сортируете?) выставите правильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 15:39 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
Не понял :( Я плёхо понимайт по ОЛАПски :)) Order ("Что сортируем", "По какому измерению или мере сортируем", "В какую сторону сортируем") Верно? Так почему он сам по себе сортирует вразброс? Или вы имели ввиду другой ключ, в таблице измерений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 16:30 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
не совсем Order ("Что сортируем", "По какой мере сортируем", "В какую сторону сортируем") есть два пути 1. настроить сортировку в измерении, тогда order в запросе не нужен 2. вместо "" написать Val(Rank.CurrentMember.Properties("Key")) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 17:45 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
Странно, почему тогда если я указываю вторым членом измерение, он не ругается, а еще он не меняет порядок при смене DESC на ASC. Ок, тогда по практике - У меня щас в кубе 7 измерений (группа, порядковый номер и 5 штук по дате)- всё потому что я не могу правильно задать измерение по дате. Мне надо и неделю года и день недели - я создал измерение, в которое запихнул 2 поля из табличного календаря - номер недели года и день недели (пн,вт,ср и т.д.) Так вот, хочу получить выборку, где в колонках будет пн, вт, ср, чт, пт, сб, вс, пн, вт, ср, чт, пт, сб, вс и т.д. Т.е чтобы все шло по порядку, несмотря на то, что не видно номера недели, чтобы он тоже учавствовал. А если делать ORDER ([StrDate].[WeekDay].AllMembers, [StrDate], Desc), то вообще никакого смысла и порядка я не вижу. Неужели мне надо заносить в меры значение дня, чтобы иметь возможность сортировать? Неужели порядок колонок нельзя задавать значениями самих колонок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 10:33 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
Назначение функции ORDER - упорядочить элементы в наборе (SET), в зависимости от значения какой-либо ячейки. Т.О. указав [StrDate], в качестве второго аргумента в функции - сортировка происходит по ячейке ([StrDate].DefaultMember, Measures.DefaultMember), смею предположить (исходя из Вашего дизайна куба и Ваших познаний), что [StrDate].DefaultMember = [StrDate].[All StrDate]. Получается, что вы сортируете элементы по одному и тому же значению. Поэтому же нет и разницы между ASC и DESC. Для вашей сортировки достаточно упорядочить элементы самого измерения на этапе проектирования. У каждого измерения есть Member Key Column и Member Name Column - по-умолчанию соритровка установлена на Name (см. Properties, Advanced, Order By в Dimension Editor, предварительно выбрав уровень.). Смените просто его на Key, если он в том порядке в котором он Вам нужен. Либо создайте новый элемент в Member Properties и укажите его в Order By. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 12:44 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
ShIgorПравильно, только не DefaultMember, а CurrentMember DefaultMember будет использоваться тогда, когда это измерение никоим образом в запросе не учавствует, то тогда и CurrentMember = DefaultMember ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 14:44 |
|
||
|
MS AS, OLAP, Delphi и другие- вытянуть день недели, неделю года и сумму по ним
|
|||
|---|---|---|---|
|
#18+
Да, правильно, там действительно CurrentMember. Тогда в этом случае должна быть разница между ASC и DESC. Другое дело, что сортировка будет произведена в рамках иерархии (для каждой недели своя сортировка), а не сквозная (для сквозной BASC и BDESC). Но это все-равно не то, что надо Grigoriy, его случай со свойством "Order By". Правда есть еще один вариант, вернуться к функции ORDER, но вот так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2006, 10:05 |
|
||
|
|

start [/forum/topic.php?fid=49&fpage=337&tid=1870482]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
28ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 299ms |

| 0 / 0 |
