あなたは、たとえば、あなたが望むものを
を行うために、ここでのif-else条件付き$を使用することができます。
q)$[`bid in cols`quotes;enlist (>;`bid;35);()]
> `bid 35
q)$[`bad in cols`quotes;enlist (>;`bad;35);()]
注意を第二の例では、戻り値がこのカラムとして、空のリストであることだから、あなたがそうのような選択機能にこれを置くことができ、引用符テーブル
ではありません。
?[`quotes;$[`bid in cols`quotes;enlist (>;`bid;35);()];0b;()]
および句は、カラムはそういない句が適用される場合には、存在して適用されます。
q)count ?[`quotes;$[`bid in cols`quotes;enlist (>;`bid;35);()];0b;()]
541 //where clause applied, table filtered
q)count ?[`quotes;$[`bad in cols`quotes;enlist (>;`bad;35);()];0b;()]
1000 //where clause not applied, full table returned
希望これは
ジョナサン
AquaQ解析
を支援編集:あなたの更新された質問を正しく理解している場合は、次のような何かをすることができるかもしれません。まず、フィルタ辞書の例を定義しましょう:
ここでは、説明のためにさまざまな種類のいくつかの異なる列を想定しています。 - あなたはまた、値が入隊している、そのISN
q)(in),'flip (key filters;value filters)
in `a 1 2 3
in `b "abc"
in `c `d`e`f
(これはあなたが指揮を生成しなければならなかったのコードと同等ですが、それは少しすっきり&、より効率的です:あなたはどこので、のような句のあなたのリストを構築することができます
次に、vector conditionalを使用して、特定のテーブルに適用するwhere句のリストを生成できます。
q)t:([] a:1 2 3 4 5 6;b:"adcghf")
q)?[key[filters] in cols[t];(in),'flip (key filters;value filters);count[filters]#()]
(in;`a;,1 2 3)
(in;`b;,"abc")
()
この例では、テーブル「t」には列aとbがありますが、cはありません。したがって、条件付きのベクトルを使用すると、aとbではwhere節が得られますが、cではありません。ここで注意すべき
q)l:?[key[filters] in cols[t];(in),'flip (key filters;value filters);count[filters]#()]
q){?[x;$[y~();y;enlist y];0b;()]}/[t;l]
a b
---
1 a
3 c
ことの一つは、ことはのWHERE句である。最後に、実際にテーブルに句、あなたが順番にそれぞれを適用するoverを利用することができ、出力のこのリストを適用する
私たちは、yが空のリストがあるかどうかを確認する必要があり、機能選択 - これはあなたのコードは私のために仕事をし、それが空のリストこれは
おかげで多くのことができます
希望がない場合ので、我々はそれを参加することができます。しかし、私の問題には別の部分があります。私の編集と助言を見てください。もう一度ありがとう – KeenSeeker99
遅延の申し訳ありませんが、うまくいけばあなたの質問の第二部分に対処するための拡張答えを追加して、それが助けて欲しい! –