問題タブ [bi-temporal]
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.
python - バイテンポラル データセットでの移動平均の計算
バイテンポラル データセットで移動平均を計算しようとしています。データセットは、データの日付と有効日 (データが利用可能になった日付) で構成されます。この日付のデータは、今後数回修正される可能性があります (データの日付は同じですが、発効日は異なります)。計算対象の行の発効日に有効なデータを使用して、過去 4 四半期の移動平均を計算する必要があります。
データセットは次のようになります
ID | データ日付 | 無効にする | 価値 |
---|---|---|---|
1 | 2005-03-31 | 2005-04-15 | 10 |
1 | 2005-03-31 | 2005-05-30 | 11 |
1 | 2005-06-30 | 2005-07-15 | 9 |
1 | 2005-06-30 | 2005-08-20 | 9.5 |
1 | 2005-06-30 | 2005-10-15 | 9.6 |
1 | 2005-09-30 | 2005-10-15 | 10.5 |
1 | 2005-09-30 | 2005-11-10 | 11 |
1 | 2005-09-30 | 2006-02-20 | 10.75 |
1 | 2005-12-31 | 2006-02-13 | 12 |
1 | 2005-12-31 | 2006-02-20 | 11.6 |
1 | 2005-12-31 | 2006-05-10 | 11 |
1 | 2006-03-31 | 2006-04-20 | 8 |
1 | 2006-03-31 | 2006-05-10 | 8.25 |
結果は
ID | データ日付 | 無効にする | 価値 | MAvg | |
---|---|---|---|---|---|
0 | 1 | 2005-03-31 | 2005-04-15 | 10 | 10 |
1 | 1 | 2005-03-31 | 2005-05-30 | 11 | 11 |
2 | 1 | 2005-06-30 | 2005-07-15 | 9 | 10 |
3 | 1 | 2005-06-30 | 2005-08-20 | 9.5 | 10.25 |
4 | 1 | 2005-06-30 | 2005-10-15 | 9.6 | 10.30 |
5 | 1 | 2005-09-30 | 2005-10-15 | 10.5 | 10.37 |
6 | 1 | 2005-09-30 | 2005-11-10 | 11 | 10.53 |
7 | 1 | 2005-09-30 | 2006-02-20 | 10.75 | 10.45 |
8 | 1 | 2005-12-31 | 2006-02-13 | 12 | 10.9 |
9 | 1 | 2005-12-31 | 2006-02-20 | 11.5 | 10.71 |
10 | 1 | 2005-12-31 | 2006-05-10 | 11 | 10.59 |
11 | 1 | 2006-03-31 | 2006-04-20 | 8 | 9.96 |
12 | 1 | 2006-03-31 | 2006-05-10 | 8.25 | 9.9 |
私はパンダを使ってPythonでこれをやっています。私がこれを行っている方法は、データフレームを id と前の 4 四半期で結合し、過去 4 四半期の effdates に基づいてすべての期間の新しい effdates を計算することです。次に、id、datadate、および effdate でもう一度結合して計算します平均。
これは機能しますが、2000年から最新の四半期(約50万行)までの約2000の異なるIDとデータ日付を持つ完全なデータセットで実行すると非常に遅くなり、異なるウィンドウのいくつかのフィールドで移動平均を計算する必要があります。そこで、効率の良い方法があれば教えていただきたいです。
oracle - SCHEMA の変更後にテンポラル テーブルでクエリが壊れないようにするにはどうすればよいですか?
個人情報用のテンポラル テーブルがあるとします。
- UUID (varchar)
- main_document (varchar)
- 名前 (varchar)
- DoB (タイムスタンプ)
- ジャンル (varchar)
- アドレス (varchar)
- 給与 (10 進数)
T1で、スキーマの移行を実行し、新しい列を追加します。これ以降、テーブルには次のものがあります。
- UUID (varchar)
- main_document (varchar)
- 名前 (varchar)
- DoB (タイムスタンプ)
- ジャンル (varchar)
- アドレス (varchar)
- 給与 (10 進数)
- 電子メール(varchar)*
次に、T2で別のスキーマ移行を実行し、main_document のデータ型を NUMBER に変更します。
- UUID (varchar)
- メインドキュメント (数字) *
- 名前 (varchar)
- DoB (タイムスタンプ)
- ジャンル (varchar)
- アドレス (varchar)
- 給与 (10 進数)
- 電子メール (varchar)
次に、T3で別のスキーマ移行を実行し、ジャンル列を削除します
- UUID (varchar)
- main_document (数値)
- 名前 (varchar)
- DoB (タイムスタンプ)
- --------------- *
- アドレス (varchar)
- 給与 (10 進数)
- 電子メール (varchar)
次に、T4で別のスキーマ移行を実行し、ジャンル列を追加しましたが、データ型は NUMBER になりました。
- UUID (varchar)
- main_document (数値)
- 名前 (varchar)
- DoB (タイムスタンプ)
- ジャンル (数字) *
- アドレス (varchar)
- 給与 (10 進数)
- 電子メール (varchar)
T1、T2、T3、T4 などでスキーマが変更された場合、DB にクエリを実行する方法 (時間をさかのぼる) はありますか?
同様に、私たちは (壁の時間) T4 にいて、次を実行します: select * from people AS OF T3 , 何を返す必要がありますか? 本当にタイムトラベル?
これらのテンポラル テーブル + スキーマの移行でこの複雑さをすべて回避するためのベスト プラクティスまたは戦略はありますか?
どんな助けでも大歓迎です。
ありがとう