アプリとJavaスクリプトのパラメータ アップロードの有効化 - Teradata AppCenter

Teradata® AppCenter ユーザー ガイド

Product
Teradata AppCenter
Release Number
2.0
Published
2020年9月
Language
日本語
Last Update
2020-10-19
dita:mapPath
ja-JP/zzv1586527506119.ditamap
dita:ditavalPath
ft:empty
dita:id
B035-1111
Product Category
Analytical Ecosystem
"" ユーザー、管理者

アプリまたはJavaスクリプトのパラメータをアップロードできるようにするには、次の操作を行ないます。

  1. アプリまたはスクリプト コードで、パラメータ ファイルをメモリに読み込みます。
    例えば、パラメータ名が‘param’の場合、ファイルの場所は次のようになります。/data/parameters/job_id/param
  2. 目的のクエリーを反映するようにファイルを変換します。
    例えば、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;
        }