SAP HANA里的情感分析实现的SQLScript代码

简介: SAP HANA里的情感分析实现的SQLScript代码

create procedure pr_sent as var_num integer

;

var_time timestamp

;

i_longth integer

;

var_id NVARCHAR (32)

;

var_sterm varchar (100)

;

var_match varchar (200)

;

var_date date

;

I_EXIST_CAMPAIGN INTEGER

;

I_EXIST_SERVICE INTEGER

;

CURSOR C_values for select

      distinct SocialDataUUID,

      SocialPostSearchTermText ,

      SOCIALPOSTCREATIONDATE

from VOICEOFCUSTOMER

where match_flag='0'

;

 

BEGIN ----PART1 VOICEOFCUSTOMERDETAIL

insert

into VOICEOFCUSTOMERDETAIL (SocialDataUUID ,

      RULE,

      COUNTER,

      VOICEOFCUSTOMERTYPE ,

      VOICEOFCUSTOMERTEXT ) select

      T1.SocialDataUUID,

      T2.TA_RULE,

      T2.TA_COUNTER,

      T2.TA_TYPE,

      T2.TA_TOKEN

from "SAP_SOMI"."sap.hba.somi.db::SOCIALDATA" t1,

      "SAP_SOMI"."$TA_INDEXVOICEOFCUST" t2

where t1.SocialDataUUID=t2.SocialDataUUID

and NOT EXISTS (SELECT

      1

      FROM VOICEOFCUSTOMERDETAIL a4

      WHERE t2.SocialDataUUID=a4.SocialDataUUID )

and (upper (t2.TA_TYPE) = 'TOPIC'

      or t2.TA_TYPE ='PRODUCT'

      OR UPPER (t2.TA_TYPE) LIKE '%REQUEST'

      OR (UPPER (t2.TA_TYPE) LIKE '%SENTIMENT'

             AND UPPER (t2.TA_TYPE) <> 'SENTIMENT' )

      OR UPPER (t2.TA_TYPE) LIKE '%PROBLEM'

      OR UPPER (t2.TA_TYPE) LIKE '%SERVICE' )

;

---VOICEOFCUSTOMER

insert

into VOICEOFCUSTOMER ("SOCIALDATAUUID" ,

      SocialPostSearchTermText ,

      "VOICEOFCUSTOMERAVERAGEOPINION",

      SOCIALPOSTCREATIONDATETIME ,

      SOCIALPOSTCreationDateYear ,

      SOCIALPOSTCreationDateMonth ,

      SOCIALPOSTCREATIONDATE ,

      "SENTIMENT_AVG" ,

      "MATCH_FLAG" ) select

      DISTINCT SocialDataUUID,

      SocialPostSearchTermText,

      case when type_num = 0

or type_num is null

then 'Neutral' when type_num >0

AND type_num <= 1

then 'Weak Positive' when type_num>1

AND type_num <=2

then 'Strong Positive' when type_num>= -1

AND type_num <0

then 'Weak Negative' when type_num>= -2

AND type_num <-1

then 'Strong Negative'

else 'No Sentiment'

end as VoiceOfCustomerSubType,

      to_timestamp(CreationDateTime),

      SUBSTR (CreationDateTime,

      1,

      4 ) AS CreationYear ,

      SUBSTR (CreationDateTime,

      1,

      7 ) AS CreationMonth ,

      TO_DATE (CreationDateTime) AS CreationDate,

      map (type_num,

      null,

      0,

      type_num) AS SENTIMENT_AVG,

      '0' as match_flag

from (select

      t1.SocialDataUUID,

      t1.SocialPostSearchTermText,

      substr_before (to_char(TO_timestamp (TRIM (SUBSTR (T1.CreationDateTime,

      INSTR (T1.CreationDateTime,

      ',')+1,

      INSTR (T1.CreationDateTime,

      '+')-INSTR (T1.CreationDateTime,

      ',')-1 ) ),

      'DD MON YYYY HH24:MI:SS')),

      '.' ) as CreationDateTime,

      t2.TA_TYPE,

      T2.TA_COUNTER,

      T2.TA_TOKEN ,

      t4.type_num

      from "SAP_SOMI"."sap.hba.somi.db::SOCIALDATA" t1

      LEFT JOIN (select

      sum (case when TA_TYPE ='NeutralSentiment'

                    then 0 when TA_TYPE ='StrongNegativeSentiment'

                    then -2 when TA_TYPE ='StrongPositiveSentiment'

                    then 2 when TA_TYPE ='WeakNegativeSentiment'

                    then -1 when TA_TYPE ='WeakPositiveSentiment'

                    then 1

                    else 0

                    end ) / count (1) as type_num,

      SocialDataUUID

             from (select

      a2.SocialDataUUID,

      a2.TA_TYPE

                    from "SAP_SOMI"."$TA_INDEXVOICEOFCUST" a2

                    where NOT EXISTS (SELECT

      1

                          FROM VOICEOFCUSTOMER a4

                          WHERE a2.SocialDataUUID=a4.SocialDataUUID )

                    and ( UPPER (a2.TA_TYPE) LIKE '%SENTIMENT'

                          AND UPPER (a2.TA_TYPE) <> 'SENTIMENT' ) )

             group by SocialDataUUID ) t4 ON t1.SocialDataUUID=t4.SocialDataUUID ,

      "SAP_SOMI"."$TA_INDEXVOICEOFCUST" t2

      where t1.SocialDataUUID=t2.SocialDataUUID

      and NOT EXISTS (SELECT

      1

             FROM VOICEOFCUSTOMER a4

             WHERE t2.SocialDataUUID=a4.SocialDataUUID )

      and (upper (t2.TA_TYPE) = 'TOPIC'

             or t2.TA_TYPE ='PRODUCT'

             OR UPPER (t2.TA_TYPE) LIKE '%REQUEST'

             OR (UPPER (t2.TA_TYPE) LIKE '%SENTIMENT'

                    AND UPPER (t2.TA_TYPE) <> 'SENTIMENT' )

             OR UPPER (t2.TA_TYPE) LIKE '%PROBLEM'

             OR UPPER (t2.TA_TYPE) LIKE '%SERVICE' ) )T

