AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.08.2019, 20:04   #1  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Financial dimension values concatened by mask
коллеги, помогите решить задачу группировки значений финансовых измерений в одном поле по заданной маске.

грубо говоря, есть некий набор атрибутов (recid in DimensionHierarchy), в которой существуют несколько выбранных атрибутов (DimensionHierarchyLevelView)

а теперь я хочу сгруппировать наборы значений этих самых выбранных атрибутов из DimensionAttributeValueSetItemView так, чтобы если для атрибута из иерархии нет значения, то в итоговой строке он был бы представлен, например, пустой строкой или n/a.

вот, что я имею в виду на картинке
Нажмите на изображение для увеличения
Название: sql_concat.png
Просмотров: 156
Размер:	171.3 Кб
ID:	12361

вот мой запрос, который планирую запихать в computed column на своей вьюхе (работает норм)

X++:
select
	t1.DIMENSIONATTRIBUTEVALUESET
,STUFF((SELECT '-' + t16.NAME 
		FROM DIMENSIONATTRIBUTE t16
            JOIN DIMENSIONHIERARCHYLEVELVIEW as t17
                    on t17.DIMENSIONATTRIBUTE = t16.RECID 
					where
					t17.HIERARCHYrecid = 68719485163
           ORDER BY t16.RECID
           FOR XML PATH('')), 1, 1, '')  as ConcatDimNames
	,STUFF((SELECT '-' + t6.NAME +
			STUFF((SELECT '-' + t3.DisplayValue
                    from DimensionAttributeValueSetItemView as t3
                    where
                    t1.DimensionAttributeValueSet = t3.DimensionAttributeValueSet
					and t7.DIMENSIONATTRIBUTE = t3.DIMENSIONATTRIBUTE
                    order by t3.DIMENSIONATTRIBUTE
                    for xml path('')), 1, 1, '') 
					
		FROM DIMENSIONATTRIBUTE t6
            JOIN DIMENSIONHIERARCHYLEVELVIEW as t7
                    on t7.DIMENSIONATTRIBUTE = t6.RECID 
					where
					t7.HIERARCHYrecid = 68719485163
           ORDER BY t6.RECID
           FOR XML PATH('')), 1, 1, '') as ConcatValues
 from DimensionAttributeValueSetItemView t1
   join DIMENSIONHIERARCHYLEVELVIEW t4
 on t4.DIMENSIONATTRIBUTE = t1.DIMENSIONATTRIBUTE
  where
		t4.HIERARCHYrecid = 68719485163
 group by t1.DIMENSIONATTRIBUTEVALUESET
чую, что можно как-то применить регулярные выражения или stuff, но знаний не хватает
__________________
Felix nihil admirari
Старый 10.08.2019, 02:57   #2  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Короче, задачу в поставленном виде я решил, но немного отрихтовав структуру данных (то есть, не на стадии цирковых выкрутасов с SQL).

Делается это вот так http://alexvoy.blogspot.com/2019/08/...nsactions.html и применимо к любым транзакциям с финансовыми измерениями.

Мозг лопается, поэтому буду рад любой критике и замечаниям!
__________________
Felix nihil admirari
За это сообщение автора поблагодарили: mazzy (5).
Старый 10.08.2019, 15:09   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от wojzeh Посмотреть сообщение
задачу группировки значений финансовых измерений в одном поле по заданной маске.
формулировка в программистских терминах - понятна.
решение тоже. хоть и хитровывернутое.

можешь сказать, а каков был исходный вопрос пользователя?
чего они хотели то?
__________________
полезное на axForum, github, vk, coub.
Старый 10.08.2019, 16:21   #4  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
сольдо по выбранным значениям финансовых измерений

Можешь предложить пути упрощения?

Это лишь начало банкета, дальше будет про накопительные итоги по каждому из них
__________________
Felix nihil admirari
Старый 10.08.2019, 16:37   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
"выбранным" - фильтрация. я так и думал.

Цитата:
Сообщение от wojzeh Посмотреть сообщение
Можешь предложить пути упрощения?
нет. сам бы написал, если бы знал.

я порождал таких же монстров, которые не принесут радости ни пользователям, ни поддержке, ни программистам.

Цитата:
Сообщение от wojzeh Посмотреть сообщение
Это лишь начало банкета, дальше будет про накопительные итоги по каждому из них
угу-угу.
особенно с учетом того, что число комбинаций значений со временем будет только расти.

будь проклят тот архитектор, который одобрил ЭТУ финансовую аналитику, но не подумал как ЭТО будут использовать.
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 10.08.2019 в 16:40.
Старый 10.08.2019, 20:53   #6  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от mazzy Посмотреть сообщение
"выбранным" - фильтрация.
я порождал таких же монстров
а что там особо монструозного? я разбил на кучу вьюх (а обычно я ещё их делаю на базе кверей) как раз для упрощения понимания.

Цитата:
Сообщение от mazzy Посмотреть сообщение
"угу-угу.
особенно с учетом того, что число комбинаций значений со временем будет только расти.
ну, расти оно, может, и будет, но не драматически. сейчас их 3500 штук на всю сотню юридических лиц. даже если там и будут появляться новые департаменты, например, то уж точно не десятками.

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

Нажмите на изображение для увеличения
Название: измерения.png
Просмотров: 173
Размер:	124.1 Кб
ID:	12363

Цитата:
Сообщение от mazzy Посмотреть сообщение
"будь проклят тот архитектор, который одобрил ЭТУ финансовую аналитику, но не подумал как ЭТО будут использовать.
да, не скажу, что получил большое удовольствие, вникнув (вникнув ли??) в устройство этого аттракциона, но задача-то вполне себе обычная, с точки зрения бизнеса. другое дело, что акса - не место для OLAP.

