# # ITSV GmbH # CCDB - Command and Control Database # # FILE: dquerymfile_kfocopyklepartner.txt # DESCRIPTION: DQUERY definition for kfocopyklepartner # @querytitle KFOPP-002: Kopiere KFO-LE-Partner aus KFOQSDB @querydescription Liest Partner aus einer KFOQSDB und speichert sie in Tabelle CCKFODBPARTNER @group KFOQSDBPARPREFILL @attributenames mfileid:mfileid:{{mfileidoptions}},cfgname:kfodbconfigname @mfileidoptions { labeltext: "Ladedatei", typedesc: "Name einer managed Datei, aus der die Partnerdaten geladen werden sollen, wenn nicht direkt aus der Datenbank gelesen wird", is_optional: true } @cfgnameoptions { labeltext: "Ladedatenbank", typedesc: "KFOQSDB-Datenbank-Instanz, aus der die Partnerdaten geladen werden sollen, wenn nicht aus der Ladedatei", is_optional: true } @querytype function @function seqtrans.seqtrans @sql_select select p."PartnerBundesland",p."PartnerName",p."VpNr",p."countryCode", count(qse."ID") as "AnzahlFaelle", ( select array_agg(distinct "QSTraeger") from QSV_VPQSTCNT where FALLZAHL=(select MAX(FALLZAHL) from QSV_VPQSTCNT where "VpNr"=p."VpNr") and "VpNr"=p."VpNr")[1] as "MAXFALLQST" from "Partner" p left outer join "QsEintrag" qse on qse."VpNr"=p."VpNr" group by p."VpNr" @DFLIST BUNDESLANDKURZ,PARTNERNAME,VPNR,STAAT_ISOA2,ANZAHL_FAELLE,MAXFALLQST,FAELLE_PRO_QST,FEHLER_NICHT_ZPV,FEHLER_STAAT,FEHLER_BUNDESLAND,FEHLER_NAME,PROP_NICHT_ZPV,PROP_STAAT,PROP_BUNDESLAND,PROP_NAME,REP_NICHT_ZPV,REP_STAAT,REP_BUNDESLAND,REP_NAME @PLIST PartnerBundesland,PartnerName,VpNr,countryCode @PTABNAME CCKFODBPARTNER @init.aexpression if (this.query.mfileid) { if (this.query.cfgname) { delete this.query.cfgname; delete this.query.sql_select; } this(); /* push on and let the built in seqtrans load the data from the managed file gotten from the query attribute */ } else { if (!this.query.cfgname) { this.errcoll.collect(null,"Neither cfgname nor mfileid given"); this(); } else { db.getDbData({ sql: "create or replace view QSV_VPQSTCNT as" +" select '' as \"SATZID\",qse.\"VpNr\",qse.\"QSTraeger\",count(qse.*) as FALLZAHL" +" from \"QsEintrag\" qse" +" group by qse.\"VpNr\",qse.\"QSTraeger\"" +" order by qse.\"VpNr\" asc, count(qse.*) desc", callback: this, /* after completion of creating the view the built in seqtrans mechanism loads */ /* the data using the query attribute */ config_name: this.query.cfgname }); } } ~query.tsteps # # 0: check init # if (this.init_done) goto record_proper # # <>: do init # qexpression this.debug = true; this.DFLIST = this.query.DFLIST; this.PTABNAME = this.query.PTABNAME; this.data_cfgname = this.query.cfgname; logger.debug("DFLIST: "+this.DFLIST); this.DFields = this.DFLIST.split(","); this.PDFLIST = "::" + this.DFields.join("::,::") + "::"; this.recstoprocess = this.inputresult.getRowCount(); this.recsprocessed = 0; this.recscreated = 0; this.duplicatevpnrs = 0; this.ppush([this.phead("STARTED"),"RECSTOPROCESS="+this.recstoprocess,"",""]); # # <>: truncate target table before loading # sql drop table if exists CCKFODBPARTNER result_varname tdres post_qexpression this.ppush([this.phead("TABLEDROPPED"),"table CCKFODBPARTNER dropped","",this.tdres]); # # <>: create table afresh # sql create table @@PTABNAME@@ ( SATZID varchar(32), VPNR varchar(16), PARTNERNAME varchar(100), BUNDESLANDKURZ varchar(4), STAAT_ISOA2 varchar(2), ANZAHL_FAELLE decimal(19), MAXFALLQST varchar(2), FAELLE_PRO_QST varchar(2048), FEHLER_NICHT_ZPV varchar(32), FEHLER_STAAT varchar(32), FEHLER_BUNDESLAND varchar(32), FEHLER_NAME varchar(32), PROP_NICHT_ZPV varchar(32), PROP_STAAT varchar(32), PROP_BUNDESLAND varchar(32), PROP_NAME varchar(32), REP_NICHT_ZPV varchar(32), REP_STAAT varchar(32), REP_BUNDESLAND varchar(32), REP_NAME varchar(32)) # # <>: init complete # qexpression this.init_done = true; # # <>: check if we have this VPNR already # record_proper: sql select @@DFLIST@@ from @@PTABNAME@@ where VPNR=::VpNr:: named_params VpNr result_varname chkres # # <>: skip this record if we have it already # if (this.chkres.getRowCount()>0) goto duplicate_vpnr # # <>: no duplicate, assign unique SATZID and get case counts broken down by QS-TRAEGER for the LE-Partner # pre_qexpression this.cdata.SATZID = aux.syncUniqueNowID(); sql select "QSTraeger" as "QST", count("QSTraeger") as "TCC" from "QsEintrag" qse where "VpNr"=::VpNr:: group by "QSTraeger" named_params VpNr cfgname @@data_cfgname@@ result_varname tccres post_qexpression if (this.tccres.getRowCount()>0) { let tcc = {}; let crow, qst, ccnt; for (let ri=0; ri>: insert into table # pre_qexpression for (let di=0; di>: insert complete # goto record_complete # # <>: log duplicate VPNR in protocol # duplicate_vpnr: qexpression this.ppush([this.phead("DUPLICATE_VPNR"), "VVPNR="+this.cdata.VpNr, "PRESENT_DATA="+aux.objTxt(this.chkres.getRowObject(0)), "NEW_NAME="+this.cdata.PartnerName]); this.duplicatevpnrs++; # # <>: record complete # record_complete: qexpression this.recsprocessed++; # # <>: check if last # if (!this.is_last_record) goto record_end # # <>: last record, finish protocol # qexpression ppush(this,[this.ppfx+"_FINISHED","RECSPROCESSED="+this.recsprocessed,"DUPLICATEVPNRS="+this.duplicatevpnrs,"RECSCREATED="+this.recscreated]); # # <>: record end # record_end: end