;

-----PART2 MATCH_CAMP

for i_val as c_values do var_id := i_val.SocialDataUUID

;

var_sterm := i_val.SocialPostSearchTermText

;

var_date:=i_val.SOCIALPOSTCREATIONDATE

;

--INSERT INTO VOICEOFCUSTCAMP

SELECT

      COUNT (1)

INTO I_EXIST_CAMPAIGN

FROM VIEWS

WHERE VIEW_NAME='sap.crm.sentiment/AT_CAMP'

AND SCHEMA_NAME='_SYS_BIC'

;

 

IF I_EXIST_CAMPAIGN=1

THEN insert

into VOICEOFCUSTCAMP select

      var_id,

      var_sterm,

      guid,

      CAMP_TEXT,

      PRODUCT_TEXT,

      SNIPPETS (CAMP_TEXT),

      SNIPPETS (PRODUCT_TEXT)

from "_SYS_BIC"."sap.crm.sentiment/AT_CAMP" t1

where contains ( (CAMP_TEXT,

      PRODUCT_TEXT),

      var_sterm ,

      FUZZY (0.9) )

AND PLANSTARTDATE < var_date

;

 

END

IF

;

--INSERT INTO VOICEOFCUSTSERVICE

SELECT

      COUNT (1)

INTO I_EXIST_SERVICE

FROM VIEWS

WHERE VIEW_NAME='sap.crm.sentiment/AT_SERV'

AND SCHEMA_NAME='_SYS_BIC'

;

 

IF I_EXIST_SERVICE=1

THEN insert

into VOICEOFCUSTSERV select

      var_id,

      var_sterm,

      guid,

      DESCRIPTION,

      SHORT_TEXT,

      SNIPPETS (DESCRIPTION),

      SNIPPETS (SHORT_TEXT)

from "_SYS_BIC"."sap.crm.sentiment/AT_SERV" t1

where contains ( (DESCRIPTION,

      SHORT_TEXT),

      var_sterm ,

      FUZZY (0.9) )

;

 

END

IF

;

update VOICEOFCUSTOMER

set match_flag='1'

where match_flag='0'

and SocialDataUUID=var_id

;

 

end for

;

 

END

;

image.png

目录
相关文章
|
5月前
|
开发者 数据处理 数据管理
SAP HANA 的不同类型
SAP HANA 的不同类型
SAP HANA 的不同类型
|
5月前
|
SQL 数据库 索引
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
|
5月前
|
数据库 存储 监控
什么是 SAP HANA 内存数据库 的 Delta Storage
什么是 SAP HANA 内存数据库 的 Delta Storage
什么是 SAP HANA 内存数据库 的 Delta Storage
|
5月前
|
存储
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
|
5月前
|
数据库
什么是 SAP S/4HANA 的 Brown Field 迁移和 Green Field 迁移
什么是 SAP S/4HANA 的 Brown Field 迁移和 Green Field 迁移
|
5月前
|
JSON 应用服务中间件 API
使用 ABAP 代码消费 SAP 系统的 OData 服务
使用 ABAP 代码消费 SAP 系统的 OData 服务
|
5月前
|
数据库 存储 安全
使用 SAP HANA Cloud 的一些优势
使用 SAP HANA Cloud 的一些优势
使用 SAP HANA Cloud 的一些优势
|
5月前
|
Java BI API
SAP Cloud for Customer 里如何通过 ABSL 二次开发方式消费 SAP S/4HANA 系统的 API
SAP Cloud for Customer 里如何通过 ABSL 二次开发方式消费 SAP S/4HANA 系统的 API
|
5月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
|
5月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍

热门文章

最新文章

下一篇
无影云桌面