cancel
Showing results for 
Search instead for 
Did you mean: 

What is the purpose of publishing value each t to t in .u.pub?

Mannix
New Contributor III
New Contributor III
if[system"t";
  .z.ts:{pub'[t;value each t];@[`.;t;@[;`sym;`g#]0#];i::j;ts .z.D};
  upd:{[t;x]
  if[not -16=type first first x;if[d<"d"$a:.z.P;.z.ts[]];a:"n"$a;x:$[0>type first x;a,x;(enlist(count first x)#a),x]];
  t insert x;if[l;l enlist (`upd;t;x);j+:1];}];

What do we use .z.ts to publish "value each t" to the "t" itself, I thought we just added updates to the table, not the whole table itself?

Why is this?

1 ACCEPTED SOLUTION

rocuinneagain
Contributor III
Contributor III

This is batching mode when the timer t is set. https://code.kx.com/q/basics/syscmds/#t-timer 

In this mode the TP will cache data and only publish it when the timer triggers .z.ts https://code.kx.com/q/ref/dotz/#zts-timer 

In this case t is a list of tables and it calls pub on each of them (' form)  https://code.kx.com/q/ref/maps/#each 

value is called so that the cached data from the TP is populated in pub to send to subscribers (RDB etc.)

Some more information on batch mode: https://code.kx.com/q/wp/tick-profiling/ 

 

q)upd'[t;value each t] //A demo 'upd' which prints the parameters sent to it
q)a:([] c1:1 2 3)
q)b:([] c2:4 5 6)
q)t:tables[] //Create list of tables
q)t
`s#`a`b
q)upd'[t;value each t]
(`a;+(,`c1)!,1 2 3)
(`b;+(,`c2)!,4 5 6)

 

 

View solution in original post

2 REPLIES 2

leades
Moderator Moderator
Moderator

Hello,

Thank you for sharing your query with us, we're working on feedback for you. 

Many Thanks,

Luke

rocuinneagain
Contributor III
Contributor III

This is batching mode when the timer t is set. https://code.kx.com/q/basics/syscmds/#t-timer 

In this mode the TP will cache data and only publish it when the timer triggers .z.ts https://code.kx.com/q/ref/dotz/#zts-timer 

In this case t is a list of tables and it calls pub on each of them (' form)  https://code.kx.com/q/ref/maps/#each 

value is called so that the cached data from the TP is populated in pub to send to subscribers (RDB etc.)

Some more information on batch mode: https://code.kx.com/q/wp/tick-profiling/ 

 

q)upd'[t;value each t] //A demo 'upd' which prints the parameters sent to it
q)a:([] c1:1 2 3)
q)b:([] c2:4 5 6)
q)t:tables[] //Create list of tables
q)t
`s#`a`b
q)upd'[t;value each t]
(`a;+(,`c1)!,1 2 3)
(`b;+(,`c2)!,4 5 6)