You may find it helpful to use the step attribute [ http://code.kx.com/q/cookbook/temporal-data/#stepped-attribute ]
This will allow you to have, for example, missing dates from the info table and instead use the "most recent" date (so you do not need to have data for each character every day). For example, without a step attribute:
q)data:([] dt:(10?2017.01.01+til 2)+10?.zt;sym:10?`AAPL`GOOG;bid:100+10?5;ask:105+10?5) q)info:([] date:2017.01.01 2017.01.01 2017.01.02;sym:`AAPL`GOOG`AAPL;shares:500 100 200;divisor:2 1 2) q)(update date:`date$dt from data) lj 2!info dt sym bid ask date shares divisor -------------------------------------------------------------------- 2017.01.01D04:04:03.440000000 GOOG 104 105 2017.01.01 100 1 2017.01.01D14:00:02.748000000 GOOG 104 105 2017.01.01 100 1 2017.01.02D09:34:52.869000000 GOOG 102 106 2017.01.02 2017.01.02D16:44:16.648000000 AAPL 100 107 2017.01.02 200 2 2017.01.01D08:48:23.285000000 AAPL 102 108 2017.01.01 500 2 2017.01.02D02:31:11.038000000 AAPL 104 109 2017.01.02 200 2 2017.01.01D05:50:50.463000000 GOOG 104 109 2017.01.01 100 1 2017.01.02D02:13:45.275000000 AAPL 101 107 2017.01.02 200 2 2017.01.01D10:25:30.322000000 AAPL 104 109 2017.01.01 500 2 2017.01.01D14:51:12.687000000 AAPL 103 109 2017.01.01 500 2
Pay attention to the zeros for GOOG on 2017.01.02 . With step attribute:
q)(update date:`date$dt from data) lj `s
Here GOOG gets the values ββfor 2017.01.01 , since there is no new value for 2017.01.02
source share