Scale with Model is a method used to scale data using a previously generated scaling model. This method assumes that the new data comes from a similar distribution and does not update the scaling model.
------

SET SCHEMA DM_PAL;

DROP TABLE PAL_SCALING_DATA_TBL;
CREATE COLUMN TABLE PAL_SCALING_DATA_TBL (
    "ID" INT,
    "X1" DOUBLE,
    "X2" DOUBLE
);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (0,   6.0, 9.0);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (1,  12.1, 8.3);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (2,  13.5, 15.3);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (3,  15.4, 18.7);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (4,  10.2, 19.8);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (5,  23.3, 20.6);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (6,  24.4, 24.3);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (7,  30.6, 25.3);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (8,  32.5, 27.6);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (9,  25.6, 28.5);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (10, 38.7, 29.4);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (11, 38.7, 29.4);

DROP TABLE PAL_SCALE_PARAMETER_TBL;
CREATE COLUMN TABLE PAL_SCALE_PARAMETER_TBL (
    "PARAM_NAME" VARCHAR (256),
    "INT_VALUE" INTEGER,
    "DOUBLE_VALUE" DOUBLE,
    "STRING_VALUE" VARCHAR (1000)
);
INSERT INTO PAL_SCALE_PARAMETER_TBL VALUES ('SCALING_METHOD',1,NULL, NULL);
INSERT INTO PAL_SCALE_PARAMETER_TBL VALUES ('Z-SCORE_METHOD',0, NULL, NULL);
INSERT INTO PAL_SCALE_PARAMETER_TBL VALUES ('THREAD_NUMBER',2, NULL, NULL);

DROP TABLE PAL_SCALING_MODEL_TBL;
CREATE COLUMN TABLE PAL_SCALING_MODEL_TBL (
    "JID" INT,
    "JSMODEL" VARCHAR(5000)
);

DO BEGIN
  lt_data = SELECT * FROM PAL_SCALING_DATA_TBL;
  lt_param = SELECT * FROM PAL_SCALE_PARAMETER_TBL;
  CALL "_SYS_AFL"."PAL_SCALE"(:lt_data, :lt_param, lt_result, lt_model, lt_stat, lt_cv_param);
  INSERT INTO PAL_SCALING_MODEL_TBL SELECT * FROM :lt_model;
END;

------ Scaling with Model --------

DROP TABLE PAL_SCALING_DATA_TBL;
CREATE COLUMN TABLE PAL_SCALING_DATA_TBL (
    "ID" INTEGER,
    "S_X1" DOUBLE,
    "S_X2" DOUBLE
);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (0 ,6, 9);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (1 , 6,7);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (2, 4, 4);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (3, 1, 2);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (4, 9,-2);
INSERT INTO PAL_SCALING_DATA_TBL VALUES (5, 4, 5.0);

DROP TABLE #PAL_PARAMETER_TBL;
CREATE LOCAL TEMPORARY COLUMN TABLE #PAL_PARAMETER_TBL (
    "PARAM_NAME" VARCHAR (256),
    "INT_VALUE" INTEGER,
    "DOUBLE_VALUE" DOUBLE,
    "STRING_VALUE" VARCHAR (1000)
);

CALL "_SYS_AFL"."PAL_SCALE_WITH_MODEL"(PAL_SCALING_DATA_TBL, PAL_SCALING_MODEL_TBL, #PAL_PARAMETER_TBL, ?);
