Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. LookupKV interface 

    Code Block
    Object lookup(String key);
    Map<String, Object> multiLookup(String[] key);
  2. Implement LookupKV in KeyValueTable and ObjectMappedTable
    1. For KeyValueTable, simply return the value as a string
    2. For ObjectMappedTable, return the object as a Map<String, Object> rather than the actual Object (to avoid classloading issues)
  3. ScriptTransform changes
    1. 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"}}
      ]
    2. configure(): verify tables (datasets and files) exist
    3. transform(): execute lookup methods in a transaction, provide LookupKV instance to script
      1. 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);
      2. Options for multiLookup usage:

        Code Block
        var result = purchases.multiLookup(["alice", "bob"]);
        // do something with result["alice"]
        // do something with result["bob"]

...