アプリまたはJavaスクリプトのパラメータをアップロードできるようにするには、次の操作を行ないます。
- アプリまたはスクリプト コードで、パラメータ ファイルをメモリに読み込みます。例えば、パラメータ名が‘param’の場合、ファイルの場所は次のようになります。/data/parameters/job_id/param
- 目的のクエリーを反映するようにファイルを変換します。例えば、SQLクエリー「select * from table where column1 in (${param})」がある場合、${param}をアップロードされたファイルの値のリストに置き換えます。アップロードされたファイルは、次の形式になります。
value1
value2
value3
最終的なSQLクエリーは次のようになります。select * from table where column1 in (‘value1’, ‘value2’, ‘value3’)
以下は、パラメータのアップロードを有効にするためのサンプルJAVAコードです。
public class SampleApp { private static final String PARAMETER_VOLUME_MOUNT_PATH = "/data/parameters/"; public static void main( String[] args ) throws Exception { String query1 = "select * from cfilter_demo where col1_item1 in (${param});"; Try (DefaultAppCenterClient client = new DefaultAppCenterClient()) { client.log(LogLevel.INFO, "Replacing query parameters..."); String query = replaceWithConfig(client, query1, "param"); client.log(LogLevel.INFO, "executing query:" + query); InputStream resultStream = client.streamResultsFromQuery(query); client.log(LogLevel.INFO, "Caching result..."); client.cacheResult(resultStream, "application/json"); } catch (Exception e) { e.printStackTrace(); System.exit(1); } } private static String getParamValueFromFile(DefaultAppCenterClient client, String configParamName) throws IOException { String paramFile = PARAMETER_VOLUME_MOUNT_PATH + client.getAppContext().getJobId() + "/" + configParamName; StringBuilder configParamValue = new StringBuilder(); boolean isFirst = true; try (BufferedReader br = new BufferedReader(new FileReader(paramFile))) { for (String line; (line = br.readLine()) != null; ) { if (!isFirst) { configParamValue.append(","); } else { isFirst = false; } configParamValue.append("'").append(line).append("'"); } } return configParamValue.toString(); } private static String replaceWithConfig(DefaultAppCenterClient client, String query, String paramName) throws IOException { String paramValue = getParamValueFromFile(client, paramName); query = query.replace("${" + paramName + "}", paramValue); return query; }