std.timeseries
add-bulk
added in 3.0
(add-bulk {:keys [meta template], :as journal} entries)adds multiple entries to the journal
add-entry
added in 3.0
(add-entry {:keys [meta template], :as journal} entry)adds an entry to the journal
(-> (journal {:meta {:head {:range 0 3}}}) (add-entry {:start 1 :output {:value 1}}) journal-info) => (contains-in {:id string? :order :desc, :count 1, :duration “0ms”, :template :output.value :start, :head {:start 1, :output.value 1, :s/time string?}})
derive
added in 3.0
(derive {:keys [meta], :as journal} {:keys [range sample transform], :as params})derives the journal given a select statement
(derive -jnl- {:range :1m :15m :sample 2000 :transform {:interval :0.1s :time {:aggregate :first} :default {:aggregate :mean :sample 3}}})
journal
added in 3.0
(journal)(journal {:keys [id meta entries previous], :as m, :or {id (f/sid)}})creates a new journal
(journal {:meta {:time {:unit :s :format “HH:mm:ss”} :entry {:flatten false} :head {:range 0 3}}})
merge
added in 3.0
(merge)(merge j0)(merge j0 j1)merges two journals of the same type together ^:hiddene
(-> ((merge (derive -jnl- {:range :1m :3m :transform {:interval 1 :time {:aggregate :middle} :default {:aggregate :mean :sample 3}}}) (derive -jnl- {:range :10m -1 :transform {:interval :5s :time {:aggregate :first} :default {:aggregate :mean}}})) {:sample :0.1s :transform {:interval :1s :time {:aggregate :first :fn #(long (/ % 100))} :custom [{:keys :output.value :aggregate :random :fn #(long (* % 100))}]} :series [{:data ’(:start :output.value) :s/meta {:title “Output 1” :with :lines}}]}))
process
added in 3.0
(process arr {:keys [time transform computes], :as opts})processes time series
select
added in 3.0
(select journal)(select {:keys [meta], :as journal} {:keys [range sample transform series template compute], :or {range :all}})selects data ferom the journal
(def -jnl- (->> [0 (journal {:meta {:time {:key :start :order :desc} :head {:range 0 3} :hide #{:meta :template :id}}})] (iterate (fn t journal (let t (+ t 1000000000 (rand-int 100000000)) t (add-entry journal {:start t :output {:value (Math/sin (+ (/ t 100000000000) (rand)))}})))) (map second) (take 1000) (last)))
(select -jnl- {:range :1m :5m :sample 10}) => (fn entries (= 10 (count entries)))
(first (select -jnl- {:range :1m :5m :sample 10})) => (contains {:start integer? :output.value number?})