но я рад, что удалось решить задачу без кодирования
__________________
Felix nihil admirari
Старый 12.08.2019, 13:10   #7  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
886 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от mazzy Посмотреть сообщение
будь проклят тот архитектор, который одобрил ЭТУ финансовую аналитику, но не подумал как ЭТО будут использовать.
Истинно говорю я Вам - настают последние дни! Налетит Земля на небесную ось !!!
Раз уж даже mazzy так об одной из "священных коров" отзывается
__________________
Мы летаем, кружимся, нагоняем ужасы ...
Старый 13.08.2019, 14:29   #8  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от mazzy Посмотреть сообщение
я порождал таких же монстров, которые не принесут радости ни пользователям, ни поддержке, ни программистам.
.
Все мы не без греха
Старый 13.08.2019, 16:46   #9  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от user_ax Посмотреть сообщение
Все мы не без греха
Давайте по сути, народ!

Что именно монструозного тут? Какие есть более изящные подходы?
__________________
Felix nihil admirari
Старый 13.08.2019, 17:42   #10  
VORP is offline
VORP
Участник
Аватар для VORP
 
146 / 95 (4) ++++
Регистрация: 26.05.2006
Не до конца понимаю подходит ли по смыслу или нет, но в DimensionAttributeValueCombination и DimensionValueSet в 365 есть невидимые поля которые разворачивают аналитики в строку, может быть можно как то использовать...
Старый 13.08.2019, 18:30   #11  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от VORP Посмотреть сообщение
Не до конца понимаю подходит ли по смыслу или нет, но в DimensionAttributeValueCombination и DimensionValueSet в 365 есть невидимые поля которые разворачивают аналитики в строку, может быть можно как то использовать...
это то место, откуда я и отправился в волшебный полёт.

мне и самому интересно, как бы мы могли сделать привязку по набору выбранных атрибутов с колонками в этой таблице. желательно без кодирования. есть идеи?
__________________
Felix nihil admirari
Старый 19.08.2019, 14:07   #12  
kair84 is offline
kair84
Участник
 
47 / 58 (2) ++++
Регистрация: 15.04.2010
Адрес: Belarus
Сорри если неправильно понял проблему, но на счет запроса вроде бы все просто :

PHP код:
declare @HIERARCHYrecid bigint 68719485163

select
    t1
.DIMENSIONATTRIBUTEVALUESET
    
,STUFF((SELECT '-' t16.NAME 
            FROM DIMENSIONATTRIBUTE t16
                JOIN DIMENSIONHIERARCHYLEVELVIEW 
as t17
                        on t17
.DIMENSIONATTRIBUTE t16.RECID 
                        where
                        t17
.HIERARCHYrecid = @HIERARCHYrecid
               ORDER BY t16
.RECID
               
FOR XML PATH('')), 11'')  as ConcatDimNames
    
,STUFF((SELECT '-' + -- t6.NAME +
        
ISNULL(
            
STUFF((SELECT '-' t3.DisplayValue
                    from DimensionAttributeValueSetItemView 
as t3
                    where
                    t1
.DimensionAttributeValueSet t3.DimensionAttributeValueSet
                    
and t7.DIMENSIONATTRIBUTE t3.DIMENSIONATTRIBUTE
                   
), 11''
            , 
'N/A')
        
FROM DIMENSIONATTRIBUTE t6
            JOIN DIMENSIONHIERARCHYLEVELVIEW 
as t7
                    on t7
.DIMENSIONATTRIBUTE t6.RECID 
                    where
                    t7
.HIERARCHYrecid = @HIERARCHYrecid
           ORDER BY t6
.RECID        
           
FOR XML PATH('')), 11'') as ConcatValues

 from DimensionAttributeValueSetItemView t1
   join DIMENSIONHIERARCHYLEVELVIEW t4
 on t4
.DIMENSIONATTRIBUTE t1.DIMENSIONATTRIBUTE
  where
        t4
.HIERARCHYrecid = @HIERARCHYrecid
 group by t1
.DIMENSIONATTRIBUTEVALUESET 
к стати один из блоков ORDER BY .. FOR XML PATH - был лишний, т.к. в DimensionAttributeValueSetItemView для DimensionAttributeValueSet, DIMENSIONATTRIBUTE - не будет повторений.
За это сообщение автора поблагодарили: raz (10), wojzeh (5).
Старый 19.08.2019, 19:19   #13  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
Цитата:
Сообщение от kair84 Посмотреть сообщение
Сорри если неправильно понял
всё правильно понял и правильно решил! красавчик, вообще, джигит! спасибо!
__________________
Felix nihil admirari
Старый 20.08.2019, 15:14   #14  
kair84 is offline
kair84
Участник
 
47 / 58 (2) ++++
Регистрация: 15.04.2010
Адрес: Belarus
Пожалуйста!
Теги
computed column, dimensions, regular expressions, sql, view

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
ax_gfm_framework_team: Dimension defaulting in accounting distributions, Part 4 - Fixed dimensions and handling of empty dimension values Blog bot DAX Blogs 0 20.12.2013 23:11
ax_gfm_framework_team: Dimension defaulting in accounting distributions, Part 3 - Splitting and defaulting using Financial dimension default templates and Main account allocation rules Blog bot DAX Blogs 0 18.12.2013 09:11
sumitsaxfactor: Replacing Financial Dimension in Ledger Dimension Blog bot DAX Blogs 0 19.01.2012 13:11
daxline: Set financial dimension values through code in AX 2012 Blog bot DAX Blogs 0 18.11.2011 02:26
Khue Trinh: Setting up a link between a financial dimension and the site inventory dimension Blog bot DAX Blogs 0 27.09.2010 13:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:42.