2008-11-26 7 views
2

Je suis en train de créer un cube avec une seule mesure. Cette mesure est un compte distinct d'une colonne "nom". Le cube fonctionne parfaitement si la mesure est définie sur "compte". Cependant, quand je mets compte distinct je reçois cette erreur:Cubes OLAP Analysis Services 2005: Puis-je créer une mesure de comptage distincte sur une colonne nvarchar?

« Erreurs dans le moteur de stockage OLAP: L'ordre de tri spécifié pour les enregistrements de comptage distincts est incorrect »

J'ai lu dans certains blogs que vous ne pouvez avoir un compte distinct sur une colonne numérique. Je ne peux pas voir une bonne raison pour cela, et je ne peux pas trouver cette information sur la documentation officielle. Cependant, cela peut être vrai. De toute façon, je suis vraiment coincé avec ce problème. Quelles sont mes options?

Répondre

7

ma réponse peut être trop tard pour vous, mais j'espère que cela peut aider d'autres qui ont le même problème.

  1. Aller à la vue de source de données dans l'Explorateur de solutions
  2. Trouver une table qui contient la colonne GUID qui doit être agrégée
  3. Faites un clic droit sur l'en-tête de la table sélectionnée et sélectionnez « Créer le calcul nommé '
  4. Donnez-lui un nom
  5. Tapez la commande suivante dans le champ d'expression: CAST (nomColonne varchar (36))

Cette solution est de ce lien http://www.bi-dw.info/sql-server-tips/distinct_count-measure-on-uniqueidentifier.htm

+0

+1 M'a sauvé un mal de tête ... Surpris, il ne peut pas le faire sans la solution de contournement. – Meff

0

Je me répondre, cela est peut-être utile pour quelqu'un d'autre.

La réponse est OUI.

J'ai créé des tables de test avec la même structure, mais seulement quelques lignes de test. Le cube fonctionne parfaitement avec ces données. Donc, je suppose qu'il y a des données corrompues sur les tables d'origine, ou peut-être quelques caractères rares.

0

Vous avez raison, vous pouvez faire un compte distinct sur une colonne nvarchar.

Il peut s'agir de caractères étranges ou de votre paramètre de classement.

Vous pouvez essayer le traitement des sous-ensembles du groupe de mesures pour tenter d'isoler une ligne de problème.

0

Cela peut être dû aux paramètres de classement. Le serveur SQL a par défaut SQL_Latin1_General_CP1_CI_AS où SSAS utilise le Windows Collation Latin1_General. Si vous modifiez le classement sur la colonne sur laquelle vous effectuez le nombre distinct je pense résoudra le problème

3

Google et en particulier Eggheadcafe est venu à la rescousse avec une solution:

  • Se connecter à Analysis Services de SQL Server Management Studio
  • Cliquez droit sur le Nom du serveur Analysis Services (c'est-à-dire le lien Analysis Services le plus élevé)
  • Choisir les propriétés
  • Cochez Afficher Avancé (A ll) Propriétés
  • Trouvez le paramètre suivant
  • OLAP \ Process \ CheckDistinctRecordSortOrder
  • Définissez cette valeur à 0
  • Cliquez sur OK
  • Ouvrez votre OLAP dans Visual Studio ou BIDS.
  • Traite le cube.
+0

Cette réponse a fonctionné pour moi. Merci! – BoltBait

0

J'ai eu ce problème en essayant de faire un compte distinct sur une colonne INT ID. Après avoir passé des heures à regarder les paramètres de membres inconnus et les paramètres d'utilisation de la dimension, j'ai trouvé une autre suggestion que les mesures de nombre distinct n'aiment pas les valeurs NULL. Ajouter WHERE COLUMN n'est pas NULL aux requêtes de partition pour ce groupe de mesures de nombre distincts résolu mon problème.

Ce fut la suggestion: « Erreurs dans le moteur de stockage OLAP: L'ordre de tri spécifié pour les enregistrements de comptage distincts est incorrect

Vérifiez que la colonne DistinctCount ne contient pas les valeurs NULL Dans le cas contraire, ils peuvent être.. omis du groupe de mesures via une requête dans la définition de partition (en supposant que la mesure de comptage distincte est dans son propre groupe de mesures) "

0

Derby a fourni la bonne réponse dans ma situation. Dans mon cas, j'essayais de traiter un modèle minier dans SSDT (VS 2012) et j'obtenais l'erreur.

L'erreur a commencé après avoir apporté quelques corrections à une requête qui générait une table que j'avais utilisée comme source de données. Ma conjecture est qu'elle a introduit des NULLS quelque part que je n'avais pas avant d'apporter les corrections à ma requête, et donc à la table source (le Modèle d'Exploitation a bien été traité avant cela). Je suis incapable de voter Derby en raison de ma réputation noob.

0

J'étais confronté au même problème et j'ai trouvé qu'il y avait des caractères/symboles spéciaux dans mes données qui empêchaient le traitement du cube. Très probablement, le cube était incapable de trier les données avec des caractères spéciaux.

j'ai pu résoudre le problème en convertissant les données en chaîne de hashbyte en utilisant la fonction suivante:

SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', [column_name])), 3, 32) 
Questions connexes