問題タブ [gaps-in-data]
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.
oracle - hibernate oracle シーケンスが大きなギャップを生む
私は hibernate 3 、oracle 10g を使用しています。私はテーブルを持っています:件名。定義はこちら
新しいサブジェクトを挿入するとき、サブジェクト ID を作成するために sub_seq が使用されます。定義はここにあります
Subject クラスは次のようになります。
subject テーブルには、Excel から plsql スクリプトによってロードされたデータベースに 4555 件のサブジェクトがあり、sub_sequence は正常に機能しました。サブジェクト ID の範囲は 1 ~ 4555 です。
ただし、休止状態を使用してアプリケーションからサブジェクトを追加すると、シーケンス番号が 255050 に跳ね上がりました。数日間実行した後、休止状態によって生成されたサブジェクト ID は次のようになります。
いくつかの大きなギャップがあります: 4555 から 255051、255067 から 260051、265057 から 270051
これは無駄であり、望ましい動作ではありません。
なぜこれが起こり、それを修正するのが難しいのか誰もが知っていますか
ありがとう
database - ギャップのないシーケンス
トランザクションがロールバックされた場合に、同じ値を再び与えることができるシーケンスが必要です。これはクラスター環境で機能し、高速である必要があります。
言い換えれば、私は私の数え上げに穴を開けたくありません。
例:
同じことを行う5つのトランザクションがあり、すべてのトランザクションで次の値を生成します。
- トランザクション1:生成された値1。
- トランザクション2:生成された値2。
- トランザクション3:生成された値3。
- トランザクション4:生成された値4。
- トランザクション5:生成された値5。
ここで、トランザクション「2」と「4」がロールバックされたと仮定します。私が通常のシーケンスを持っていて、次のトランザクションを実行する場合、生成された値は最も適切には「6」になります。私のシーケンスは未使用の値を返すはずなので、この場合は「2」または「4」です。
sql - さらに別の日付のギャップを埋める SQL パズル
残念ながら、CROSS APPLY を使用できない Vertica を使用しています。Vertica には CTE のようなものはないようです。
これが私が持っているものです:
初日のデルタはメトリック値と等しいことに注意してください。次のように、ギャップを埋めたいと思います。
私はこれを毎日行う方法を考えてきましたが、私が本当に望んでいるのは、一度に機能するソリューションです。
LAST_VALUE で何かを動作させることができると思いますが、各 ID の日々の履歴を適切に分割して順序付けできる適切な JOIN ステートメントを思い付くことができません。
編集:次のようなテーブルがあるとします:
結合に関与する可能性があります。私の意図は、カレンダーの日付範囲をtの日付範囲と一致するように維持することです。
編集:具体的には、探しているものに関するいくつかのメモ:
t_fillを生成する際に、 tの日付範囲と、その間にない日付を正確にカバーしたいと思います。したがって、正しいt_fillはtと同じ日付で開始し、同じ日付で終了します。 t_fillには 2 つのプロパティがあります。
1) ある日付に ID が表示されると、以降の日付ごとに常に行が表示されます。これは、元の質問で暗示されているギャップを埋めることです。
2) ある日付以降に id の行が再び表示されない場合、t_fillソリューションは、その最後のデータ ポイントの日付からtの終了日まで、同じメトリック値 (および 0 デルタ) を持つ行を陽気に生成する必要があります。
ソリューションは、 tの日付範囲の開始までの以前の日付を埋め戻す可能性があります。つまり、 t の最初の日付の後に表示される id の場合、tの最初の日付と id の最初の日付の間の行は、metric=0 と d_metric=0 で埋められます。システムに入る各IDの成長率が高いため、この種のソリューションは好みません。しかし、metric!=0 および d_metric!=0 の行のみを新しいテーブルに選択することで、簡単に対処できました。
java - バブルソートからギャップソートへの変更
私は問題に遭遇しました、そしてあなたの指導が必要です。基本的に私はこのバブルソートメソッドを作成することができました。これをギャップソートに変更するにはどうすればよいですか。リスト全体で隣接する要素を毎回比較するのではなく、数(i)の位置だけ離れている要素を比較します。ここで、(i)はn未満の整数です。たとえば、最初の要素は(i + 1)要素、2番目の要素は(i + 2)要素、n番目の要素は(ni)要素などと比較されます。すべての要素が完了すると、1回の反復が完了します。比較できる、比較されています。次の反復で、iは1より大きい数だけ減少し、プロセスはiが1未満になるまで続行されます。
global - プッシュ再ラベルアルゴリズム
push-relabel FIFO コードの MATLAB バージョンを実行しました (wikipedia のものとまったく同じで、試してみました。放電関数は wikipedia とまったく同じです。
これは、小さなグラフ (ノード数 = 7 など) に最適です。ただし、グラフのサイズを大きくすると (つまり、ノード/頂点の数 > 3500 以上)、「ディスチャージ」関数で呼び出される「再ラベル付け」関数の実行が非常に遅くなります。グラフが巨大 (つまり > 3000 ノード) であるため、コードを最適化する必要があります。
グローバルな再ラベル付け/ギャップの再ラベル付けに関する WIKIPEDIA の提案に従って、コードを最適化しようとしました。2) ギャップヒューリスティックを使用します。
私は最初のもので立ち往生しています。詳細が省略されているように見えるので、正確に何をしなければならないのかわかりません。(頂点 u の場合、u に接続されたノード v(1..n) が既に隣接リストにあるように隣接リストを作成しましたが、見た [u] インデックスで反復する方法がわからないだけです)。
AND 放電関数は、「s」近傍構造体リストを使用します。
while (excess(u) > 0) %現在のノードの超過が >0 かどうかをテストし、そうであれば...
終わり
誰かが私を指示したり、見せたり、助けてくれませんか?
heuristics - push-relabel ギャップ ヒューリスティック
push relabel を使用してギャップヒューリスティックを実装する方法がわかりません。Wiki では次のように説明されています。
「ギャップ再ラベル付けヒューリスティックでは、サイズ n の配列 A を維持し、A[i] に各ラベルのノード数 (n まで) を保持します。A[d] = 0 のようなラベル d が見つかった場合、ラベル > d を持つすべてのノードは、ラベル n に再ラベル付けされます。"
ギャップヒューリスティックを使用します。ノードの高さ (u) = k がないような「k」がある場合、ソースを除くすべてのノードに対して高さ (u) = max(高さ (u)、高さ (ソース) +1) を設定できます。 (u) >k. これは、そのような 'k' がグラフの最小カットを表し、ノード S={u where height(u) > k} から T={v, where height(v) のノードにフローが移動しないためです。 0. しかし、その後は height(u) > height(v)+1 となり、height(u) > k および height(v) < k と矛盾します。
wikiのサンプルコードに示されているように、FIFOプッシュリラベルにギャップヒューリスティックを追加する方法を疑似コードで説明してもらえますか?
ありがとう、ヴィンス
mysql - テーブル内の NULL のギャップを平均値で埋める
フィールド(id,letter,date)
といくつかのデータを含むテーブルがあります。
NULL 値に最も近い非 NULL 値の平均日付を入力したいと考えています。そのように:
または、おそらく、そのように:
どちらのバリエーションも素晴らしいです。MySQL に実装する簡単な方法はありますか?
前もって感謝します
UPD テーブルはかなり大きく、約 700.000 のレコードと、説明されているような約 50.000 のギャップがあります。
UPD2 少しすっきり: テーブルは次のようになります:
期待される結果は次のようになります。
(アスタリスクは、変更された値に注意することです)。ありがとう
UPD3 みんなありがとう。しかし、単純な式で日付を計算する別の方法でそれを行うだけです。 )) + 分(日付)
matlab - Matlab でギャップのある 1 つのデータセットからいくつかのギャップのない行列 (または構造) を作成する
時系列にギャップのあるデータがあります。ギャップのインデックスが見つかり、長さとすべてが見つかります。問題は、データ (列: 時間と測定値) をいくつかの行列/ベクトルに切り刻むか、構造に切り刻むことです。私の計画は、これらの小さな時系列をさらに比較するためにフーリエ変換することです。
例で説明してみましょう: Tdat は時系列で、3825 ポイントがあります
ここのギャップの数は 8 です
ギャップのないデータ系列の数は 9 です
これらのギャップ間のポイント数は 425 です。
したがって、データのみを持ち、各長さ 425 の時間ギャップのない 9 つの異なる行列/ベクトルが必要です。
答えを見つけるのに十分な方法はありますか、それとも十分に検索していませんか?