run_data_eng/
run_data_eng.rs1use josie_core::program::{execute_program, parse_program};
7use josie_core::{read_program, Operators};
8use serde_json::json;
9use std::process;
10
11static WRANGLE_SCRIPT: &str = include_str!("wrangle.josie");
12
13fn main() {
14 let mut doc = read_program(WRANGLE_SCRIPT).unwrap_or_else(|e| {
15 eprintln!("parse: {:?}", e);
16 process::exit(1);
17 });
18
19 let raw_data = json!([
21 { "region": "APAC", "amount": 100, "product": "A" },
22 { "region": "EMEA", "amount": 50, "product": "B" },
23 { "region": "APAC", "amount": 80, "product": "A" },
24 { "region": "Americas", "amount": 120, "product": "C" },
25 { "region": "EMEA", "amount": 30, "product": "B" },
26 { "region": "APAC", "amount": 60, "product": "C" },
27 ]);
28 doc["state"]["server"] = json!({ "raw_data": raw_data });
29
30 let program = parse_program(&doc).unwrap_or_else(|e| {
31 eprintln!("validate: {} - {}", e.code, e.message);
32 process::exit(1);
33 });
34 let operators = Operators::new();
35 let out = execute_program(&program, &operators).unwrap_or_else(|e| {
36 eprintln!("run: {} - {}", e.code, e.message);
37 process::exit(1);
38 });
39
40 println!("server.result (by region: count, total amount, desc):");
41 println!("{}", serde_json::to_string_pretty(&out.state.server["result"]).unwrap());
42}