問題タブ [scd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
528 参照

sql - SASでゆっくりと変化する日付(キンボールタイプ2?)にファクトテーブルを結合する方法

SQL の初心者 - ファクト テーブル crselist を crseinfo テーブルに結合して、正しいディメンション情報を取得したいと考えています。私はいくつかの相関サブクエリに取り組んできましたが、望ましい結果が得られるものはありません(以下)。crseinfo テーブルによると、199610 年からアート 508 はカレッジ 09 に属し、200220 および 200300 で更新される OkArt と呼ばれる必要があります。crselist には、実際に教えられたコースがリストされています。

望ましい結果は次のようになります。

SAS ヘルプ ページ ( http://web.utk.edu/sas/OnlineTutor/1.2/en/60477/m70/m70_52.htm ) を参照すると、次のようなことができるように思えます。

しかし、これはうまくいきません。SQL ベースのソリューションに興味があります。お時間をいただきありがとうございます。

0 投票する
1 に答える
559 参照

sql-server - SSIS 2012 - ゆっくりと変化するディメンション UpdateChangingAttributeHistory を true に設定する

SCD タスク ウィザードを使用して、UpdateChangingAttributeHistory プロパティを設定できず、デフォルトで false になっています。詳細エディターを使用してこれを true に設定できますが、生成されたフローが更新されないため、動作は変更されていません。ウィザードを再実行せずに (UpdateChangingAttributeHistory を false に戻す) フローを再生成するように SSIS をトリガーするには、どうすればよいですか?

私の目標は、変更が発生したときにファクト テーブルを更新するタイプ 2 の scd を持つことです。

0 投票する
2 に答える
1955 参照

sql - 日付のみで緩やかに変化するディメンション

古いバージョンを追跡するために、ゆっくりと変化するディメンションのデータ ウェアハウジングの概念を使用するデータベース テーブルがあります。そこで、Log Triggerメカニズムで実装しました。

私のテーブルは次のようなものです:

履歴表を作成しました

次に、このようなトリガーを使用して、履歴を取得します。

そして、履歴テーブルを照会するには、次を使用します

さて、私の質問は次のとおりです。私の顧客は実際には日付のみで(つまり、時刻なしで) 履歴テーブルを照会するので、その日付のレコード バージョンを取得する必要があります。私は2つのオプションについて考えました:

  1. トリガーを変更して (どのように?)、日付ごとに 1 つの「履歴」レコードのみを記録します。

  2. トリガーをそのままにして、データベース内のすべての変更 (日付と時刻を含む) を記録しますが、履歴テーブルにクエリを実行して、特定の日付の最新バージョンを取得します (どのように?)

私の感じでは、2 番目のオプションの方が実装が簡単です。そうしないと、トリガーが複雑になる可能性があります (現在の日付の履歴レコードの存在に応じて、INSERT または UPDATE)。

正しい方向を選択する際に助けが必要であり、選択したオプションで必要な SQL クエリの例を示したいと思います。

0 投票する
1 に答える
270 参照

ssas - SSAS およびタイプ 2 SCD データ

SSAS およびタイプ 2 SCD データで期待される結果を得ることができません。以下に、私が使用している単純なテーブル、取得している SSAS からの出力、および期待している SSAS からの出力をリストしました。SSAS は、私が望む方法でデータを取得できるはずだと思います。正しく「接続」するのが難しいと思います:)。

私が使用しているテーブル

さらに、1900 年 1 月 1 日から 2050 年 12 月 31 日までのすべての日付が PK として入力された DimDate テーブルと、月の日、曜日などのさまざまな属性が含まれています。

出力 (現在と予想)

クライアント データを月ごとに表示しようとすると、次のようになります。

私がこれを見たいと思っている(そして見たい)とき:

2 月と 3 月にクライアント A がクライアント ABC に変更されたことを SSAS キューブが認識しないのはなぜですか?

うまくいけば、私のキューブが現在どのように接続されているかについての洞察を提供するために:

-FactSales ClientID は DimClient AltID
にリンクされています -FactSales SalesDate は DimDate PK フィールドにリンクされています

DimClient を DimDate にリンクできませんでした。

入力していただきありがとうございます。私の問題を解決してください。

0 投票する
1 に答える
88 参照

sql - Oracle SQL - SCDは変更された属性を経時的に追跡します

次のエラーが発生します。

時間の経過に伴う BOOK_NO および WALK_NO 属性の変化の水平ビューを構築しようとしています。

合理的なアプローチは、有効期限の日付をランク付けし、その値で book_no||walk_no 属性をデコードすることだと思いました....しかし、ここからどこに行くべきかわかりません!

以下のSQL:

どんなアドバイスも大歓迎です!

0 投票する
1 に答える
1912 参照

data-warehouse - 緩やかに変化するディメンションにリンクされたファクト テーブル

データ ウェアハウスの特定のシナリオをモデル化する最善の方法を理解するのに苦労しています。

Person ディメンションと Tenancy ディメンションがあります。人は、一度に 0、1、または (まれに) 複数のテナントにいる可能性があり、多くの場合、時間の経過とともに一連のテナントを持っています。テナンシーには、1 人以上の人が関連付けられている可能性があります。テナントに関連する人々は時間の経過とともに変化する可能性があり、テナントは一般的に何年も続きます。

1 つのオプションは、テナント参照、開始日および終了日をタイプ 2 SCD 列として Person ディメンションに追加することです。これは、1 人の人が複数の同時テナントの可能性を無視する限り、うまく機能します。ただし、同様の設計上の問題に直面しているデータ ウェアハウスの他の領域があり、複数の関係を無視することはできません。

もう 1 つのオプションは、関係を累積スナップショット ファクト テーブルとしてモデル化することです。これが実際にどれだけうまく機能するかはわかりませんが、これを Person と Tenancy の 1 つのバージョン (どちらもタイプ 2 の SCD 列を持つ) にしかリンクできず、現在または人とテナントを結び付ける履歴レポート。

このタイプの関係をモデル化するための推奨される方法はありますか?

SQL.Injection によって与えられた患者の回答とコメントに基づいて編集します

SQL.Injection で記述されたモデルを示す基本モデルを作成しました。 推奨機種

テナントの開始日/終了日を「ジャンク」ディメンション (Dim.Tenancy) に移動し、個人のテナントの開始日/終了日をファクト テーブルに追加しました。これが関係をより正確に説明する方法だと感じたからです。

ただし、視覚的に見ると、ファクト テーブルが累積スナップショットではなく定期的なスナップショットであることを除けば、これは最初に使用したモデルと根本的に異なるとは思いません。確かに、いずれかのディメンションでタイプ 2 のゆっくりと変化する属性を更新するたびに、それが事実に反映されないという同じ欠陥に苦しんでいるようです。

これを機能させて現在の変更を反映させ、履歴レポートを作成できるようにするには、いずれかのディメンションで SCD2 の変更が発生するたびに、ファクト テーブルに行を追加する必要があるようです。次に、同じエンティティの複数のバージョンに参加することによる過大評価を防ぐために、他の関連ディメンションの新しいバージョンを追加して、参加する新しいキーを用意する必要があります。

これについては、もう少し考える必要があります。私は、データベース モデルが正しく、モデルがどのように使用されるかについての私の理解が間違っていると考え始めています。

それまでの間、コメントや提案は大歓迎です!

0 投票する
1 に答える
350 参照

sql-server-2012 - Microsoft SQL Server 2012 緩やかに変化するディメンション 履歴属性 日付とステータスの変更

VS 2010 を使用する MS SQL Server 2012 で次の問題が発生します。

歴史的な属性を変更するために、緩やかに変化するディメンション用の SSIS を使用したいと考えています。ウィザードでは、レコードが古いかどうかに関係なく、1 つの列または 2 つの日付列に情報を保存するかどうかを決定する機会しか与えられないため ( https://msdn.microsoft.com/en-us/libraryを参照) /ms187958.aspx )。しかし、私は両方を行い、「ステータス」列に情報を保存し、「開始日」と「終了日」も更新したいと考えています。

SSIS を使用した後の従業員のテーブルの例:

従業員 Emma Johnson は結婚したため、2013 年 2 月 20 日に姓を Smith に変更しました。

従業員 ID | EmployeeIDAlternateKey | 名 | 姓 | 開始日 | 終了日 | 状態

1 | 123 | エマ | エマ | ジョンソン | 2013 年 1 月 1 日 | 2013 年 2 月 20 日 | ヌル

2 | 123 | エマ | エマ | スミス | 2013 年 2 月 20 日 | ヌル | 現時点の

ご協力いただきありがとうございます!