Problem
You want to add the same set of new, formula-based columns to your data over and over again.
Solution
Store the formulas and column names in a table. Extract them from that table. loop over them trying to make a new column for each pair in your target data table.
favorite_formulas=function({dt1=currentdatatable(),FFpath},{default local},
try(
dtFF=open(FFpath);
current data table(dtFF);
dt1 << suppressFormulaEval(true);
try(c=:colname, wait(0);statusmsg("setup file must contain column colname"); throw ("setup file must contain column colname"));
try(c=:formula, wait(0);statusmsg("setup file must contain column formula"); throw("setup file must contain column formula"));
CN=column("colname")<<getvalues;
F=column("formula")<<getvalues;
close(dtFF,nosave);
current data table(dt1);
for(i=1,i<=nitems(CN),i++,
try(
exp="dt1<<newcolumn(CN[i],formula("||F[i]||"))";
eval(parse(exp));
);
);
dt1 << suppressFormulaEval(false);
print("DONE ADDING FAVORITE FORMULA COLUMNS");
,
print("failure, probably to find favorite formulas file with path "||FFpath);
);
dt1
);
Discussion
I often pull data with the same columns and format and I want to add the same set of new formula columns each time. This is just a tidbit that makes that easy and makes it easy to share around sets of "favorite formulas" with other users as simple, readable datatables. I use this function version inside a lot of other scripts but I also have an addin version.
See Also