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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.07.2022, 13:54   #1  
DesparioN is offline
DesparioN
Участник
 
86 / 15 (1) ++
Регистрация: 21.10.2014
View (DAX2012)
Добрый день!

В процессе реализации отчета потребовалось сделать вьюху, в которой выводится код продукта и продуктовые аналитики. Из-за архитектуры Аксапты, таблицы были естественно добавлены через OUTER JOIN. Но проблема в том, что при таком раскладе невозможно фильтроваться по пустым значениям или делать JOIN с другими таблицами.

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

Есть ли подобное свойство в Аксапте?
Старый 08.07.2022, 14:08   #2  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от DesparioN Посмотреть сообщение
Добрый день!

В процессе реализации отчета потребовалось сделать вьюху, в которой выводится код продукта и продуктовые аналитики. Из-за архитектуры Аксапты, таблицы были естественно добавлены через OUTER JOIN. Но проблема в том, что при таком раскладе невозможно фильтроваться по пустым значениям или делать JOIN с другими таблицами.

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

Есть ли подобное свойство в Аксапте?
Можно попробовать построить вьюху поверх вьюхи
Честно говоря - давно это было, но в DAX2009 решал аналогичную проблему построив два View. Первая - с OUTER JOIN как и у тебя. Вторая - построена вокруг первой вьюхи с мэппингом 1:1. Поскольку вторая вьюха работает с первой как с обычной таблицей, и не знает что там где-то внутри OUTER JOINS, то в итоге все работает правильно (То есть - фильтрутся и сортируется привычным для аксапты образом).
Есть шансы что в более поздних версиях DAX семантика View изменилась и подход не взлетит, но попробовать не долго...
За это сообщение автора поблагодарили: S.Kuskov (5).
Старый 08.07.2022, 14:19   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,936 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Не понял в чем именно у вас затруднение.
Но может быть вам поможет QueryFilter
Для случая outer join там фильтр попадает в условие where а не ON
Старый 08.07.2022, 14:19   #4  
DesparioN is offline
DesparioN
Участник
 
86 / 15 (1) ++
Регистрация: 21.10.2014
Фокус не удался
И при прямом добавлении вьюхи во вьюху, и через query - результат идентичный.
Старый 08.07.2022, 14:23   #5  
DesparioN is offline
DesparioN
Участник
 
86 / 15 (1) ++
Регистрация: 21.10.2014
Затруднение в том что я не могу такую вьюху фильтровать и соединять с другими таблицами по пустым аналитикам, т.к. в поле хранится не "" а null
Старый 08.07.2022, 14:33   #6  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от DesparioN Посмотреть сообщение
Затруднение в том что я не могу такую вьюху фильтровать и соединять с другими таблицами по пустым аналитикам, т.к. в поле хранится не "" а null
Ну - как вариант - наделать кучу computed fields через SysComputedColumn::isNullExpression и возвращать нули, если поле в первой вьюхе равно Null, или само поле в обратном случае.
За это сообщение автора поблагодарили: DesparioN (1).
Старый 08.07.2022, 15:13   #7  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
397 / 478 (16) +++++++
Регистрация: 27.02.2006
Адрес: Дания
В дополнение к сказанному fed - выглядит метод за таким computed field примерно так:

X++:
    public static str parentPartyIdValue()
    {
        str parentPartyIdField = SysComputedColumn::returnField(tablestr(DirPartyRelationshipEntity),
            dataEntityDataSourceStr(DirPartyRelationshipEntity, DirPartyTableParent),
            fieldstr(DirPartyTable, PartyNumber));

        return SysComputedColumn::if(
                    SysComputedColumn::isNullExpression(parentPartyIdField),
                    SysComputedColumn::returnLiteral(''),
                    parentPartyIdField);
    }
За это сообщение автора поблагодарили: DesparioN (1), Logger (3).
Старый 08.07.2022, 15:23   #8  
DesparioN is offline
DesparioN
Участник
 
86 / 15 (1) ++
Регистрация: 21.10.2014
Благодарю, так получилось.
Теги
computed field, view

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicsaxhints: How to restrict view datasource fields Blog bot DAX Blogs 0 22.03.2016 09:11
emeadaxsupport: AX Content: Using Power View with Dynamics AX Blog bot DAX Blogs 0 17.09.2013 01:12
DAX: Enabling Power View on Multidimensional Models for Microsoft Dynamics AX 2012 R2 Blog bot DAX Blogs 0 27.06.2013 06:16
dynamicsaxbi: Better together: Microsoft Dynamics AX 2012 R2 and SQL Server Power View Blog bot DAX Blogs 0 12.12.2012 13:11

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

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

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