The content discusses the unified regression with pivoted, which is an interface that allows for calling various regression algorithms using pivot data format. The regression algorithms that can be used include GEO, LOG, EXP, GLM, MLR, POL, DT, HGBT, MLP, RDT, and SVM. However, there are some limitations for certain algorithms. For example, MLP only supports single class and will throw an error if multiple classes are called. Additionally, DT, HGBT, RDT, and SVM only support continuous target columns and can only be used for regression purposes. For more information on each specific regression method, refer to the corresponding topic.
------

SET SCHEMA DM_PAL;

DROP TABLE META_DATA_TAB;
CREATE COLUMN TABLE META_DATA_TAB(
    "VARIABLE_NAME" NVARCHAR(50),
    "VARIABLE_TYPE" NVARCHAR(50)
);

INSERT INTO META_DATA_TAB VALUES ('X1',    'CONTINUOUS');
INSERT INTO META_DATA_TAB VALUES ('Y' ,    'TARGET');
INSERT INTO META_DATA_TAB VALUES ('X2',    'CATEGORICAL');
INSERT INTO META_DATA_TAB VALUES ('X3',    'CONTINUOUS');

DROP TABLE PAL_DATA_TBL;
CREATE COLUMN TABLE PAL_DATA_TBL(
    "ID" INT,
    "VARIABLE_NAME" NVARCHAR(50),
    "VALUE" NVARCHAR(50), 
    "PURPOSE" INT
);
INSERT INTO PAL_DATA_TBL VALUES (0,    'Y',    '-6.879',   1);
INSERT INTO PAL_DATA_TBL VALUES (0,    'X1',   '0.00',     1);
INSERT INTO PAL_DATA_TBL VALUES (0,    'X2',   'A',        1);
INSERT INTO PAL_DATA_TBL VALUES (0,    'X3',   '1',        1);
INSERT INTO PAL_DATA_TBL VALUES (1,    'Y',    '-3.449',   1);
INSERT INTO PAL_DATA_TBL VALUES (1,    'X1',   '0.50',     1);
INSERT INTO PAL_DATA_TBL VALUES (1,    'X2',   'A',        1);
INSERT INTO PAL_DATA_TBL VALUES (1,    'X3',   '1',        1);
INSERT INTO PAL_DATA_TBL VALUES (2,    'Y',    '6.635',    1);
INSERT INTO PAL_DATA_TBL VALUES (2,    'X1',   '0.54',     1);
INSERT INTO PAL_DATA_TBL VALUES (2,    'X2',   'B',        1);
INSERT INTO PAL_DATA_TBL VALUES (2,    'X3',   '1',        1);
INSERT INTO PAL_DATA_TBL VALUES (3,    'Y',    '11.844',   2);
INSERT INTO PAL_DATA_TBL VALUES (3,    'X1',   '1.04',     2);
INSERT INTO PAL_DATA_TBL VALUES (3,    'X2',   'B',        2);
INSERT INTO PAL_DATA_TBL VALUES (3,    'X3',   '1',        2);
INSERT INTO PAL_DATA_TBL VALUES (4,    'Y',    '2.786',    1);
INSERT INTO PAL_DATA_TBL VALUES (4,    'X1',   '1.50',     1);
INSERT INTO PAL_DATA_TBL VALUES (4,    'X2',   'A',        1);
INSERT INTO PAL_DATA_TBL VALUES (4,    'X3',   '1',        1);
INSERT INTO PAL_DATA_TBL VALUES (5,    'Y',    '2.389',    1);
INSERT INTO PAL_DATA_TBL VALUES (5,    'X1',   '0.04',     1);
INSERT INTO PAL_DATA_TBL VALUES (5,    'X2',   'B',        1);
INSERT INTO PAL_DATA_TBL VALUES (5,    'X3',   '2',        1);
INSERT INTO PAL_DATA_TBL VALUES (6,    'Y',    '-0.011',   2);
INSERT INTO PAL_DATA_TBL VALUES (6,    'X1',   '2.00',     2);
INSERT INTO PAL_DATA_TBL VALUES (6,    'X2',   'A',        2);
INSERT INTO PAL_DATA_TBL VALUES (6,    'X3',   '2',        2);
INSERT INTO PAL_DATA_TBL VALUES (7,    'Y',    '8.839',    1);
INSERT INTO PAL_DATA_TBL VALUES (7,    'X1',   '2.04',     1);
INSERT INTO PAL_DATA_TBL VALUES (7,    'X2',   'B',        1);
INSERT INTO PAL_DATA_TBL VALUES (7,    'X3',   '2',        1);
INSERT INTO PAL_DATA_TBL VALUES (8,    'Y',    '4.689',    1);
INSERT INTO PAL_DATA_TBL VALUES (8,    'X1',   '1.54',     1);
INSERT INTO PAL_DATA_TBL VALUES (8,    'X2',   'B',        1);
INSERT INTO PAL_DATA_TBL VALUES (8,    'X3',   '1',        1);
INSERT INTO PAL_DATA_TBL VALUES (9,    'Y',    '-5.507',   1);
INSERT INTO PAL_DATA_TBL VALUES (9,    'X1',   '1.00',     1);
INSERT INTO PAL_DATA_TBL VALUES (9,    'X2',   'A',        1);
INSERT INTO PAL_DATA_TBL VALUES (9,    'X3',   '2',        1);

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

INSERT INTO PAL_PARAMETER_TBL VALUES ('FUNCTION',null,null,'MLR'); 
INSERT INTO PAL_PARAMETER_TBL VALUES ('PARTITION_METHOD',1,null,null); 
INSERT INTO PAL_PARAMETER_TBL VALUES ('OUTPUT_PARTITION_RESULT',1,null,null); 
INSERT INTO PAL_PARAMETER_TBL VALUES ('THREAD_RATIO', null,0.5,null);

--CALL _SYS_AFL.PAL_UNIFIED_REGRESSION_PIVOT(META_DATA_TAB, PAL_DATA_TBL, PAL_PARAMETER_TBL, ?, ?, ?, ?, ?, ?); 

DROP TABLE PAL_DATA_MODEL_TBL;
CREATE COLUMN TABLE PAL_DATA_MODEL_TBL(
     "ROW_INDEX" INTEGER,
     "PART_INDEX" INTEGER,
     "MODEL_CONTENT" VARCHAR (5000)
);

DO BEGIN
  meta_data_tab = SELECT * FROM META_DATA_TAB;
  data_tab = SELECT * FROM PAL_DATA_TBL; 
  control_tab = SELECT * FROM PAL_PARAMETER_TBL; 
  CALL _SYS_AFL.PAL_UNIFIED_REGRESSION_PIVOT(:meta_data_tab, :data_tab, :control_tab, model_tab, stats_tab, optimal_parameter_tab, partition_result, place_holder_1_tab, place_holder_2_tab); 
  INSERT into PAL_DATA_MODEL_TBL SELECT * FROM :model_tab; 
END
