Cubes OLAP Analysis Services 2005: Puis-je créer une mesure de nombre distinct sur une colonne nvarchar?

StackOverflow https://stackoverflow.com/questions/320405

  •  11-07-2019
  •  | 
  •  

Question

J'essaie de créer un cube avec une seule mesure. Cette mesure est un décompte distinct d'un " nom " colonne. Le cube fonctionne parfaitement si la mesure est définie sur " count " type. Cependant, lorsque je définis un nombre distinct, j'obtiens cette erreur:

" Erreurs dans le moteur de stockage OLAP: l'ordre de tri spécifié pour les enregistrements à compte distinct est incorrect ""

J'ai lu dans certains blogs que vous ne pouvez compter que sur une colonne numérique. Je ne vois pas de bonne raison à cela et je ne trouve pas cette information dans la documentation officielle. Cependant, cela peut être vrai. En tout cas, je suis vraiment coincé avec ce problème. Quelles sont mes options?

Était-ce utile?

La solution

ma réponse sera peut-être trop tard pour vous, mais espérons que cela pourra aider d’autres qui ont le même problème.

  1. Accédez à la vue de la source de données dans l'Explorateur de solutions
  2. Recherchez une table contenant la colonne GUID à agréger
  3. Cliquez avec le bouton droit de la souris sur l'en-tête du tableau sélectionné et sélectionnez "Créer un calcul nommé"
  4. Donnez-lui un nom
  5. Tapez ce qui suit dans le champ Expression:        CAST (ColumnName en tant que varchar (36))

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

Autres conseils

Google et en particulier Eggheadcafe sont venus à la rescousse avec une solution:

  • Connexion à Analysis Services à partir de SQL Server Management Studio
  • Cliquez avec le bouton droit de la souris sur le nom du serveur Analysis Services (le lien le plus en haut de Analysis Services)
  • Choisir les propriétés
  • Cochez Afficher les propriétés avancées (toutes)
  • Recherchez le paramètre suivant
  • OLAP \ Process \ CheckDistinctRecordSortOrder
  • Définissez cette valeur sur 0
  • cliquez sur OK
  • Ouvrez votre OLAP dans Visual Studio ou BIDS.
  • Traitez le cube.

Je vais répondre moi-même, c'est peut-être utile pour quelqu'un d'autre.

La réponse courte 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 des caractères rares.

Vous avez raison, vous pouvez effectuer un décompte distinct sur une colonne nvarchar.

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

Vous pouvez essayer de traiter des sous-ensembles plus petits du groupe de mesures pour tenter d'isoler une ligne posant problème.

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

J'ai eu ce problème en essayant de créer un compte distinct sur une colonne INT ID. Après avoir passé un bon bout de temps à examiner les paramètres de membre inconnu et les paramètres d'utilisation des dimensions, j'ai trouvé une autre suggestion selon laquelle les mesures de nombre distinct n'apprécient pas les valeurs NULL. L'ajout de WHERE COLUMN n'est pas NULL aux requêtes de partition pour ce groupe de mesures de comptage distinct a résolu mon problème.

C'était la suggestion: "Erreurs dans le moteur de stockage OLAP: l'ordre de tri spécifié pour les enregistrements à compte distinct est incorrect.

Vérifiez que la colonne distinctcount ne contient pas de valeurs NULL. Si tel est le cas, ils peuvent être omis du groupe de mesures via une requête dans la définition de la partition (en supposant que la mesure de comptage distinct se trouve dans son propre groupe de mesures). "

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

L'erreur a commencé après que j'ai apporté quelques corrections à une requête qui a généré une table que j'ai utilisée comme source de données. Je suppose que cela 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'exploration de données a été traité correctement avant cela). Je ne peux pas voter Derby à cause de ma réputation de noob.

Je rencontrais le même problème et j’ai constaté que certains caractères / symboles spéciaux dans mes données ne permettaient pas de traiter le cube. Le cube n'a probablement pas pu 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 hachage en utilisant la fonction suivante:

SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', [column_name])), 3, 32)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top