2010-01-12 3 views

Répondre

1

je peux voir deux alternatives possibles. La création d'un proc stocké .Net en est un, mais il y a un peu de surcharge en les appelant, donc vous ne voudriez pas exécuter une fonction Mode sur un trop grand nombre de cellules.

L'autre option, s'il n'y a pas un trop grand nombre de valeur distincte que vous avez besoin d'opérer à travers, est de créer une dimension avec un attribut de base du nombre. Ensuite, vous pouvez créer une mesure de nombre de lignes et obtenir le mode en faisant TOPCOUNT (..., 1) sur la dimension avec les valeurs numériques.

-1

Cela devrait le faire:

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

Cela a été marqué comme une question MDX, pas une question SQL. TSQL n'est pas utilisé dans Sql Server Analysis Services, cela ne résoudra pas ma question. Le mode est assez facile à calculer dans Sql Server, ou même SSIS, mais j'en ai besoin dans SSAS pour mes besoins. –

0

Que diriez-vous de créer une dimension de fait (dimension dégénérée) des chiffres que vous êtes intéressé par le mode de, puis en utilisant que contre un nombre de lignes, prenez le Top Count de 1?

Ou êtes-vous après un calcul MDX plus général que vous pouvez utiliser pour les scénarios mai?

+0

J'étais après un calcul plus général. Je suis arrivé avec ça mais c'est tellement lent que c'est inutilisable. Il est avéré que dans mon scénario spécifique MODE était plus de 50% des valeurs qui en fait le même que le MEDIAN alors je suis allé de l'avant et utilisé MEDIAN depuis qu'il a été construit en. MEDIAN ([facturable article]. [Facturable article .] [Tous] .Enfants, [mesures] [ajustement contractuel -. facturable article]) jusqu'à présent, je suis incapable de le rendre assez rapide pour l'utilisation de la production cependant, il prend quelques minutes sur des ensembles de données très petites. Je pense que je dois utiliser EXISTS ou un autre type de filtre pour l'accélérer. –

+0

@Shane - S'il s'agit d'un membre calculé, définir le comportement non vide vaut le coup: http://msdn.microsoft.com/fr-fr/library/ms166568.aspx Il devrait être plus rapide s'il n'est pas activé, mais soyez prudent car le réglage incorrect peut produire de mauvais résultats. – Meff

Questions connexes