2017-08-25 6 views
0

Nous avons un cube OLAP SSAS avec des dimensions définies comme KeyNotFound -> IgnoreError et KeyErrorAction -> ConvertToUnknownNe peut pas faire un travail de dimension ConvertToUnknown sur un cube OLAP SSAS

L'un de ces dimensions (et un seul) doesn Ne fonctionne pas comme prévu, lorsque la valeur de la table des faits n'est pas trouvée sur la dimension, les valeurs ne sont pas prises en compte.

En d'autres termes, cette dimension particulière agit comme si elle était définie comme KeyErrorAction-> DiscardRecord

En regardant le journal de détail du processus de construction, il est clair que le comportement doit être celui-ci, comme les regards de sélection comme (simplifié)

Sélectionnez fields_from_fact_table, dim_key de FACT_TABLE, dim_table où fact_table.value_key = dim_table.dim_key

une jointure comme celui-ci renvoie uniquement les enregistrements présents sur le dim_table un de d c'est la raison pour laquelle nous ne pouvons pas voir les valeurs inexistantes.

Mais nous ne pouvons pas voir pourquoi cela se produit. Pourquoi cette dimension spécifique et pas une autre? Utiliser une jointure avec une dimension définie comme DiscardRecord serait logique (oui, il y a des dimensions qui pourraient être choisies sur notre cube) mais en utiliser une définie comme ConvertToUnknown ne fait que vaincre la déclaration elle-même. La seule raison que nous pouvons imaginer est que cette dimension particulière est utilisée comme la dimension intermédiaire d'une autre dimension "référencée" (pas sûr du nom correct en anglais, c'est le cas quand le fact_table est lié à une dimension et celui-ci à un deuxième).

Si tel était le cas, SSAS doit signaler une erreur lorsque vous sélectionnez la méthode ConvertToUnknown. Une table de faits différente avec des dimensions différentes, utilise également une jointure (aucune dimension référencée ici), il semble donc qu'une jointure soit toujours utilisée.

Une idée de ce qui se passe? Comment pouvons-nous faire fonctionner cette dimension comme prévu?

Répondre

0

Wow! Découvert la raison par accident. Cette dimension spécifique est utilisée comme une dimension intermédiaire pour une autre. Dans ce cas, vous ne pouvez pas avoir de valeurs nulles.