私はこのクエリを持っています:
(?<- (hfs-textline data-out :sinkmode :replace)
[?item1 ?item2]
((hfs-textline data-in) ?line)
(data-line? ?line)
(filter-out-data (#(vector (s/split % #",")) ?line) :> ?item1 ?item2)
)
(defn data-line? [^String row]
(and (not= -1 (.indexOf row ","))
(not (.endsWith row ","))
(not (.startsWith row ","))))
(defn filter-out-data [data]
(<- [?item1 ?item2]
(data :#> 9 {4 ?item1
8 ?item2})))
クエリは CSV ファイルを 1 行ずつ読み取り、有効なデータ条件 ( ) を満たす行をチェックしますdata-line?
- この部分は機能します。次に、行をカンマで分割し、ベクトルをfilter-out-data
関数に渡します。関数は、そのベクトルから抽出された 2 つの項目を返します。クエリを実行すると、次のエラーが表示されます: Unable to resolve symbol: ?line
in this context.
分割の結果を渡すさまざまな方法を試してきました(分割のサイズが異なるため、柔軟にしたいと思います)。私は Clojure と Cascalog から始めたばかりです。正しい方向に向けていただければ幸いです。ありがとう!