2014-01-08 2 views
1

SSAS 큐브를 사용하여 위치 간의 이동 빈도를 분석하는 경우가 있습니다. 나는 위치를 큐브의 차원과 측정 빈도로 정의했다.SSAS 큐브 또는 관계형 데이터베이스에서 추가 데이터 가져 오기

이 데이터를 반환하는 서비스를 만들고 있으며 위치에서 데이터를 반환 할 때마다 위치와 관련된 몇 가지 추가 필드 (이름, 지리적 좌표 등)를 반환해야하지만 그렇지 않습니다. 큐브에 사용 된 차원의 일부입니다.

는 그 정보를 얻기 위해 두 가지 방법을 생각할 수 있습니다

  1. 이 같은 MDX 쿼리 큐브에서 그들을 차원에 필요한 모든 필드를 추가 얻을.
  2. 큐브에서 데이터를 가져온 후 큐브의 기본 역할을하는 관계형 데이터베이스에서 추가 필드를 가져옵니다.

이 두 옵션 모두 내가 필요한 정보를 제공 할 수 있습니다. 무엇이 가장 좋은 옵션인지 모릅니다.

답변

1

차원에 정보를 추가하면 모든 것이 쉽게 수행되고 MDX 쿼리를 실행하면 모든 것이 있습니다. 서비스에서 복잡한 검색 로직을 구현할 필요가 없습니다. 추가 필드 중 일부를 here과 같은 사용자 정의 속성으로 구현하는 것을 고려할 수도 있지만, 사용중인 정확한 클라이언트 인터페이스에 따라 좀 더 복잡하게 검색 할 수 있습니다. 따라서 가장 쉬운 방법은 속성으로 구현하는 것입니다. 당신은 좀 더 복잡한 길을 가고 싶어, 당신은 정상 MDX 문의 결과에서 정보를 얻고 싶다면

, 당신은 ON ROWS 또는 ON COLUMNS 등의 속성을 포함하는 축 전에 DIMENSION PROPERTIES [Dim].[Attrib].[Prop]를 추가해야 . 여기에는 결과의 속성이 포함됩니다. 액세스 방법은 클라이언트 인터페이스에 따라 다릅니다. 이 채울 수있는 FetchAllProperties 메소드를 호출 할 필요 - documentation에 따라 -

당신이 Adomd.net를 사용하는 경우, 당신은 구성원의 Properties 호텔에서 특성을 얻을 수 있지만. 속성을 사용하는 경우

는 또 다른 방법이있다 : 클라이언트에 필요한 특별한 구현하지 않고 척도로서 속성 값을 제공합니다

[Dim].[Attrib].CurrentMember.Properties("Prop") 

로 측정 정의.

속성에 대한 액세스 권한을 얻거나 측정 값을 정의하는 특수한 처리가 필요하므로 대부분의 경우 일반 특성이 최상의 솔루션이됩니다.

+0

나는 마침내 제안을 테스트했지만 속성 값을 얻을 수 없습니다. ADOMD.NET을 사용하는 C# 프로그램에서 MDX 쿼리를 실행하고 있습니다. 필요한 모든 정보를 얻을 수있는 유일한 방법은 추가 정보를 일반적인 차원 특성으로 정의하고 쿼리에 출력 열로 추가하는 경우입니다. – lbarreira

+0

@lbarreira 필자가 썼듯이 일반 속성으로 정의하는 것이 더 쉽습니다. 어쨌든, 내 대답에 속성에 액세스하는 방법에 대한 정보를 추가했습니다. – FrankPl

+0

나는 필요한 정보를 얻는 두 가지 방법을 사용하여 작은 테스트를 만들었습니다. 테스트를 여러 번 (쿼리를 100 번 반복) 실행하고 두 옵션 사이에서 큐브 구조를 변경 한 후 추가 속성을 사용자 지정 속성으로 정의한 다음 클라이언트의 정보를 얻으려면 약 1600ms가 필요합니다. 속성을 일반 치수 특성으로 정의하면 필요한 시간은 1000ms에 불과합니다.이러한 성능 차이로 인해 정상적인 차원 특성을 사용할 것이라고 생각합니다. – lbarreira