1

いくつかのデータを含む (大きな) CSV ファイルがあります。そして、私はcode.kx.com使用からの輸入業者を持っています.Q.fsn

colnames:`Symbol`Date`Time`Sequence`Exchange`Type`Level`Condition`Price`Size`BuyerID`SellerID
.Q.fsn[{`:newCreatedFile upsert flip colnames!("SDTISSISFISS";",") 0:x};`:C:/myDir/data.csv 5000000]

このコードは、ビッグ データ ファイルが 5000000 バイトのチャンクでデータを処理したと仮定して、newCreatedFileからのデータで名前が付けられたファイルを作成します。data.csv

質問:

このデータから 2 つの個別のファイルを作成したいのですが、区別の基準が「状態」列の値であるとしましょう。各行について、Condition 列の値が x、y、または z の場合はファイル A.csv に、それ以外の場合は B.csv に入れます。

if ステートメントの擬似コードは次のとおりです。

$[Condition in `x`y`z; Afunction ; Bfunction]
Afunction:{`:newA upsert flip ...};
Bfunction:{`:newB upsert flip ...};

if ステートメントをどのように設定する必要がありますか? 私は現在持っています:

$[datatable.Condition = `SomeCondition; fileA;fileB]

しかし、タイプエラーが発生します。特定の列の各値を一致させるにはどうすればよいですか?

元のデータ ファイルをインポートするとき、またはデータ ファイルが でテーブルに作成された後にチェックする必要がありますkdbか?

4

1 に答える 1

0

条件を確認するときに、例ではまだ列を解析していません。これを最初に行う必要があります。次のようなものを使用できます。

foo:{t:flip colnames!("SDTISSISFISS";",") 0:x;
     `:newA upsert select from t where Condition = `SomeCondition;
     `:newB upsert select from t where not Condition = `SomeCondition}

.Q.fsn[foo;`:C:/myDir/data.csv;5000000]
于 2013-06-18T18:43:35.623 に答える