Habilitar la carga de parámetros para aplicaciones - Teradata AppCenter

Teradata® AppCenter Guía del usuario

Product
Teradata AppCenter
Release Number
1.6
Published
Septiembre de 2018
Language
Español
Last Update
2018-11-27
dita:mapPath
es-ES/xhn1530875955586.ditamap
dita:ditavalPath
ft:empty
dita:id
B035-1111
Product Category
Analytical Ecosystem

A fin de habilitar la carga de parámetros para una aplicación, un desarrollador de aplicaciones debe realizar lo siguiente en la aplicación para que el usuario pueda cargar el archivo de parámetros en la ejecución del trabajo de la aplicación:

  1. En el código de la aplicación, lea el archivo de parámetros en la memoria.Por ejemplo, si el nombre del parámetro es ‘param’, el archivo estaría aquí: /data/parameters/job_id/param
  2. Convierta el archivo para que refleje la consulta deseada.Por ejemplo, si tiene la consulta SQL select * from table where column1 in (${param}), reemplace ${param} con una lista de valores en el archivo cargado. El archivo cargado tendría el siguiente formato:

    value1

    value2

    value3

    La consulta SQL final sería: select * from table where column1 in (‘value1’, ‘value2’, ‘value3’)

    A continuación se muestra código JAVA de ejemplo para habilitar la carga de parámetros:

    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;
        }