2013-04-02 2 views
2

최근에 다 대 다 관계에 대해 a question에 물었고이 쿼리를 사용하여 매우 잘 응답 한 교차점을 계산하는 방법을 물었습니다. 자, 큐브가 더 많은 데이터로 확장해야하는 또 다른 좋은 요구 사항이 있습니다. 일반적인 질문은 남아 있습니다. How many orders contain both product x and y?SSAS 계산 방법 : 관계형 데이터베이스 액세스

그러나 측정 값 그룹은 현재 현재 약 14 억 개의 행으로 남아 있습니다. 다른 숨겨진 교차 참조 측정 값 그룹과 함께 다른 게시물에 설명 된 방법을 사용하여이를 구현하려고했습니다. 그러나 이것은 하드웨어에 비해 너무 많아 큐브는 0.5TB 크기에 도달하고 쿼리는 완료하는 데 몇 분이 걸립니다.

다른 옵션을 사용하려고합니다. 계산 된 측정 값에서 관계형 데이터베이스에 액세스 할 수 있습니까? described in this article과 같은 UDF를 사용할 수있는 것 같습니다. 관계형 데이터베이스를 쿼리하고 사용자가 선택한 제품이 포함 된 모든 주문을 반환하는 C# 함수를 작성할 수 있습니다. 그러나이를 위해서는 사용자가 선택한 모든 차원 데이터를 UDF에 제공해야합니다. 또한 계산 된 값을 리턴하기 위해 UDF가 필요하므로 계산 된 구성원의 결과로 출력 될 수 있습니다. 그게 가능하니? 그렇다면 어떻게? 예제 Microsoft는 UDF와 같이 작은 결정적 문자열 기능 만 제공합니다.

답변

0

여기 내 결과 :

제한 사항이 있지만 가능할 것으로 보입니다. Microsoft.AnalysisServices.AdomdServer.Context 클래스는 각 계층 구조의 currentMember를 제공 할 수 있지만 Excel 스타일 -Dubselect에서는 작동하지 않습니다. 단일 멤버 또는 AllMember를 포함합니다.

또 다른 옵션은 dmv SELECT * FROM $System.DISCOVER_SESSIONS을 사용하여 MDX 쿼리를 가져 오는 것입니다. 주어진 세션에 대한 마지막 mdx 쿼리를 포함하는 열이 해당 뷰에 있습니다. 그러나 자신의 마지막 쿼리를 덮어 쓰지 않으려면 현재 연결을 사용하지 않고 새 연결을 열어야합니다. 세션 ID는 Microsoft.AnalysisServices.AdomdServer.Context.CurrentConnection.SessionID을 통해 얻을 수 있습니다.

두 번째 접근 방법은 우리의 유스 케이스에서는 괜찮습니다. 이 아니기 때문에 축을 처리 할 수 ​​있습니다. udf-function에는 셀 범위가 있지만 어떤 셀에 있는지 알지 못합니다. 마지막 비트에 대해 아는 사람이 있으면 알려주십시오. 감사!