
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Working with QVD files to generate odag aplications based on date filters
Hi everybody,
I´m a new member here and I really need help. I´ve create apps to generate ODAG visualizations. This moment I have 2 apps: Consolidate.qvf and Details.qvf. Consolidate is the base app and Details is the app which contains the odag generator script. The client has on his data base, some QVD files from dezember/2015 to august/2018. All these files have informations about the month sales. They are like this: 201807_MARGIN_DAY.QVD
When I use the date filter on the Consolidate app, the odag generator script should select the file on the directory corresponding to the date and create the odag aplication, but instead, the odag generator script on Consolidate looks for the date selected in all files and this takes to much time to finish.
Is there anyway to do that without looking for the informations in all files? I mean, if I choose the date: 07/31/2018 using the date filter, the odag generator script should look for the information on the QVD file corresponding to the right date (201807_MARGIN_DAY.QVD) instead of all the QVD´s inside the directory. I´ve already tried many ways to do that but without successful.
Could you help me guys?
Thank you...

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes - the flexibility that you can write the generator script any way you want makes this possible. Could you please share your load script - then it is possible for us to help you.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Petter good morning,
This the Details.qvf load script to generate odag:
SUB ExtendWhere(Name, ValVarName)
LET T = Name & '_COLNAME';
TRACE $(T);
LET ColName = $(T);
LET Values = $(ValVarName);
IF len(Values) > 0 THEN
IF len(WHERE_PART) > 0 THEN
LET WHERE_PART = '$(WHERE_PART) AND Match($(ColName), $(Values) )';
ELSE
LET WHERE_PART = ' WHERE Match($(ColName), $(Values) )';
ENDIF
ENDIF
END SUB;
SUB ExtendWhere2(Name, ValVarName)
LET T = Name & '_COLNAME';
TRACE $(T);
LET ColName = $(T);
LET Values = $(ValVarName);
IF len(Values) > 0 THEN
IF len(WHERE_PART2) > 0 THEN
LET WHERE_PART2 = '$(WHERE_PART2) AND Match($(ColName), $(Values) )';
ELSE
LET WHERE_PART2 = ' WHERE Match($(ColName), $(Values) )';
ENDIF
ENDIF
END SUB;
SUB ExtendWhere3(Name, ValVarName)
LET T = Name & '_COLNAME';
TRACE $(T);
LET ColName = $(T);
LET Values = $(ValVarName);
IF len(Values) > 0 THEN
IF len(WHERE_PART3) > 0 THEN
LET WHERE_PART3 = '$(WHERE_PART3) AND Match($(ColName), $(Values) )';
ELSE
LET WHERE_PART3 = ' WHERE Match($(ColName), $(Values) )';
ENDIF
ENDIF
END SUB;
SUB ExtendWhere4(Name, ValVarName)
LET T = Name & '_COLNAME';
TRACE $(T);
LET ColName = $(T);
LET Values = $(ValVarName);
IF len(Values) > 0 THEN
IF len(WHERE_PART4) > 0 THEN
LET WHERE_PART4 = '$(WHERE_PART4) AND Match($(ColName), $(Values) )';
ELSE
LET WHERE_PART4 = ' WHERE Match($(ColName), $(Values) )';
ENDIF
ENDIF
END SUB;
SUB ExtendWhere5(Name, ValVarName)
LET T = Name & '_COLNAME';
TRACE $(T);
LET ColName = $(T);
LET Values = $(ValVarName);
IF len(Values) > 0 THEN
IF len(WHERE_PART5) > 0 THEN
LET WHERE_PART5 = '$(WHERE_PART5) AND Match($(ColName), $(Values) )';
ELSE
LET WHERE_PART5 = ' WHERE Match($(ColName), $(Values) )';
ENDIF
ENDIF
END SUB;
SUB BuildValueList(VarName, TableName, ColName, QuoteChrNum)
IF $(QuoteChrNum) = 0 THEN
LET LOADEXPR = 'Concat($(ColName),' & chr(39) & ',' & chr(39) & ') AS CombinedData';
ELSE
LET CHREXPR = ' chr(' & '$(QuoteChrNum)' & ') ';
LET LOADEXPR = 'Concat( $(CHREXPR) & $(ColName) & $(CHREXPR)' & ',' & chr(39) & ',' & chr(39) & ') AS CombinedData';
ENDIF
_TempTable:
LOAD $(LOADEXPR) Resident $(TableName);
Let vNoOfRows = NoOfRows('_TempTable');
IF $(vNoOfRows)> 0 THEN
LET $(VarName) = Peek('CombinedData',0,'_TempTable');
ENDIF
drop table _TempTable;
drop table '$(TableName)';
END SUB;
SET FilialDESCRICAO = ;
OdagBinding:
LOAD * INLINE [
VAL
$(odso_FilialDESCRICAO){"quote": "", "delimiter": ""}
];
SET FilialDESCRICAO_COLNAME='FilialDESCRICAO';
CALL BuildValueList('FilialDESCRICAO', 'OdagBinding', 'VAL', 39);
SET FililESTADO = ;
OdagBinding:
LOAD * INLINE [
VAL
$(odso_FililESTADO){"quote": "", "delimiter": ""}
];
SET FililESTADO_COLNAME='FililESTADO';
CALL BuildValueList('FililESTADO', 'OdagBinding', 'VAL', 39);
SET FilialSUPERVISOR_DESCR_FILHO2 = ;
OdagBinding:
LOAD * INLINE [
VAL
$(odso_FilialSUPERVISOR_DESCR_FILHO2){"quote": "", "delimiter": ""}
];
SET FilialSUPERVISOR_DESCR_FILHO2_COLNAME='FilialSUPERVISOR_DESCR_FILHO2';
CALL BuildValueList('FilialSUPERVISOR_DESCR_FILHO2', 'OdagBinding', 'VAL', 39);
SET ProdutoNOME_NO_FILHO1 = ;
OdagBinding:
LOAD * INLINE [
VAL
$(odso_ProdutoNOME_NO_FILHO1){"quote": "", "delimiter": ""}
];
SET ProdutoNOME_NO_FILHO1_COLNAME='ProdutoNOME_NO_FILHO1';
CALL BuildValueList('ProdutoNOME_NO_FILHO1', 'OdagBinding', 'VAL', 39);
SET ProdutoNOME_NO_FILHO2 = ;
SET ProdutoNOME_NO_FILHO2 = $(odso_ProdutoNOME_NO_FILHO2);
SET ProdutoNOME_NO_FILHO2_COLNAME='ProdutoNOME_NO_FILHO2';
SET ProdutoNOME_NO_FILHO2 = ;
OdagBinding:
LOAD * INLINE [
VAL
$(odso_ProdutoNOME_NO_FILHO2){"quote": "", "delimiter": ""}
];
SET ProdutoNOME_NO_FILHO2_COLNAME='ProdutoNOME_NO_FILHO2';
CALL BuildValueList('ProdutoNOME_NO_FILHO2', 'OdagBinding', 'VAL', 39);
SET %DataID = ;
OdagBinding:
LOAD * INLINE [
VAL
$(odso_%DataID){"quote": "", "delimiter": ""}
];
SET %DataID_COLNAME='%DataID';
CALL BuildValueList('%DataID', 'OdagBinding', 'VAL', 39);
SET arquivo = ;
OdagBinding:
LOAD * INLINE [
VAL
$(odso_arquivo){"quote": "", "delimiter": ""}
];
SET arquivo_COLNAME='arquivo';
CALL BuildValueList('arquivo', 'OdagBinding', 'VAL', 39);
SET WHERE_PART = '';
SET WHERE_PART2 = '';
SET WHERE_PART3 = '';
SET WHERE_PART4 = '';
SET WHERE_PART5 = '';
SUB ExtendQVDWhere(Name, ValVarName)
LET T = Name & '_COLNAME';
LET ColName = $(T);
LET Values = $(ValVarName);
IF (len(Values) > 0) THEN
IF len(WHERE_PART) > 0 THEN
LET WHERE_PART = '$(WHERE_PART) AND mixmatch([$(ColName)],$(Values) )';
ELSE
LET WHERE_PART = 'WHERE mixmatch([$(ColName)],$(Values))';
ENDIF
ENDIF
END SUB;
SUB ExtendQVDWhere2(Name, ValVarName)
LET T = Name & '_COLNAME';
LET ColName = $(T);
LET Values = $(ValVarName);
IF (len(Values) > 0) THEN
IF len(WHERE_PART2) > 0 THEN
LET WHERE_PART2 = '$(WHERE_PART2) AND mixmatch([$(ColName)],$(Values) )';
ELSE
LET WHERE_PART2 = 'WHERE mixmatch([$(ColName)],$(Values))';
ENDIF
ENDIF
END SUB;
SUB ExtendQVDWhere3(Name, ValVarName)
LET T = Name & '_COLNAME';
LET ColName = $(T);
LET Values = $(ValVarName);
IF (len(Values) > 0) THEN
IF len(WHERE_PART3) > 0 THEN
LET WHERE_PART3 = '$(WHERE_PART3) AND mixmatch([$(ColName)],$(Values) )';
ELSE
LET WHERE_PART3 = 'WHERE mixmatch([$(ColName)],$(Values))';
ENDIF
ENDIF
END SUB;
SUB ExtendQVDWhere4(Name, ValVarName)
LET T = Name & '_COLNAME';
LET ColName = $(T);
LET Values = $(ValVarName);
IF (len(Values) > 0) THEN
IF len(WHERE_PART4) > 0 THEN
LET WHERE_PART4 = '$(WHERE_PART4) AND mixmatch([$(ColName)],$(Values) )';
ELSE
LET WHERE_PART4 = 'WHERE mixmatch([$(ColName)],$(Values))';
ENDIF
ENDIF
END SUB;
SUB ExtendQVDWhere5(Name, ValVarName)
LET T = Name & '_COLNAME';
LET ColName = $(T);
LET Values = $(ValVarName);
IF (len(Values) > 0) THEN
IF len(WHERE_PART5) > 0 THEN
LET WHERE_PART5 = '$(WHERE_PART5) AND mixmatch([$(ColName)],$(Values) )';
ELSE
LET WHERE_PART5 = 'WHERE mixmatch([$(ColName)],$(Values))';
ENDIF
ENDIF
END SUB;
FOR EACH fldname IN 'FilialDESCRICAO', 'FililESTADO', 'FilialSUPERVISOR_DESCR_FILHO2'
LET vallist = $(fldname);
IF (IsNull(vallist)) THEN
LET vallist = '';
ENDIF
IF len(vallist) > 0 THEN
CALL ExtendQVDWhere('$(fldname)','vallist');
ENDIF
NEXT fldname
TRACE Generated WHERE clause: ;
TRACE $(WHERE_PART);
FOR EACH fldname IN 'ProdutoNOME_NO_FILHO1', 'ProdutoNOME_NO_FILHO2'
LET vallist = $(fldname);
IF (IsNull(vallist)) THEN
LET vallist = '';
ENDIF
IF len(vallist) > 0 THEN
CALL ExtendQVDWhere2('$(fldname)','vallist');
ENDIF
NEXT fldname
TRACE Generated WHERE clause: ;
TRACE $(WHERE_PART2);
FOR EACH fldname IN '%DataID'
LET vallist = ($(fldname));
IF (IsNull(vallist)) THEN
LET vallist = '';
ENDIF
IF len(vallist) > 0 THEN
CALL ExtendQVDWhere3('$(fldname)','vallist');
ENDIF
NEXT fldname
TRACE Generated WHERE clause: ;
TRACE $(WHERE_PART3);
FOR EACH fldname IN 'arquivo'
LET vallist = $(fldname);
vArq=vallist;
vPath='lib://MARGEM (dpsp_qlikview.user)/'&$(vArq);
MARGEM:
Load
%ProdutoID,
%FilialID,
%DataID,
SUM(QTD) AS QTD,
SUM(VENDA) AS VENDA
FROM [lib://MARGEM (dpsp_qlikview.user)/2018*_MARGEM_DAY.QVD]
//[lib://MARGEM (dpsp_qlikview.user)/$(vArq)]
(qvd)
$(WHERE_PART3)
Group By
%ProdutoID,
%FilialID,
%DataID;
NEXT fldname
TRACE Generated WHERE clause: ;
TRACE $(WHERE_PART5);
//LOADING TABLES
FILIAL:
LOAD
%FilialID,
FilialBUSINESS_UNIT,
FilialLOCATION,
FilialTIPO,
FilialREDE,
FilialREDE2,
FilialMATURIDADE2,
FilialMATURIDADE,
FilialMESMAS_LOJAS,
FilialMESMAS_LOJAS2,
FilialBUSINESS_UNIT_NOVA,
FilialBU_UNIT,
FilialTIPO_DE_FILIAL,
FilialTIPO_DE_FILIAL_ANTES,
FilialDESCR_CURTA_TIPO_FILIAL,
FilialCALENDARIO,
FilialDPSP_PRV_RDF_FLG,
FilialDESCRICAO,
FilialDT_ABERT_COML_DSP3,
FilialDT_ABERT_COML_DSP2,
FilialDT_ENCERR_COML_DSP2,
FilialBUS_STATUS_DSP_ABERTURA,
FilialBUS_STATUS_DSP,
FilialDT_ABE_FISC_DSP,
FilialDT_ENCER_FISC_DSP,
FilialDT_ABERT_COML_DSP,
FilialDT_ENCERR_COML_DSP,
FilialRESSU_ITVD_CTL_DSP,
FilialHOLIDAY_LIST_ID,
FililESTADO,
FilialDESCRICAO_CURTA,
FilialCIDADE,
FilialBAIRRO,
FilialCD_SUPRIDOR,
FilialLEAD_TIME_DSP,
FilialREDE3,
FilialAREA_DE_VENDAS,
FilialGRUPO_DE_UNIDADE,
Filial_REGIAO_IM,
FilialREGIAO_FILHO1,
FilialREGIAO_FILHO2,
FilialREGIAO_FILHO3,
FilialREGIAO_FILHO4,
FilialREGIAO_FILHO5,
FilialREGIAO_FILHO6,
FilialREGIAO_FILHO7,
FilialDESCR_REGIAO_FILHO1,
FilialDESCR_REGIAO_FILHO2,
FilialDESCR_REGIAO_FILHO3,
FilialDESCR_REGIAO_FILHO4,
FilialDESCR_REGIAO_FILHO5,
FilialDESCR_REGIAO_FILHO6,
FilialSUPERVISOR_FILHO1,
FilialSUPERVISOR_DESCR_FILHO1,
FilialSUPERVISOR_FILHO2,
FilialSUPERVISOR_DESCR_FILHO2,
FilialSUPERVISOR_FILHO3,
FilialSUPERVISOR_DESCR_FILHO3,
FilialSUPERVISOR_FILHO4,
UF,
FLAG_DIM
FROM [lib://Filial_Produto_QVD (dpsp_qlikview.user)/DIM_FILIAL.QVD]
(qvd)
//WHERE UF = 'RJ';
$(WHERE_PART);
PRODUTO:
LOAD
ProdutoCATEGORIA,
%ProdutoID,
ProdutoDSP_EXP_ITM,
//ProdutoINV_ITEM_TEMPLATE,
ProdutoDSP_IMS_ID,
ProdutoDSP_CLASS_TERAP,
ProdutoDSP_REF_MED,
ProdutoDESCRICAO,
//ProdutoDESCRICAO_CURTA,
ProdutoITEM_ESTOQUE,
//ProdutoOPERACAO_FISCAL,
//ProdutoDESCR_OPER_FISCAL,
ProdutoSTATUS,
ProdutoDESCR_STATUS,
//ProdutoDATA_STATUS_ITEM,
//ProdutoDATA_ADICAO,
//ProdutoDATA_APROVACAO,
//ProdutoCLASS,
//ProdutoDESCR_CLASS,
//ProdutoSUBCLASS,
//ProdutoDESCR_SUBCLASS,
ProdutoTIPO_MEDICAMENTO,
ProdutoDESCR_TIPO_MEDICAMENTO,
ProdutoTIPO_MED_COMERCIAL,
ProdutoDESCR_TIPO_MED_COMERCIAL,
//ProdutoCLASSE_ABC,
//ProdutoPORTARIA,
//ProdutoDESCR_PORTARIA,
ProdutoLIBER_CNTR_DSP,
ProdutoDESCR_LIB_CNTR,
ProdutoITEM_GELAD_DSP,
//ProdutoCONTROLE_DSP,
ProdutoDESCR_CONTROLE_DSP,
//ProdutoDSP_ALIQ_INT,
ProdutoCATEGORY_ID,
ProdutoINV_PROD_FAM_CD,
ProdutoFAMILIA,
ProdutoDSP_FLG_KIT,
//ProdutoDATA_EFETIVA_ITEM,
ProdutoITEM_EFF_STATUS,
//ProdutoCLASS_PIS_DSP,
//ProdutoDESC_CLASS_PIS_DSP,
//ProdutoU_DIAS_MAIS_CA_DSP,
//ProdutoDIAS_MAIS_DSP,
//ProdutoTP_SUPRIMENTO_DSP,
//ProdutoLEAD_TIME_DSP,
ProdutoU_MRG_SEG_CAT_DSP,
ProdutoMRG_SEGUR_DSP,
//ProdutoDSP_ITM_SACOLAO,
ProdutoDSP_MIX_ID,
ProdutoFORNEC_CATEGORIA,
ProdutoCAT_CATEGORY_ID,
ProdutoCAT_CATEGORY_CD,
//ProdutoID_CONTATO_FORNEC,
//ProdutoLOC_FORNEC_CATEG,
ProdutoDIAS_MAIS_DSP_CATEG,
ProdutoU_DIAS_MAIS_ST_DSP_CATEG,
ProdutoFREQ_PEDIDO_DSP_CATEG,
ProdutoU_MRG_SEG_CAT_DSP_CATEG,
ProdutoMRG_SEGUR_DSP_CATEG,
ProdutoCOND_PAG_CATEG,
ProdutoItemReferencia,
//ProdutoALOC_EMPR_DSP,
//ProdutoNOME_COMPRADOR,
//ProdutoFONE_C0MPRADOR,
//ProdutoFAX_COMPRADOR,
ProdutoDT_CAD_CATEGORIA,
//ProdutoTIPO_COND_PAG,
//ProdutoDESCR_COND_PAG,
//ProdutoDESCR_RES_COND_PAG,
//ProdutoMOTIVO_STATUS_IT,
// ProdutoCUSTO_MEDIO,
// ProdutoICMS_ST_MEDIO,
// ProdutoCLASS_IM,
// ProdutoFLAG_PBMS,
// ProdutoDESCR_DSP_REF_MED,
// ProdutoDESCR_CLASS_TERAP,
// ProdutoDESCR_IMS_ID,
// ProdutoDESCRINV_ITEM_TEMPLATE,
// ProdutoDESCR_EXPOSICAO_ITEM,
// ProdutoDESCR_TIPO_TRATAM,
// ProdutoDESCR_MIX,
// ProdutoQMS_BASE901,
// ProdutoQMS_SP_910,
// ProdutoQMS_RJ,
// ProdutoQMS_MG,
// ProdutoQMS_BA,
ProdutoNOME_NO_FILHO1,
// ProdutoCOD_NO_FILHO1,
ProdutoNOME_NO_FILHO2,
// ProdutoCOD_NO_FILHO2,
// ProdutoNOME_NO_FILHO3,
// ProdutoCOD_NO_FILHO3,
// ProdutoNOME_NO_FILHO4,
// ProdutoCOD_NO_FILHO4,
// ProdutoNOME_NO_FILHO5,
// ProdutoCOD_NO_FILHO5,
// ProdutoNOME_NO_FILHO6,
// ProdutoCOD_NO_FILHO6,
// ProdutoNOME_NO_FILHO1_A,
// ProdutoNOME_NO_FILHO2_A,
// ProdutoNOME_NO_FILHO3_A,
// ProdutoNOME_NO_FILHO4_A,
// ProdutoNOME_NO_FILHO5_A,
// ProdutoNOME_NO_FILHO6_A,
// ProdutoFORNEC_PRINCIPAL,
// ProdutoPRC_COMPRA,
// ProdutoPRC_FABRICA,
// ProdutoPRC_MAX_CONS,
// ProdutoID_ITEM_FORNEC,
// ProdutoCOD_FORNECEDOR,
// ProdutoNOME_FORNEC_1,
// ProdutoNOME_FORNEC_2,
UN,
CX,
DPY,
//EstoqueCD,
//EstoqueLOJA,
"Custo Médio Material",
"Última Entrada com impostos",
//ProdutoFORNEC_ID_PRIORID1,
//ProdutoPRECO_COMPRA,
//ProdutoPRECO_FABRICA,
//ProdutoPMC,
//ProdutoDESC_COMPRAS,
//ProdutoDSP_PRECO_VAREJO,
//ProdutoDESCR_MULTIPLA,
ProdutoDPSP_SUBMARCA,
PRODUTOLINHA_PRODUTO,
ProdutoUNIDADE_MEDIDA,
ProdutoVALOR_MEDIDA_UNITARIO,
ProdutoID_DSP_COMERCIAL,
ProdutoID_DSP_CONCENTRACAO,
ProdutoID_DSP_MARCAPROP,
ProdutoID_DSP_MIX_GEN,
ProdutoID_DSP_TIP_EMB,
ProdutoID_DESCR_DSP_TIP_EMB,
ProdutoID_DSP_FORAPR,
ProdutoID_DESCR_DSP_FORAPR,
//ProdutoTIPO_KIT,
//QT_CX_FORNE,
//QT_DISPLAY,
ProdutoCATEGORIA_STATUS,
ProdutoCATEGORIADESCR_STATUS
FROM [lib://Filial_Produto_QVD (dpsp_qlikview.user)/DIM_PRODUTO.QVD]
(qvd)
$(WHERE_PART2);
Thank you...
