3

プロダクション キューブの 1 つが失敗し、次のエラー メッセージが表示されました。

ソース: Analysis Services DDL 実行タスク Analysis Services 実行 DDL タスクの説明: OLAP ストレージ エンジンのエラー: 処理中に属性キーが見つかりません: テーブル: 'dbo_vw_FACT_OperationalTimeSheetData'、列: 'CurrentHomeLaborOrg'、値: '117-MARKETPLACE-38 '。属性は「KeyOrganisation」です。終了警告 警告: 2013-07-22 06:26:07.51 コード: 0x811F0002
ソース: Analysis Services DDL 実行タスク Analysis Services 実行 DDL タスク 説明: OLAP ストレージ エンジンのエラー: 属性キーが見つからなかったため、属性キーは不明なメンバーに変換されました。ディメンションの属性 KeyOrganisation: データベースからの現在のホーム組織: LadbrokesReporting2005、キューブ: MIS クローン、メジャー グループ: Kronos タイム シート、パーティション: 201307、レコード: 179774。警告終了

上記のエラー メッセージを Google で広範囲に検索したところ、これは参照整合性が原因であることがわかりました。つまり、ファクト テーブルの一部の行をディメンション テーブルにリンクできませんでした。以前の分析で、上記のエラー メッセージ '117-MARKETPLACE-38' のファクト テーブルのような値の一部について、ディメンション テーブルの形式が '117_Marketplace_38' であることがわかりました。しかし、私はいくつかの驚くべき事実を発見しました:-

  1. ファクトを入力するビューのクエリは、データを「117-MARKETPLACE-38」の形式に変換します。ソース テーブルのデータの形式は「117_Marketplace_38」です。

  2. 「117-Marketplace-38」という形式のエントリは他にも多数あります。ただし、エラーはそのエントリにのみ存在するようです。では、なぜ他の人は受け入れられているのに、これは受け入れられないのでしょうか?

アイデアが尽きた。したがって、誰かがこれについて私を助けることができれば、それは素晴らしいことです.

4

2 に答える 2

3

ディメンションが処理されていますか? ファクトをディメンションにリンクするとき、基になる SQL テーブルではなく、SSAS ディメンションでリンクすることに注意してください。最初にディメンションでプロセス (更新) を実行してみてください。

元の投稿では、大文字と小文字、MARKETPLACE と Marketplace を混在させています。ソースにあるのはこれでしょうか。それらを同じように扱っていない可能性があります。SSAS で「ID」と「ID」に問題があるのを見てきました

ssas 属性キーの可能性のある相対キーが存在し、重複が原因ではありませんが見つかりません

承認後にコメントを回答に編集しました。

于 2013-07-22T11:46:44.523 に答える
0

同じエラー メッセージが表示されましたが、私の場合は別の方法で処理する必要がありました。同じ問題に遭遇した他のユーザーについては、以下の詳細を参照してください。

私のシナリオでは、ブリッジ テーブルを介してファクト テーブルを別のファクト テーブルに接続していました。このブリッジ テーブルは を介し​​て形成されたINNER JOINため、両方で一致するレコードのみが含まれていました。合法的に、 の特定の行が への結合にFactTableA含まれていませんでした。BrgTableFactTableB

FactTableAの有効なリンクがない場合でも処理できるようにするために、TechNet の次の手順BrgTable従いました。

ファクト テーブルの参照整合性の問題

sales ファクト テーブルに、product ディメンション テーブルに存在しない product_id を持つレコードがあります。サーバーは、パーティション処理中に KeyNotFound エラーを生成します。デフォルトでは、KeyNotFound エラーがログに記録され、キー エラー制限 (デフォルトではゼロ) にカウントされます。したがって、処理は最初のエラーで失敗します。

解決策は、メジャー グループまたはパーティションの ErrorConfiguration を変更することです。次の 2 つの方法があります。

 Set KeyNotFound=IgnoreError.

 Set KeyErrorLimit to a sufficiently large number.

KeyNotFound エラーのデフォルトの処理は、ファクト レコードを不明なメンバーに割り当てることです。もう 1 つの方法は、KeyErrorAction=DiscardRecord を設定して、ファクト テーブル レコードを完全に破棄することです。

私の場合は、失敗したメジャー グループに関連付けられているパーティションに移動し、[プロパティ]ウィンドウを開き、 ErrorConfigurationCustomに設定し、[カスタム] を展開して KeyNotFound をIgnoreErrorに設定する必要がありました。

于 2015-07-13T12:43:37.440 に答える