...
LookupKV interface
Code Block Object lookup(String key); Map<String, Object> multiLookup(String[] key);
- Implement LookupKV in KeyValueTable and ObjectMappedTable
- For KeyValueTable, simply return the value as a string
- For ObjectMappedTable, return the object as a Map<String, Object> rather than the actual Object (to avoid classloading issues)
- ScriptTransform changes
Add configuration property for declaring lookup tables to use, properties for each table (e.g. dataset properties)
Code Block "tables": [ { "name":"purchases", "type":"dataset", "properties": { "dataset":"purchases", "properties":{.. dataset properties ..}, "enableCache":"true", "cacheExpiry":1234 } }, {"name":"ip2geo", "type":"file", "properties":{"file":"/data/ip2geo.csv"}} ]
- configure(): verify tables (datasets and files) exist
- transform(): execute lookup methods in a transaction, provide LookupKV instance to script
Options for lookup usage:
Code Block var result = context.getTable("purchases").lookup(user); // or var result = tables["purchases"].lookup(user); // or var result = purchases.lookup(user);
Options for multiLookup usage:
Code Block var result = purchases.multiLookup(["alice", "bob"]); // do something with result["alice"] // do something with result["bob"]
...