web-dev-qa-db-fra.com

la clé de l'attribut ssas ne peut pas être trouvée même si elle existe et n'est pas due à des doublons

J'essayais de reconstruire mon cube après avoir modifié l'autre jour les noms de table/colonne dans les tables de faits et de dimension.

L'action de cube de processus renvoyait le message d'erreur suivant:

La clé d'attribut est introuvable lors du traitement: Table: 'MyFactTableName', Colonne: 'MyDimensionKey', Valeur: 'SomeValue'. Le L'attribut est 'MyDimensionKey'.

Les autres réponses à des questions similaires faisaient référence à des attributs avec des valeurs en double et à des cas où la valeur de l'attribut était nulle dans la ou manquante dans la table Dimension ou Fact.

Exemple de messages liés sont:

Il n'y avait pas de valeurs en double dans mon cas et la valeur d'attribut ne manquait ni dans la table Fact ni dans la table Dimension. 

Heureusement, les informations contenues dans ce post ici ont résolu mon problème.

Il a été suggéré de traiter la dimension affectée par elle-même, puis le groupe de mesures affecté.

Une idée de pourquoi cela se produit, comment je pourrais reproduire ceci? Je voudrais le savoir pour que je puisse l'éviter la prochaine fois ou pour que cela ne réapparaisse pas au mauvais moment lors du déploiement d'une mise à niveau vers l'environnement de production.

Merci d'avance pour votre aide.

EDIT: J'utilise SSAS-2008 et l'erreur s'est produite lors de la tentative de traitement du cube à partir de BIDS-2008.

22
JM Hicks

Cela est dû au fait que votre groupe de mesures est traité avant les dimensions associées. SSAS rencontre une clé étrangère utilisée pour établir une relation avec une dimension de cube, mais la clé n'est pas connue de la dimension elle-même.

19
Jeroen Bolle

Cause fondamentale de cette erreur: Votre table de faits contient une clé qui, à son tour, ne figure pas dans votre table de dimension (idéalement, ce qui ne devrait pas être le cas) Essayez de suivre les étapes suivantes:

  1. Traitez vos dimensions avant de traiter les groupes de mesures

  2. Si votre "SomeValue" est 0, essayez d'ajouter la ligne par défaut (0ème) dans votre table de dimension et dans la table Fact, essayez de mettre ISNULL (MyDimensionKey, 0).

  3. Si plus de 2 solutions ne fonctionnent pas, essayez ceci: une. Cliquez avec le bouton droit de la souris sur votre base de données cube, puis sélectionnez "Processus" >> "Modifier les paramètres" b. Allez à l'onglet "Erreurs de clé de dimension" c. Cochez la case d'option "Utiliser la configuration d'erreur personnalisée" ré. Cochez la case d'option 'Ignorer le nombre d'erreurs'. Pour 'Clé introuvable', sélectionnez 'Ignorer l'erreur'. De même pour 'La clé nulle n'est pas autorisée', sélectionnez également 'Ignorer l'erreur' e. Cliquez sur OK et essayez de traiter votre cube.

9
Monica Boyal

ce qui m’entend, c’est que ma base de données sous-jacente contient deux enregistrements, "ABC" et "abc", la clause Distinct les attribue à 1 ("ABC") enregistrement car mon serveur SQL ne respecte pas la casse, mais le service SSAS est la casse est sensible dans mon cas, donc la valeur d'attribut "abc" ne peut pas trouver sa clé lors du traitement du cube. HIH

1
L_G

J'ai eu un problème avec une erreur similaire, la raison en était que j'avais changé le nom de la table en une vue avec le même nom, mais que la dimension DSV ou les dimensions ne pouvaient pas ajuster automatiquement cette modification. 

J'ai donc dû mettre à jour manuellement les champs derrière chaque attribut de dimensions. 

Cela peut être fait dans les propriétés de chaque attribut de dimension: Source >> KeyColumns >> "Nom_attribut" >> Source >> TableID, columnID 

1
Tahir

Testez ceci, commençons petit comme ceci Dimension:

Dimension

C'était ma solution:

enter image description here

0
kcho0