2016-10-06 4 views
1

날짜가있는 데이터 집합이 있습니다. 하나의 열만 있습니다. CreatedOnDate이며 그 값은 아래와 같이 datetime에 있습니다. 도시 된 바와 같이Tableau - 매개 변수를 기반으로하는 필터

enter image description here

이 세트 값 6 개월있다. 나는 기반으로 날짜를 변환 내가 (날짜에 만든 라고 함) 계산 된 필드를 만든

enter image description here

, 월간 주간, 매일 (아래 스크린 샷) 가능한 값이 보고서 유형라는 매개 변수를 선택한 보고서 유형. 수식은 아래에 표시됩니다.

CASE [Report Type] 
    WHEN "Monthly" THEN DATENAME('month', [CreatedOnDate]) 
    WHEN "Weekly" THEN "Week " + STR(DATEPART('week',[CreatedOnDate])) 
    WHEN "Daily" THEN STR(MONTH([CreatedOnDate])) + "/" + STR(DAY([CreatedOnDate])) + "/" + STR(YEAR([CreatedOnDate])) 
END 

이것은 완벽하게 작동합니다. 계산 된 필드의 결과는 다음과 같습니다.

enter image description here

내가 지금 어떻게 이것을 달성 할 다음과 같은 논리

IFF Report Type = "Daily" Display only the last 30 days in the dataset 
Other cases Show all values 

을 통합해야

?

답변

1

woodhead92 , 나는 그렇게 극적 장면의 V8에 도입 된 Level of Detail expressions라고 사용하는 것이 좋습니다 것 중요하다.

{FIXED : MAX(CreatedOnDate) } 

이의이 MaxDate LOD 부르 자 : 첫 번째는 가장 최근 (= MAX) 날짜를 계산하는 계산 필드를 만듭니다.

IF [Report Type] = "Daily" AND 
    ([CreatedOnDate] >= DATEADD('day', -30, [MaxDate LOD]) THEN 'Show' 
ELSEIF [Report Type] = "Weekly" OR [Report Type] = "Monthly" THEN 'Show' 
ELSE 'Hide' 
END 

이 필터를 추가하고 전용 '쇼'값을 선택합니다 : 그런 다음 새로운 계산 된 필드 표시/숨기기를 추가. 주간/월간 날짜 세분화가 선택 될 때 모든 날짜를보고 싶다고 가정합니다. 그렇지 않은 경우 ELSEIF 조건을 추가하십시오.

위의 수식은 단순화 될 수 있지만 세부 정보 표현 수준의 작동 방식을 이해하는 데 도움이되도록 가능한 한 자세하게 표시하려고합니다. 명심해야 할

한 가지 - 고정 LOD 계산은 필터를 덮어 쓰기 때문에 사용 가능한 날짜 범위 필터가있는 경우, 당신은 문맥에 추가 확신해야 할 것이다. 필터 컨텍스트에 대한 자세한 내용은 this a bit out-dated, but still excellent blog post에서 확인할 수 있습니다.

0

조건에 대해 계산 된 필드를 만든 다음 필터 선반에 배치하여 참으로 평가되는 행만 포함시킵니다.

[Report Date] <> "Daily" or 
datediff('day', [CreatedOnDate], { max[CreatedOnDate] } < 30 

컬리 브레이스는 LOD 계산

관련 문제