Производительность HANA Studio Star Join левое соединение против внутреннего соединения в графическом представлении расчета (SAP ECC) - PullRequest
0 голосов
/ 13 июня 2019

Прежде всего, если у вас нет или ограниченный опыт работы с HANA Studio и Business Objects продвигайтесь вперед; это, вероятно, не будет иметь смысла для вас.

Допустим, мы создаем представление расчета размеров, объединяющее EKKO / EKPO (строка заказа на поставку и заказа на поставку) и называем его "CA_PO"

Затем мы создаем звездообразное соединение, используя этот CA_PO, чтобы получить все значения или тексты таблицы проверки. В частности, в этом случае INCO1 (INCOTERMS)

Одно из таких объединений будет EKKO.INCO1 с TINCT.INCO1 (EKKO.MANDT TO TINCT.MANDT и для простоты позволяет фильтровать только для языка 'E'.

Допустим, у EKKO 70 000 записей; поэтому я ожидаю, что результаты этого ВНУТРЕННЕГО СОЕДИНЕНИЯ также будут иметь 70000 записей Однако я теряю много записей.

Когда я смотрю на различные значения в EKKO, я обнаруживаю, что несколько значений INCO1 из EKKO являются пустым набором ''; не нулевой, как ожидалось. Так что мое внутреннее соединение между этими таблицами приводит к потерям записей.

Я думал о переходе на левые соединения; но понял, когда пользователи позже фильтруют в Business Objects по описанию INCO1 для «Free on Board», я не собираюсь ограничивать записи из-за левого соединения ... Вместо этого; Я ограничусь только отображаемым текстом. Таким образом, система должна будет проанализировать все записи, сохраняя только те, которые являются FOB, вместо того, чтобы ограничиваться только этими записями в первую очередь.

Так что это заставило меня задуматься ... Как мне справиться с тем фактом, что ECC хранит пустой набор вместо нулевого. если бы значения были нулевыми, я мог бы использовать внутреннее соединение, чтобы не потерять такие записи.

Иными словами: ВНУТРЕННЕЕ СОЕДИНЕНИЕ от EKKO.INCO1 к TINCT.INCO1 приводит к потере записи, поскольку значения INCO1 от EKKO не существуют в TINCT.INCO1. в частности, пустое заданное значение.

В качестве обходного пути я мог бы объединить запись для значения пустого набора в TINCT в моем представлении вычисления измерения Списка значений, или я мог вычислить INCO1, чтобы изменить пустой набор на ноль (но это означает объединение в вычисляемом столбце, который Лучшая практика говорит, что не надо делать) Ни одно из них действительно мне нравится.

Итак, основная проблема в том, что у меня есть записи в EKKO.INCO1, которых нет в его проверочной таблице TINCT. Я хочу избежать использования левого соединения, потому что механизм HANA вернет все записи и затем уменьшит до значения «Свободный на борту», ​​который я ищу, вместо того, чтобы ограничивать результаты от EKKO только теми, которые «Свободны на борту» для начала. с.

Опять же, если EKKO имеет 70000 записей, и только 7000 из них являются "Свободными на борту", запрос hana возвращает только 7000 записей. не все 70000. не вернуть все 70000, а затем в BO ограничить до 7000 я хочу. Для этого я думаю, что мне нужно использовать внутреннее соединение в соединении Star; однако, делая это, я теряю записи. Конечно, я могу не захотеть эти записи на данный момент; но, возможно, пользователь запросит те записи, которые не имеют описания TERM ... и что тогда?

Извините за мой бродячий.

...