나는 주문 위치와 해당 주문 번호를 포함하는 사실 표가 있습니다. 약 250 mio 행이 있습니다.테이블 형 모델의 DAX가 포함 된 자체 필터링 테이블
내 목표는 다음 질문에 대답하는 데 사용할 수있는 측정 값을 만드는 것입니다. 제품 xyz가 포함 된 모든 주문의 총 수익은 얼마입니까?
하나의 열 OrderFilter [ArticleNr] 만있는 Orderfilter라는 모든 개별 아티클 번호가 포함 된 표를 추가했습니다. 이 테이블은 orders 테이블을 필터링하는 데 사용됩니다. 이 테이블은 orders 테이블과 관련이 없습니다.
이 설정을 기반으로 다음과 같은 조치를 취했습니다.
Orderfilter Sum sales:=SUMX(
CALCULATETABLE (
Orders;
FILTER (
Orders;
CONTAINS (
CALCULATETABLE (
VALUES(Orders[OrderNr]);
FILTER (
Orders;
CONTAINS (
VALUES (Orderfilter[ArticleNr]);
Orderfilter[ArticleNr];
Orders[ArticleNr]
)
)
);
Orders[OrderNr];
Orders[OrderNr]
)
)
);
Orders[Salesamount]
)
이 계산은 효과가있는 것처럼 보일 수 있지만 매우 느립니다. Excel에서 계층 구조를 행에 넣어 사용하려고하면 시간이 초과됩니다.
이 쿼리를 튜닝 할 수 있습니까?
감사합니다, 헤닝 랭
업데이트 : 원하는 결과 테이블
주문 테이블 (정말 ... 여기에 테이블을 추가하는 방법을 모른다). ArticleNr = 2로 필터링하면 "< - 유지"가 유지됩니다.
|OrderNr |ArticleNr |
|1 |1 | <- Keep
|1 |***2*** | <- Keep
|2 |1 |
|2 |3 |
|3 |***2*** | <- Keep
왜 두 테이블간에 관계를 만들지 않습니까? ** FILTER **에서 ** CONTAINS ** 기능을 사용하는 것보다 더 효과적입니다. 명시 적 관계는 항상 필터보다 빠릅니다. –
안녕하세요, 빠른 답변을 보내 주셔서 감사합니다. 나는 관계가이 문제에 도움이되지 않을 것이라고 생각합니다. 내가 그 테이블들 사이에 관계를 만들면 Orders [ArticleNr]와 Orderfilter [ArticleNr]을 관련 짓습니다. 이 방법은 Orders 테이블을 ArticleNr을 기반으로 필터링합니다. 그러나 그것은 내가 성취하고자하는 것이 아닙니다. OrderNr을 기반으로 Orders 테이블을 필터링하려고합니다. "x, y 또는 z 기사가 들어있는 모든 주문의 판매가 무엇입니까?" 당신의 제안으로 나는 "기사 x, y 또는 z의 판매는 무엇입니까?"라는 질문에 대답 할 수 있습니다. 또는 나는이 가정에서 잘못 되었습니까? –
원본에서 처리 할 수 있습니다. 즉, Orders 및 Orderfilter 테이블에 공통 열을 만듭니다. 샘플 데이터와 예상 결과를 포함하도록 질문을 편집하십시오. –