問題タブ [q-lang]
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.
matlab - クエリと Matlab への変換に最適な時系列形式 (HDF5)
ここの問題に似た独特の問題があります。
https://news.ycombinator.com/item?id=8368509
約 5 Gbps でキャプチャする高速トラフィック分析ボックスがあり、そこから特定のパケットを取り出して、C++ プログラムで何らかの形式に保存します。毎日、おそらく 1 ~ 3 TB がディスクに書き込まれます。これはネットワーク データであるため、すべてナノ秒レベルまでの時系列ですが、秒またはミリ秒レベルで保存し、後で別のアプリケーションに埋め込まれた高解像度のタイムスタンプを並べ替えても問題ありません。私の問題は、使用する形式を決定することです。私の2つの要件は次のとおりです。
- いくつかの異なるタイムスタンプ付きパラメーターを使用して、約 50 MB/秒で連続してディスクに書き込むことができます。
- このデータのチャンクを MATLAB (HDF5) にエクスポートできます。
- 分析目的で、このデータを 1 日に 1 回または 2 回クエリします。
難しい要件ではないもう1つの優れた点は次のとおりです。
- これらのボックスは 4 つ独立して実行されます。可能であれば、それらすべてに対してクエリを実行し、データを結合するとよいでしょう。これらの 4 つのボックスはすべて物理的に異なる場所にあるため、データを共有する際にオーバーヘッドが発生します。
2 つ目はアプリケーションが古いため変更できませんが、1 つ目のほうが重要だと思います。私が matlab にエクスポートしたいクエリのタイプは、「時間 Y と Z の間にメトリック X をプルする」のようなものなので、最終的には HDF5 形式にする必要があります。必要に応じて matlab ファイルを作成するために使用できる MatIO という外部ライブラリがありますが、変換ステップがなければさらに良いでしょう。上記のスレッド全体を読みましたが、kdb+、Cassandra、PyTables、および OpenTSDB など、際立っているように見える多くのオプションがあります。これらはすべて私が望むことをしているように見えますが、MATLAB HDF5 形式に変換するのがどれほど簡単か、またこれらのいずれかが他のものよりも難しくなるかどうかはわかりません。
誰かが同じようなことをした経験があるなら、それは大きな助けになるでしょう. ありがとう!
kdb - 時間間隔でグループ化し、RDB をダウンさせない KDB クエリを作成する方法は?
取引所からクオートを受け取り、KDB ティッカー プラントに保存します。これらのデータベースは他のチームでも使用されているため、これらのデータベースのパフォーマンスへの影響を最小限に抑えて、RDB および HDB のボリュームを分析したいと考えています。
- まず、1 日を 10 分間隔で分割し、間隔ごとにボリュームを含む統計を作成する関数を作成するにはどうすればよいでしょうか? どの KDB 関数を使用する必要がありますか?
- 第二に、それを安全に行う方法は?部分ごとにループでレコードを抽出する必要がありますか、それとも 1 つのクエリで一度に抽出する必要がありますか? データベースには、毎日約 1 億 5000 万件のレコードがあります。
kdb - ポイントインタイム (バイテンポラル) テーブルの更新
ポイントインタイム (バイテンポラル) データを格納するテーブルを用意しましょう。
サンプル データは次のようになります。
たとえば、あるstamp
時点で、IBM
シンボルに対して有効な 105.11 の値を記録しました。2015.01.05
新しいデータが継続的に入ってきて、それらのいくつかは新しいレコードとしてテーブルに挿入されpit
ますが、新しい情報を伝える場合に限られます。の既存のレコードをpit
削除したり、更新/上書きしたりすることはできません。つまり、監査または信頼性の目的で、古い値 (ある場合) を追跡したいと考えています。時間の経過とともに収益の見積もりが更新されることを考えてみてください。
たとえば、後で受け取る可能性があります。
new
に情報を組み込むpit
と、後者は次のようになります。
現在のタイムスタンプ(執筆時点)で入力されたシンボルの「新しい」105.22
値に注意してください。また、からの値はタイムスタンプをまったく更新しませんでした。これは、その値が古いタイムスタンプにすでに反映されていたためです。IBM
pit
2015.03.10D15:43:50
106.6
new
pit
pit
を使用してそれぞれのinsert
ステートメントを記述する方法はq
?
注:簡単にするために、ここでは示されていないpit
追加の列で分割することをお勧めします。source
また、パーティションには`g#sym
(おそらく`p#sym
代わりに) and`s#dt
属性があります。
kdb - 起動時に init.q ファイルを読み込む
私のq.bat
ファイルは正常に動作し、その内容は次のとおりです。
ファイルにいくつかの基本的な q 関数を定義init.q
したので、kdb+/q を起動するたびにそれらをロードして使用できるようにしたいと考えています。ファイルの最後に以下の行を含めようとしましたが、q.bat
何もしません:
QINIT
環境変数の設定やファイルの編集など、他の方法について読んだことがありq.q
ますが、経由でロードする.bat
方がきれいだと思います。
kdb - 空白文字を含むパスから file.q をロードする
スペースを含むパスからスクリプト ファイルをロードする方法は?
たとえば、これは機能します:
以下の試みはエラーをスローします:
python - 文字列列を含む pandas DataFrame を kdb+ に渡す (qPython API を使用)
exxeleron/qPython
モジュールを使用すると、パンダDataFrame
をkdb+/q
のテーブルに送信できます。
データを準備しましょう:
DataFrame
渡されるオブジェクトは次のようになります。
に送信しようとするとkdb+/q
、次のエラーが表示されます。
kdb - kdb+/q: 関数呼び出しに引数が指定されているかどうかを確認します
fun
2 つの引数を持つ関数があるとします。2 番目の引数はオプションです。関数内で 2 番目のオプションの引数が指定されているかどうかを確認し、それに応じて動作する方法は?
```