0

私は clojure で GET を誤解していると思います - 以下の A から B まで、あるデータセットを別のデータセットから成形しようとしています。

A
ID地域
Min 10346 GLBL 106
10346 ASPAC 106
10346 NA 106
10346 LATAM 106
10346 EMEA 106
10347 GLBL 32
10347 ASPAC 32
10347 NA 32
10347 LATAM 32
10347 EMEA 32
10349 NA 10
10327 NA
10344
EMEA2034210342 ASPAC 2942 ASPAC
2942
Aspac 15
10422 EMEA 37
10438 NA 0

B
id emea na aspac glbl latam
10346 106 106 106 106 106 10347 32 32 32 32 32
10349 0 0 0 0 0 0 0 0
10327 0 0 0 0
10344 8 0 0 0 0 0 0 0 0 0 0 0 0
10342 292 0 292 0 0
10348 0 0 15 0 0
104222222222222222222222222222222222222222222222222222222 37 0 0 0 0
10438 0 0 0 0 0

グループ化は機能していますが、すべての地域で null 値を取得しています。地域をフィルタリングして get を使用して、そのレコードの MIN の値を取得し、それを新しい地域フィールドにマップします - 私が何であるかについてのアドバイスここで間違っていますか?または、GETの代わりに何を使用する必要がありますか?

(defn- create-summary [data]
(->> data

     (group-by :ID
     vals
     (map 
        (fn [recs]
            (let [a (fn [priority](get :MIN (filter #(= priority (:REGION %)) recs)))]
                {:ID (:ID (first recs))
                 :EMEA (a "EMEA")
                 :NA (a "NA")
                 :GLBL (a "GLBL") 
                 :LATAM (a "LATAM")
                 :ASPAC (a "ASPAC")
                 })))

    ))
4

1 に答える 1

1

これ:

(let [a (fn [priority](get :MIN (filter #(= priority (:REGION %)) recs)))]

する必要があります

(let [a (fn [priority](get (first (filter #(= priority (:REGION %)) recs)) :MIN))]
于 2013-04-11T15:13:44.513 に答える