cancel
Showing results for 
Search instead for 
Did you mean: 

Exception 73001402 during execution of Predictive Analytics Library (PAL) in HANA for Random Forest

Former Member
0 Kudos

Hey,

when executing the procedure for the Random Forest algorithm, i get this error:

2:05:03 PM (SQL Editor) Could not execute 'CALL "IOYMB191QNJP8QPJ_RULE_MINING_HDI_CONTAINER_2"."sap::RandomForestTrain"(PROCESSGUID => ...'Error: (dberror) AFL error: search table error: _SYS_AFL.AFLPAL:RANDOMFORESTTRAIN: [423] (range 3) AFL error exception: exception 73001402: PAL error[73001402]:Data table column 1 cannot be handled as continuous type

Here are my TableTypes:

table type FOREST_TRAIN_DATA {
     "0" : String(100);
     "1" : String(100);
     "2" : String(100);
     "3" : String(100);
     "4" : String(100);
     "5" : String(100);
     "6" : String(100);
     "7" : String(100);
     "8" : String(100);
     "9" : String(100);
     "10" : String(100);
     "11" : String(100);
     "12" : String(100);
     "13" : String(100);
     "14" : String(100);
     "15" : String(100);
     "16" : String(100);
     "17" : String(100);
     "18" : String(100);
     "19" : String(100);
     "CLASS" : String(20);
   };
   
   table type FOREST_TRAIN_PARAM {
     "NAME" : hana.VARCHAR(100);
	"INTARGS" : Integer; 
	"DOUBLEARGS" : Double;
	"STRINGARGS" : hana.VARCHAR(100);
   };
   
   table type FOREST_TRAIN_MODEL{
       ID     : Integer;
       TREEINDEX : Integer;
       MODEL : hana.VARCHAR(5000);
   };
   
   table type FOREST_TRAIN_IMPORTANCE{
      VARIABLE : hana.VARCHAR(100);
      IMPORTANCE: Double;
      };
      
    table type FOREST_TRAIN_ERROR{
      TREEINDEX : Integer;
      ERROR_RATE: Double;
      };
      
    table type FOREST_TRAIN_CONFUSION{
      ID : Integer;
      CONTENT: hana.VARCHAR(1000);
      };

Signature file:

{
	"procedure": "sap::RandomForestTrainSignature",
	"area": "AFLPAL",
	"function": "RANDOMFORESTTRAIN",
	"parameters": [
					{
						"type": "sap::RandomForestTrainTableTypes.FOREST_TRAIN_DATA",
						"direction": "IN"
					}, {
						"type": "sap::RandomForestTrainTableTypes.FOREST_TRAIN_PARAM", 
						"direction": "IN"
					},  {
						"type": "sap::RandomForestTrainTableTypes.FOREST_TRAIN_MODEL",
						"direction": "OUT"
					}, {
						"type": "sap::RandomForestTrainTableTypes.FOREST_TRAIN_IMPORTANCE",
						"direction": "OUT"
					}, {
						"type": "sap::RandomForestTrainTableTypes.FOREST_TRAIN_ERROR",
						"direction": "OUT"
					}, {
						"type": "sap::RandomForestTrainTableTypes.FOREST_TRAIN_CONFUSION",
						"direction": "OUT"
					}
		]
}

Procedure:

PROCEDURE "sap::RandomForestTrain" ()
   LANGUAGE SQLSCRIPT
   SQL SECURITY INVOKER
   --DEFAULT SCHEMA <default_schema_name>
   READS SQL DATA AS
BEGIN


  FOREST_TRAIN_PARAM = select 'TREES_NUM' as "NAME" , 300 as "INTARGS", null as "DOUBLEARGS", null as "STRINGARGS"  from "synonym::DUMMY"
                  union 
                  select 'TRY_NUM' as "NAME" , 3 as "INTARGS", null as "DOUBLEARGS", null as "STRINGARGS"  from "synonym::DUMMY"
                  union
                  select 'CONTINUOUS_COL' as "NAME" , 1 as "INTARGS", null as "DOUBLEARGS", null as "STRINGARGS"  from  "synonym::DUMMY"
                  union
                  select 'CONTINUOUS_COL' as "NAME" , 2 as "INTARGS", null as "DOUBLEARGS", null as "STRINGARGS"  from  "synonym::DUMMY"
                  ;
  
  FOREST_TRAIN_DATA = select * from "rule_mining.db.data::RandomForest.FOREST_TRAIN_DATA";
  
  CALL "sap::RandomForestTrainSignature"(:FOREST_TRAIN_DATA, :FOREST_TRAIN_PARAM, :FOREST_TRAIN_MODEL, :FOREST_TRAIN_IMPORTANCE, :FOREST_TRAIN_ERROR, :FOREST_TRAIN_CONFUSION);

select * from :FOREST_TRAIN_MODEL;
  
END

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

If the feature in the training data table is continuous variable, it must be either INT or DOUBLE column. If the column is of DOUBLE type, no parameter is needed. If it is of INT type, 'CONTINOUS_COL' is needed with the column index of the table starting from 0. The 'CONTINOUS_COL' does not apply to string column. In your case, if a string column is continuous variable, please set the column type to DOUBLE or convert the string column to double column explicitly in SQL.

Best regards,

Xingtian

Answers (0)