You are on page 1of 3

3/13/24, 3:53 PM SAP HANA PAL – K-Means Algorithm or How to do Cust...

- SAP Community

call SYSTEM.afl_wrapper_generator('PAL_KMEANS_TELCO', 'AFLPAL', 'KMEANS', PDATA_TELCO);

After executing this code we should see a new procedure in the _SYS_AFL schema called PAL_KMEANS_TELCO

Run the K-Means Procedure

I generated the K-Means procedure so now I need to write the code that will execute it:

/* This table will contain the parameters that will be used

during the execution of the KMeans procedure.

For Eexample, the number of clusters you would like to use */

DROP TABLE PAL_CONTROL_TAB_TELCO;

CREATE COLUMN TABLE PAL_CONTROL_TAB_TELCO(

https://community.sap.com/t5/technology-blogs-by-members/sap-hana-pal-k-means-algorithm-or-how -to-do-customer-segmentation-for-the/ba-p/12976696/page/2 11/39


3/13/24, 3:53 PM SAP HANA PAL – K-Means Algorithm or How to do Cust... - SAP Community

"NAME" VARCHAR (50),

"INTARGS" INTEGER,

"DOUBLEARGS" DOUBLE,

"STRINGARGS" VARCHAR (100)

);

/* Fill the parameters table */

INSERT INTO PAL_CONTROL_TAB_TELCO VALUES ('THREAD_NUMBER',2,null,null); --> Number of threads to be used


during the execution

INSERT INTO PAL_CONTROL_TAB_TELCO VALUES ('GROUP_NUMBER',3,null,null); --> Number of clusters

INSERT INTO PAL_CONTROL_TAB_TELCO VALUES ('INIT_TYPE',4,null,null); --> This parameter will specify how to
select the initial center of each cluster

INSERT INTO PAL_CONTROL_TAB_TELCO VALUES ('DISTANCE_LEVEL',2,null,null); --> Which distance to use. In this
case I'm using Euclidean

INSERT INTO PAL_CONTROL_TAB_TELCO VALUES ('MAX_ITERATION',100,null,null); --> Maximum Iterations

https://community.sap.com/t5/technology-blogs-by-members/sap-hana-pal-k-means-algorithm-or-how -to-do-customer-segmentation-for-the/ba-p/12976696/page/2 12/39


3/13/24, 3:53 PM SAP HANA PAL – K-Means Algorithm or How to do Cust... - SAP Community

INSERT INTO PAL_CONTROL_TAB_TELCO VALUES ('EXIT_THRESHOLD',null,0.000001,null); --> Threshold value for


exiting an iteration

INSERT INTO PAL_CONTROL_TAB_TELCO VALUES ('NORMALIZATION',0,null,null); --> How to normalize the data. In
this case I'm not normalizing at all

/* This table will contain the resulting cluster

assignment for each customer and the distance to the center of the cluster */

DROP TABLE PAL_KMEANS_RESASSIGN_TAB_TELCO;

CREATE COLUMN TABLE PAL_KMEANS_RESASSIGN_TAB_TELCO(

"ID" INT,

"CENTER_ASSIGN" INT,

"DISTANCE" DOUBLE,

primary key("ID")

);

/* This table will contain the resulting centers for each cluster */

https://community.sap.com/t5/technology-blogs-by-members/sap-hana-pal-k-means-algorithm-or-how -to-do-customer-segmentation-for-the/ba-p/12976696/page/2 13/39

You might also like