2014-01-05 3 views
1

나는 SSAS사실을 차원으로 필터링하는 방법은 무엇입니까?

나는이 쿼리를 작성 SQL Server 2008 R2을 사용하고 작동 :

SELECT 
[Measures].[Circulation Count] 
    ON COLUMNS 
FROM [Store] 
where [Circulation Kind].[Circulation Code].&[1] 

그리고 결과는 다음과 같습니다 362154.2154

을하지만 Filter 기능을 사용하면 내 결과가 비어 있습니다.

SELECT 
Filter(
    [Measures].[Circulation Count] 
     , 
    [Circulation Kind].[Circulation Code] 
    = 
    [Circulation Kind].[Circulation Code].&[1] 
) 
    ON COLUMNS 
FROM [Store] 

Filter 기능으로 내 결과를 필터링하려면 어떻게해야합니까?

+0

그런 필터 기능을 사용하고 싶지는 않습니다. 일반적으로 필터 함수는 차원 멤버 집합을 필터링하는 데 사용됩니다. 예를 들어 지난 달 판매액이 $ 100000 이상인 매장을 필터링합니다.이론적으로 묻는 것입니까, 아니면 성취하려는 쿼리보다 더 많은 것이 있습니까? – mmarie

+0

where 절을 사용하지 않고이 쿼리를 수행하는 방법을 찾으려면 [Circulation Kind]. [Circulation Code]. & [1]을 ROWS 축에 넣을 수 있습니다. 또는 계산 된 구성원 인 Sum ([Measures]. [Circulation Count], [Circulation Kind]. [Circulation Code]. & [1])을 작성한 다음이를 열에 사용할 수 있습니다. – mmarie

답변

0

은 @FrankPI와의 통신을 한 후 내가 좋아하는이 좋다.

+1

실제로, 내부 괄호는 생략 할 수 있습니다. 실제로는 ([Measures]. [Circulation Count], [Circulation Kind]. [Circulation Code]. & [1]) 튜플이 사용됩니다. Analysis Services는 관용이며 이러한 괄호를 사용할 수 있습니다. – FrankPl

+0

merci @FrankPl. –

1

무엇 당신의 Filter 표현하는 일은 다음과 같습니다

  • 측정 [Measures].[Circulation Count]로 구성된 하나 개의 요소 세트와 함께 시작.
  • 그리고,이 [Circulation Kind].[Circulation Code]의 값은 [Circulation Kind].[Circulation Code].&[1]와 동일 값이 설정 KEEP (= 필터) 요소 (= 측정) 발. 특성과 멤버를 비교하면 동일한 형식을 만들기 위해 암시 적 형식 캐스트가 트리거되므로이 경우 암시 적으로 DefaultMember 메서드를 적용하여 특성을 멤버로 변환합니다. 즉, 기본 멤버 (보통 All 멤버)의 값과 키가 1 인 멤버의 값을 비교합니다. 이 속성에 구성원이 둘 이상 있다고 가정 할 때 이것은 항상 거짓입니다. 문맥 Circulation Count의 측정치 Circulation Count의 값을 설정 =로는,이 경우, 양쪽 값을 비교하는 것이

참고. 회원 ID를 비교하려면 = 대신 IS을 사용해야합니다.

진술에 해당하는 것은 무엇입니까? 난 당신이 WHERE 절을 사용하지 않으려는 이유는 잘 모르겠지만, @mmarie이 명시된 바와 같이, 당신은 단지 축 행에 WHERE 축에서 [Circulation Code]을 움직일 수 :

SELECT 
[Measures].[Circulation Count] 
    ON COLUMNS, 
[Circulation Kind].[Circulation Code].&[1] 
    ON ROWS 
FROM [Store] 

그리고 당신이 정말로, 정말로 원하는 경우 Filter를 사용하려면 사용할 수 있습니다

SELECT 
[Measures].[Circulation Count] 
    ON COLUMNS, 
Filter([Circulation Kind].[Circulation Code].Members as c, 
     c.Current IS [Circulation Kind].[Circulation Code].&[1] 
     ) 
    ON ROWS 
FROM [Store] 

.Members의 사용을 명시 적으로 마지막 성명에서, 회원들의 세트 및 IS하지 =의 사용에 속성을 변환 할 수 있습니다.

With 
    Member X As 
     ( 
      [Measures].[Circulation Count] , 
      (
       [Circulation Kind].[Circulation Code].&[1] 
     ) 
     ) 

Select 
    X On Columns 
From <> 

그리고이 방법으로 나는 dimensionmeasure를 필터링 할 수 있습니다

+0

회원 만들기를 원하고 회원 구문에서 내가 사용할 수없는 곳! –

+0

다음과 같은 몇 가지 : 회원 X로 ([Measures]. [Circulation Count], [Circulation Kind. [Circulation Code]. & [1])) –

+0

멤버 구문이 필요한 것으로 가정하고 있습니까? 어쩌면 당신이 필요로하는 것은 집합이 아니라 구성원입니다. – FrankPl

관련 문제