The content explains different methods for handling missing values in a table. The methods include filling missing values with the mode, mean, median, or a specified value, using a matrix completion model, deleting rows with missing values, or leaving the column untouched. The content also provides a parameter table with optional parameters for customizing the handling of missing values.
------

SET SCHEMA DM_PAL;

DROP TABLE  PAL_DATA_TBL;
CREATE COLUMN TABLE PAL_DATA_TBL (
	"ID" INTEGER,
	"OUTLOOK" VARCHAR(20),
	"TEMP" INTEGER,
	"HUMIDITY" DOUBLE,
	"WINDY" VARCHAR(10),
	"CLASS" VARCHAR(20)
);
INSERT INTO PAL_DATA_TBL VALUES (1, 'Sunny', 75, null, 'Yes', 'Play');
INSERT INTO PAL_DATA_TBL VALUES (2, 'Sunny', 80, 90.0, 'Yes', 'Do not Play');
INSERT INTO PAL_DATA_TBL VALUES (3, 'Sunny', 85, 91.0, 'No', 'Do not Play');
INSERT INTO PAL_DATA_TBL VALUES (4, 'Sunny', 72, 95.0, 'No', 'Do not Play');
INSERT INTO PAL_DATA_TBL VALUES (5, 'Sunny', 73, 70.0, 'No', 'Play');
INSERT INTO PAL_DATA_TBL VALUES (6, 'Overcast', null, 90, 'Yes', 'Play');
INSERT INTO PAL_DATA_TBL VALUES (7, 'Overcast', null, 78, 'No', 'Play');
INSERT INTO PAL_DATA_TBL VALUES (8, 'Overcast', 64.0, 65, 'Yes', 'Play');
INSERT INTO PAL_DATA_TBL VALUES (9, 'Overcast', 81.0, 75, 'No', 'Play');
INSERT INTO PAL_DATA_TBL VALUES (10, 'Rain', 71, 80.0, 'Yes', 'Do not Play');
INSERT INTO PAL_DATA_TBL VALUES (11, 'Rain', 65, 70.0, 'Yes', 'Do not Play');
INSERT INTO PAL_DATA_TBL VALUES (12, 'Rain', 75, 80.0, 'No', 'Play');
INSERT INTO PAL_DATA_TBL VALUES (13, 'Rain', 68, 80.0, 'No', 'Play');
INSERT INTO PAL_DATA_TBL VALUES (14, 'Rain', 70, 96.0, 'No', 'Play');

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

INSERT INTO PAL_PARAMETER_TBL VALUES ('FUNCTION', NULL, NULL, 'M_LOGR');
INSERT INTO PAL_PARAMETER_TBL VALUES ('KEY', 1, NULL, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('HANDLE_MISSING_VALUE', 1, NULL, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('IMPUTATION_TYPE', 2, NULL, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('PARTITION_METHOD', 2, NULL, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('PARTITION_STRATIFIED_VARIABLE', NULL, NULL, 'CLASS');
INSERT INTO PAL_PARAMETER_TBL VALUES ('PARTITION_TRAINING_PERCENT', NULL, 0.7, NULL); 
INSERT INTO PAL_PARAMETER_TBL VALUES ('OUTPUT_PARTITION_RESULT', 1, NULL, NULL); 

DROP TABLE PAL_MODEL_TBL;  
CREATE COLUMN TABLE PAL_MODEL_TBL (
	"ROW_INDEX" INTEGER,
	"PART_INDEX" INTEGER,
	"MODEL_CONTENT" NVARCHAR(5000)
);

DROP TABLE PAL_IMP_TBL;
CREATE COLUMN TABLE PAL_IMP_TBL (
	"VARIABLE_NAME" NVARCHAR(256),
	"IMPORTANCE" DOUBLE
);

DROP TABLE PAL_STAT_TBL;
CREATE COLUMN TABLE PAL_STAT_TBL (
	"STAT_NAME" NVARCHAR(256),
	"STAT_VALUE" NVARCHAR(1000),
	"CLASS_NAME" NVARCHAR(256)
);

DROP TABLE PAL_OPT_PARAM_TBL;
CREATE  COLUMN TABLE PAL_OPT_PARAM_TBL (
	"PARAM_NAME" VARCHAR (100), 
	"INT_VALUE" INTEGER, 
	"DOUBLE_VALUE" DOUBLE, 
	"STRING_VALUE" VARCHAR (100)
);

DROP TABLE PAL_CMATRIX_TBL;
CREATE COLUMN TABLE PAL_CMATRIX_TBL (
	"ACTUAL_CLASS" NVARCHAR(256),
	"PREDICTED_CLASS" NVARCHAR(256),
	"COUNT" INTEGER
);

DROP TABLE PAL_METRICS_TBL;
CREATE COLUMN TABLE PAL_METRICS_TBL (
	"NAME" NVARCHAR(256),
	"X" DOUBLE,
	"Y" DOUBLE 
);

DROP TABLE PAL_PARTITION_TBL;
CREATE COLUMN TABLE PAL_PARTITION_TBL (
	"ID" INTEGER,
	"TYPE" INTEGER
);

DO
BEGIN
	lt_data = SELECT * FROM PAL_DATA_TBL;
	lt_ctrl = SELECT * FROM PAL_PARAMETER_TBL;
	CALL _SYS_AFL.PAL_UNIFIED_CLASSIFICATION (:lt_data, :lt_ctrl, lt_model, lt_imp,lt_stat, lt_opt,lt_cm,lt_metrics,lt_partition,lt_ph1);
	INSERT INTO PAL_MODEL_TBL SELECT * FROM :lt_model;
END;
SELECT * FROM PAL_MODEL_TBL;
