Hi, I need some help to translate a PL/SQL script in HiveQL.
Problem : my PL/SQL script is calling two functions. you can see the script below : SELECT in_co_societe as co_societe, 'SEMAINE' as co_type_periode, a.type_entite as type_entite, a.code_entite as code_entite, a.type_rgrp_produits as type_rgrp_produits, a.co_rgrp_produits as co_rgrp_produits, SUM(a.MT_CA_NET_TTC) as MT_CA_NET_TTC, SUM(a.MT_OBJ_CA_NET_TTC) as MT_OBJ_CA_NET_TTC, SUM(a.NB_CLIENTS) as NB_CLIENTS, SUM(a.MT_CA_NET_TTC_COMP) as MT_CA_NET_TTC_COMP, SUM(a.MT_OBJ_CA_NET_TTC_COMP) as MT_OBJ_CA_NET_TTC_COMP, SUM(a.NB_CLIENTS_COMP) as NB_CLIENTS_COMP from kpi.thm_ca_rgrp_produits_jour/*@o_bi.match.eu*/ a WHERE a.co_societe = in_co_societe AND a.dt_jour between ( SELECT cal.dt_jour_deb FROM ods.calendrier_hebdo cal WHERE cal.co_societe = in_co_societe AND cal.co_an_semaine = ods.package_date.get_semaine( ods.package_date.fcalc_idjour( CASE WHEN TO_CHAR(D_Dernier_Jour,'YYYY') = TO_CHAR(D_Dernier_Jour-364,'YYYY') THEN NEXT_DAY(D_Dernier_Jour-364,1)-7 ELSE D_Dernier_Jour-364 END ) ) ) AND D_Dernier_Jour-364 -- On ne calcule rien si la semaine est compl¿¿te AND ( TO_CHAR(D_Dernier_Jour,'DDMM') <> '3112' AND TO_CHAR(D_Dernier_Jour,'D') <> '7' ) GROUP BY a.type_entite, a.code_entite, a.type_rgrp_produits, a.co_rgrp_produits; The function ods.package_date.get_semaine is : FUNCTION GET_SEMAINE (ID_DEB IN NUMBER) RETURN NUMBER IS SEMAINE NUMBER(10); BEGIN SELECT CO_AN_SEMAINE INTO SEMAINE FROM CALENDRIER WHERE ID_JOUR = ID_DEB; RETURN (SEMAINE); EXCEPTION WHEN NO_DATA_FOUND THEN RETURN (0); WHEN OTHERS THEN RETURN (0); END; The function ods.package_date.fcalc_idjour is below : FUNCTION FCALC_IDJOUR (DATE_REFERENCE IN DATE) RETURN NUMBER IS NM_ANNEE NUMBER := TO_NUMBER(TO_CHAR(DATE_REFERENCE,'YYYY')); NM_MOIS NUMBER := TO_NUMBER(SUBSTR(TO_CHAR(DATE_REFERENCE,'YYYYMM'),5,2)); NM_JOUR NUMBER := TO_NUMBER(SUBSTR(TO_CHAR(DATE_REFERENCE,'YYYYMMDD'),7,2)); IDJOUR_CALCULE NUMBER := 0; BEGIN IF NM_ANNEE < 1998 OR DATE_REFERENCE IS NULL THEN IDJOUR_CALCULE := 0; ELSE IDJOUR_CALCULE := ((NM_ANNEE - 1998) * 600) + ((NM_MOIS - 01) * 50) + NM_JOUR; END IF; RETURN IDJOUR_CALCULE; DBMS_OUTPUT.PUT_LINE(IDJOUR_CALCULE); END FCALC_IDJOUR; Is it possible to translate this in one HiveQL script ?