2010-01-12 2 views

답변

1

나는 두 가지 대안을 볼 수 있습니다. .Net 저장 프로 시저를 만드는 것은 하나이지만, 호출하는 데 약간의 오버 헤드가 있으므로 너무 많은 셀에서 Mode 함수를 실행하고 싶지는 않을 것입니다.

다른 옵션을 사용하려면 너무 많은 수의 고유 한 값을 사용하여 작업해야하는 경우 숫자를 기반으로하는 특성이있는 차원을 만드는 것이 좋습니다. 그런 다음 행 수 측정을 작성하고 숫자 값으로 차원에 대해 TOPCOUNT (..., 1)을 수행하여 모드를 확보 할 수 있습니다.

-1

이 그것을 수행해야합니다

create table #temp (value int) 
insert into #temp (value) values (1) 
insert into #temp (value) values (1) 
insert into #temp (value) values (1) 
insert into #temp (value) values (2) 
insert into #temp (value) values (2) 
insert into #temp (value) values (3) 
insert into #temp (value) values (3) 
insert into #temp (value) values (3) 
insert into #temp (value) values (3) 
insert into #temp (value) values (3) 
insert into #temp (value) values (3) 
insert into #temp (value) values (4) 


select value from (select top 1 count(*) as counts, value from #temp group by value order by count(*) desc) as myTemp 
+0

SQL 질문이 아닌 MDX 질문으로 태그되었습니다. TSQL은 SQL Server Analysis Services에서 사용되지 않으므로 내 질문이 해결되지 않습니다. 모드는 Sql Server 또는 SSIS로 계산하기 쉽지만 필요에 따라 SSAS에서 수행해야합니다. –

0

모드에 관심이있는 숫자의 사실 크기 (차원을 축소)를 작성한 다음 행 개수에 대해 사용하면 최대 개수는 1입니까?

또는 may 시나리오에 사용할 수있는보다 일반적인 MDX 계산을 수행하고 있습니까?

+0

나는 좀 더 일반적인 계산을했습니다. 나는 이걸 생각해 냈지만 너무 느려서 사용할 수 없다. 내 특정 시나리오에서 MODE는 MEDIAN과 동일하게 만드는 값의 50 % 이상 이었으므로 MEDIAN이 내장 된 이후에 MEDIAN을 사용했습니다. MEDIAN ([Billable Item]. [Billable Item] [계약] - [계약 조정 - 청구 가능 항목]) 지금까지는 프로덕션 환경에서 사용하기에는 충분히 빠르지 않았지만 아주 작은 데이터 세트에서는 몇 분이 걸렸습니다. 내가 속도를 내려면 EXISTS 나 다른 종류의 필터를 사용해야한다고 생각합니다. –

+0

@Shane - 계산 된 멤버 인 경우 비어 있지 않은 동작을 설정하는 것은 가치가 있습니다. http://msdn.microsoft.com/en-us/library/ms166568.aspx 설정하지 않으면 빠르게 수행해야합니다. 잘못 설정하면 잘못된 결과가 발생할 수 있으므로주의하십시오. – Meff

관련 문제