code wiki / (root) / nx_analyze_seeddemo.nx

nx_analyze_seeddemo.nx source

↩ module page · 49 lines · 1891 B

1// nx_analyze_seeddemo.nx -- one-shot: write a DURABLE demo dataset (price = 5*size - 2*age + noise) to 2// knowledge/store/azdemo- , sharded row:0/row:1 across the 256 version window, so the nx_analyze `report` 3// verb can be exercised LIVE over MCP against a real persisted seg_store. license_tier: ORIGINAL 4import "nx_syscalls.nx" 5import "_hdl_build/nx_analyst_store.nx" 6const SD_MAGIC_1103515245: i64 = 1103515245 7const SD_MAGIC_12345: i64 = 12345 8const SD_N: i64 = 300 9const SD_SHARD: i64 = 150 10func sd_lcg(s: i64) -> i64 { return (s * SD_MAGIC_1103515245 + SD_MAGIC_12345) & 0x7fffffff } 11func sd_catn(buf: *u8, o: i64, v: i64) -> i64 { 12 var oo: i64 = o 13 var m: i64 = v 14 if m < 0 { buf[oo] = 45 as u8; oo = oo + 1; m = 0 - m } 15 let t: *u8 = sys_mmap(24) 16 var k: i64 = 0 17 if m == 0 { t[0] = 48 as u8; k = 1 } 18 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 19 var i: i64 = k - 1 20 while i >= 0 { buf[oo] = t[i]; oo = oo + 1; i = i - 1 } 21 return oo 22} 23func main() -> i64 { 24 let prefix: *u8 = "knowledge/store/azdemo-" as *u8 25 let w: *i64 = ss_begin() 26 let row: *u8 = sys_mmap(96) 27 let skey: *u8 = sys_mmap(64) 28 var i: i64 = 0 29 while i < SD_N { 30 asr_shard_key("row" as *u8, i / SD_SHARD, skey) 31 var s: i64 = sd_lcg(11 + i * 7) 32 let size: i64 = 50 + (s % 150) 33 s = sd_lcg(s) 34 let age: i64 = s % 40 35 s = sd_lcg(s) 36 let price: i64 = 5 * size - 2 * age + (s % 20) 37 var ro: i64 = 0 38 ro = sd_catn(row, ro, size) 39 row[ro] = 9 as u8; ro = ro + 1 40 ro = sd_catn(row, ro, age) 41 row[ro] = 9 as u8; ro = ro + 1 42 ro = sd_catn(row, ro, price) 43 ss_add(w, 1, skey, row, ro) 44 i = i + 1 45 } 46 ss_commit(prefix, w, sys_now_us()) 47 sys_write(1, "SEEDED knowledge/store/azdemo- rows=300 shards=row:0,row:1\n" as *u8, 58) 48 return 0 49}