Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hello Folks,
How can I update only the values from Table Cotação? I mean, I don't want to load or update any other part of my code, I just want to update the values from Table Cotação, available on Cotação Tab?
How can I do that?
Please, find my script below:
Tab Empresas
SET ThousandSep='.';
SET DecimalSep=',';
SET MoneyThousandSep='.';
SET MoneyDecimalSep=',';
SET MoneyFormat='R$ #.##0,00;-R$ #.##0,00';
SET TimeFormat='hh:mm:ss';
SET DateFormat='DD/MM/YYYY';
SET TimestampFormat='DD/MM/YYYY hh:mm:ss[.fff]';
SET FirstWeekDay=6;
SET BrokenWeeks=1;
SET ReferenceDay=0;
SET FirstMonthOfYear=1;
SET CollationLocale='pt-BR';
SET MonthNames='jan;fev;mar;abr;mai;jun;jul;ago;set;out;nov;dez';
SET LongMonthNames='janeiro;fevereiro;março;abril;maio;junho;julho;agosto;setembro;outubro;novembro;dezembro';
SET DayNames='seg;ter;qua;qui;sex;sáb;dom';
SET LongDayNames='segunda-feira;terça-feira;quarta-feira;quinta-feira;sexta-feira;sábado;domingo';
SET NomeEmpresas='AALR3', 'ABEV3', 'AFLT3', 'AGRO3', 'AHEB3', 'AHEB5', 'ALPA3', 'ALPA4', 'ALSO3', 'ALUP11', 'ALUP3', 'ALUP4', 'AMAR3', 'ANIM3', 'APER3', 'ARZZ3', 'AZEV3', 'AZEV4', 'AZUL4', 'B3SA3', 'BAHI3', 'BALM3', 'BALM4', 'BAUH4', 'BBSE3', 'BDLL4', 'BEEF3', 'BKBR3', 'BMKS3', 'BOBR4', 'BRFS3', 'BRKM3', 'BRKM5', 'BRKM6', 'CCRO3', 'CESP3', 'CESP5', 'CESP6', 'CGAS3', 'CGAS5', 'CIEL3', 'CMIG3', 'CMIG4', 'CNTO3', 'COCE5', 'COGN3', 'CPFE3', 'CVCB3', 'CYRE3', 'DMMO3', 'DOHL4', 'DTEX3', 'ECOR3', 'EGIE3', 'ELET3', 'ELET6', 'EMBR3', 'EUCA3', 'EUCA4', 'FESA3', 'FESA4', 'FLRY3', 'FRAS3', 'FRIO3', 'FRTA3', 'GGBR4', 'GNDI3', 'GOLL4', 'GRND3', 'GUAR3', 'HGTX3', 'HGTX4', 'IGTA3', 'JOPA3', 'JOPA4', 'JSLG3', 'KLBN11', 'KLBN3', 'KLBN4', 'LAME3', 'LAME4', 'LEVE3', 'LLIS3', 'LOGN3', 'LUXM3', 'LUXM4', 'MOVI3', 'MRFG3', 'MRVE3', 'OIBR3', 'OIBR4', 'PETR3', 'PETR4', 'SUZB3', 'TGMA3', 'TPIS3', 'UNIP3', 'UNIP5', 'UNIP6', 'USIM3', 'USIM5', 'USIM6', 'VALE3', 'VALE5', 'VIVA3', 'VIVT3', 'VIVT4', 'VULC3', 'VVAR11', 'VVAR3', 'VVAR4', 'WEGE3', 'WHRL3', 'WHRL4';
SET NomeBancos='BBDC4', 'BBDC3', 'BBAS3', 'ITUB4', 'ITUB3', 'ITSA3', 'ITSA4', 'BMGB4', 'BAZA3', 'BMIN3', 'BMIN4', 'BNBR3';
Empresas:
LOAD * INLINE
[
KKEY, PERI, COMP, STCK, RBVS, DDRB, RLCS, CBSV, REBR, DGCV, DGEA, PNRA, OROP, ODOP, RDEP, FINA, RFIN, DFIN, RNOP, RECE, DESP, RATP, PPIC, IRDE, PECE, RJCP, PACD, LOPP, EBIT, MEBI, ATTO, ATVC, CEEC, APFI, COAR, ESTO, ATVB, TRAR, DESA, OUTC, ARLP, APJV, AFCA, CAR1, EST1, ATB1, TRBD, DAN1, CCPR, OTNC, INVE, IMOB, INTA, DIFE, PATO, PACI, OSET, FORN, OBRF, EEFI, PCPR, DEJP, OUTR, PROV, PSAN, PNCI, EEF1, PPR1, OUT1, TRB1, AFAC, PRV1, PAC1, LCAA, PABP, PALI, CSRE, RECA, RERE, RELU, LPAC, AAPA, AACO, ORAB, AAC1, DISP, DBTC, DLQC, CAPG, LIQC, DBPL, ATCL
];
For each Ticker in $(NomeEmpresas)
DemonstrativoResultados:
LOAD
Date(@1, 'DD/MM/YYYY') & '$(Ticker)' as KKEY, // Key para Concatenação.
Date(@1, 'DD/MM/YYYY') as PERI, // Periodo.
@2 as COMP, // Empresa em questão.
'$(Ticker)' as STCK, // Atribui o Ticker da ação.
Num(@3*1000) as RBVS, // Receita Bruta de Vendas e/ou Serviços.
Num(@4*1000) as DDRB, // Deduções da Receita Bruta.
Num(@5*1000) as RLCS, // Receita Líquida de Vendas e/ou Serviços.
Num(@6*1000) as CBSV, // Custo de Bens e/ou Serviços Vendidos.
Num(@7*1000) as REBR, // Resultado Bruto.
Num(@8*1000) as DGCV, // Despesas Com Vendas.
Num(@9*1000) as DGEA, // Despesas Gerais e Administrativas.
Num(@10*1000) as PNRA, // Perdas pela Não Recuperabilidade de Ativos.
Num(@11*1000) as OROP, // Outras Receitas Operacionais.
Num(@12*1000) as ODOP, // Outras Despesas Operacionais.
Num(@13*1000) as RDEP, // Resultado da Equivalência Patrimonial.
Num(@14*1000) as FINA, // Financeiras.
Num(@15*1000) as RFIN, // Receitas Financeiras.
Num(@16*1000) as DFIN, // Despesas Financeiras.
Num(@17*1000) as RNOP, // Resultado Não Operacional.
Num(@18*1000) as RECE, // Receitas.
Num(@19*1000) as DESP, // Despesas.
Num(@20*1000) as RATP, // Resultado Antes Tributação/Participações.
Num(@21*1000) as PPIC, // Provisão para IR e Contribuição Social.
Num(@22*1000) as IRDE, // IR Diferido.
Num(@23*1000) as PECE, // Participações/Contribuições Estatutárias.
Num(@24*1000) as RJCP, // Reversão dos Juros sobre Capital Próprio.
Num(@25*1000) as PACD, // Part. de Acionistas Não Controladores DR.
Num(@26*1000) as LOPP, // Lucro/Prejuízo do Período.
Num((@5+@6+@8+@9)*1000) as EBIT, // EBIT Calculado
Num(((@5+@6+@8+@9)/@5)) as MEBI // Margem EBIT Calculado
FROM
[https://www.lellidesp.com.br/Empresas/DR/$(Ticker).csv]
(txt, utf8, no labels, delimiter is ';', msq, filters(
Remove(Row, Pos(Top, 1)),
Remove(Row, RowCnd(CellValue, 5, StrCnd(null)))
));
Join (DemonstrativoResultados)
LOAD
Date(@1, 'DD/MM/YYYY') & '$(Ticker)' as KKEY, // Key para Concatenação.
Num(@3*1000) as ATTO, // Ativo Total
Num(@4*1000) as ATVC, // Ativo Circulante
Num(@5*1000) as CEEC, // Caixa e Equivalentes de Caixa
Num(@6*1000) as APFI, // Aplicações Financeiras
Num(@7*1000) as COAR, // Contas a Receber
Num(@8*1000) as ESTO, // Estoques
Num(@9*1000) as ATVB, // Ativos Biológicos
Num(@10*1000) as TRAR, // Tributos a Recuperar
Num(@11*1000) as DESA, // Despesas Antecipadas
Num(@12*1000) as OUTC, // Outros Ativos Circulantes
Num(@13*1000) as ARLP, // Ativo Realizável a Longo Prazo
Num(@14*1000) as APJV, // Aplicações Financeiras Avaliadas a Valor Justo
Num(@15*1000) as AFCA, // Aplicações Financeiras Avaliadas ao Custo Amortizado
Num(@16*1000) as CAR1, // Contas a Receber1
Num(@17*1000) as EST1, // Estoques1
Num(@18*1000) as ATB1, // Ativos Biológicos1
Num(@19*1000) as TRBD, // Tributos Diferidos
Num(@20*1000) as DAN1, // Despesas Antecipadas1
Num(@21*1000) as CCPR, // Créditos com Partes Relacionadas
Num(@22*1000) as OTNC, // Outros Ativos Não Circulantes
Num(@23*1000) as INVE, // Investimentos
Num(@24*1000) as IMOB, // Imobilizado
Num(@25*1000) as INTA, // Intangível
Num(@26*1000) as DIFE, // Diferido
Num(@27*1000) as PATO, // Passivo Total
Num(@28*1000) as PACI, // Passivo Circulante
Num(@29*1000) as OSET, // Obrigações Sociais e Trabalhistas
Num(@30*1000) as FORN, // Fornecedores
Num(@31*1000) as OBRF, // Obrigações Fiscais
Num(@32*1000) as EEFI, // Empréstimos e Financiamentos
Num(@33*1000) as PCPR, // Passivos com Partes Relacionadas
Num(@34*1000) as DEJP, // Dividendos e JCP a Pagar
Num(@35*1000) as OUTR, // Outros
Num(@36*1000) as PROV, // Provisões
Num(@37*1000) as PSAN, // Passivos sobre Ativos Não-Correntes a Venda e Descontinuados
Num(@38*1000) as PNCI, // Passivo Não Circulante
Num(@39*1000) as EEF1, // Empréstimos e Financiamentos1
Num(@40*1000) as PPR1, // Passivos com Partes Relacionadas1
Num(@41*1000) as OUT1, // Outros1
Num(@42*1000) as TRB1, // Tributos Diferidos1
Num(@43*1000) as AFAC, // Adiantamento para Futuro Aumento Capital
Num(@44*1000) as PRV1, // Provisões1
Num(@45*1000) as PAC1, // Passivos sobre Ativos Não-Correntes a Venda e Descontinuados1
Num(@46*1000) as LCAA, // Lucros e Receitas a Apropriar
Num(@47*1000) as PABP, // Participação dos Acionistas Não Controladores as Part. de Acionistas Não Controladores BP
Num(@48*1000) as PALI, // Patrimônio Líquido
Num(@49*1000) as CSRE, // Capital Social Realizado
Num(@50*1000) as RECA, // Reservas de Capital
Num(@51*1000) as RERE, // Reservas de Reavaliação
Num(@52*1000) as RELU, // Reservas de Lucros
Num(@53*1000) as LPAC, // Lucros/Prejuízos Acumulados
Num(@54*1000) as AAPA, // Ajustes de Avaliação Patrimonial
Num(@55*1000) as AACO, // Ajustes Acumulados de Conversão
Num(@56*1000) as ORAB, // Outros Resultados Abrangentes
Num(@57*1000) as AAC1, // Adiantamento para Futuro Aumento Capital1
Num((@5+@6)*1000) as DISP, // Disponibilidade Calculado
Num((@32+@39)*1000) as DBTC, // Dívida Bruta Calculado
Num((@32+@39-@5-@6)*1000) as DLQC, // Dívida Líquida Calculada
Num((@4-@28)*1000) as CAPG, // Capital de Giro Calculado
Num((@4/@28)) as LIQC, // Liquidez Corrente Calculado
Num((@32+@39)/@48) as DBPL, // Dívida Bruta sob Patrimônio Líquido Calculado
Num((@4-@28-@39-@41-@42-@44)*1000) as ATCL // Ativo Circulante Líquido Calculado
FROM
[https://www.lellidesp.com.br/Empresas/BP/$(Ticker).csv]
(txt, utf8, no labels, delimiter is ';', msq, filters(
Remove(Row, Pos(Top, 1)),
Remove(Row, RowCnd(CellValue, 5, StrCnd(null)))
));
Empresas:
Concatenate (Empresas) LOAD
KKEY,
PERI,
COMP,
STCK,
RBVS,
DDRB,
RLCS,
CBSV,
REBR,
DGCV,
DGEA,
PNRA,
OROP,
ODOP,
RDEP,
FINA,
RFIN,
DFIN,
RNOP,
RECE,
DESP,
RATP,
PPIC,
IRDE,
PECE,
RJCP,
PACD,
LOPP,
EBIT,
MEBI,
ATTO,
ATVC,
CEEC,
APFI,
COAR,
ESTO,
ATVB,
TRAR,
DESA,
OUTC,
ARLP,
APJV,
AFCA,
CAR1,
EST1,
ATB1,
TRBD,
DAN1,
CCPR,
OTNC,
INVE,
IMOB,
INTA,
DIFE,
PATO,
PACI,
OSET,
FORN,
OBRF,
EEFI,
PCPR,
DEJP,
OUTR,
PROV,
PSAN,
PNCI,
EEF1,
PPR1,
OUT1,
TRB1,
AFAC,
PRV1,
PAC1,
LCAA,
PABP,
PALI,
CSRE,
RECA,
RERE,
RELU,
LPAC,
AAPA,
AACO,
ORAB,
AAC1,
DISP,
DBTC,
DLQC,
CAPG,
LIQC,
DBPL,
ATCL
Resident DemonstrativoResultados;
Drop Table DemonstrativoResultados;
Next Ticker
Tab Cotação
For each Ticker in $(NomeEmpresas), $(NomeBancos)
Cotação:
LOAD
Date(Date#(@1,'YYYY-MM-DD'), 'DD/MM/YYYY') & '$(Ticker)' as KKEY, // Key para Concatenação.
Date(Date#(@1,'YYYY-MM-DD'), 'DD/MM/YYYY') as DVPG, // Data a ser considerada
Date(Date#(@1,'YYYY-MM-DD'), 'DD/MM/YYYY') as DACG, // Data a ser considerada para mini-gráficos
Num(Num#(@2, '#,##0.00;-#,##0.00', '.', ','), '#.##0,00', ',', '.') as VDAA, // Valor da ação na abertura
Num(Num#(@3, '#,##0.00;-#,##0.00', '.', ','), '#.##0,00', ',', '.') as VMAA, // Valor mais alto na ação no dia
Num(Num#(@4, '#,##0.00;-#,##0.00', '.', ','), '#.##0,00', ',', '.') as VMBA, // Valor mais baixo da ação no dia
Num(Num#(@5, '#,##0.00;-#,##0.00', '.', ','), '#.##0,00', ',', '.') as VDAF, // Valor da ação no fechamento
Num(Num#(@6, '#,##0.00;-#,##0.00', '.', ','), '#.##0,00', ',', '.') as VDFA, // Valor da ação no fechamento ajustado
Num(Num#(@7, '#,##0.00;-#,##0.00', '.', ','), '#.##0,00', ',', '.') as VDAN // Volume negociado da ação
FROM
[https://query1.finance.yahoo.com/v7/finance/download/$(Ticker).SA?period1=1431043200&period2=1593907200&interval=1d&events=history] //5 Years Period
(txt, codepage is 1252, no labels, delimiter is ',', msq, filters(
Remove(Row, Pos(Top, 1)),
Remove(Row, RowCnd(CellValue, 3, StrCnd(contain, 'null')))
));
Next Ticker
MapLabels:
Mapping LOAD * Inline
[
Index, Label
BRL=X, Cotacao USD
EURBRL=X, Cotacao Euro
CL=F, Petroleo
GC=F, Ouro
SI=F, Prata
BTC-USD, BitCoin
^BVSP, Bovespa
];
For each Index in 'BRL=X', 'EURBRL=X', 'CL=F', 'GC=F', 'SI=F', 'BTC-USD', '^BVSP'
Indices:
Load
Date(Date#(@1,'YYYY-MM-DD'), 'DD/MM/YYYY') as DVPG, // Data a ser considerada
'$(Index)' as INDX, // Índice
ApplyMap('MapLabels', '$(Index)') as LABL, // New label field
ApplyMap('MapLabels', '$(Index)') as LAB2, // Label para ativo
Num#(@2, '#,##0,00;-#,##0.00', '.', ',') as VDIA, // Valor do índice na abertura
Num#(@3, '#,##0,00;-#,##0.00', '.', ',') as VMAI, // Valor mais alto do índiceno dia
Num#(@4, '#,##0,00;-#,##0.00', '.', ',') as VMBI, // Valor mais baixo do índice no dia
Num#(@5, '#,##0,00;-#,##0.00', '.', ',') as VDIF, // Valor do índice no fechamento
Num#(@6, '#,##0,00;-#,##0.00', '.', ',') as VIFA, // Valor do índice no fechamento ajustado
Num#(@7, '#,##0,00;-#,##0.00', '.', ',') as VDIN // Volume negociado do índice
FROM
[https://query1.finance.yahoo.com/v7/finance/download/$(Index)?period1=1432252800&period2=1590105600&interval=1d&events=history] //5 Years Period
(txt, codepage is 1252, no labels, delimiter is ',', msq, filters(
Remove(Row, Pos(Top, 1)),
Remove(Row, RowCnd(CellValue, 2, StrCnd(contain, 'null')))
));
Next Index
You perhaps need partial reload
Hello, thanks for your help!
To tell you the truth I've been trying using Partial Reload for a long time with no success... I'm sure I'm doing something wrong.
Check my trials:
1. To add REPLACE before all LOAD on Cotação Tab, and comment all the "unnecessary" other tabs... (No success).
2. To add ADD before all LOAD on Cotação Tab, and comment all the "unnecessary" other tabs... (No success).
3. To add REPLACE before all LOAD on Cotação Tab, (No success).
4. To add ADD before all LOAD on Cotação Tab, (No success).
And I'm clicking on File > Partial Reload to reload it.
What am I doing wrong?
Replace the table with an empty table before the loop. Then you can add inside the loop:
Replace
Cotação:
LOAD
Null() as KKEY,
Null() as DVPG,
Null() as DACG,
Null() as VDAA,
Null() as VMAA,
Null() as VMBA,
Null() as VDAF,
Null() as VDFA,
Null() as VDAN
autogenerate 0;
For each Ticker in $(NomeEmpresas), $(NomeBancos)
Add
Cotação:
LOAD
Date(Date#(@1,'YYYY-MM-DD'), 'DD/MM/YYYY') & '$(Ticker)' as KKEY, // Key para Concatenação.
Date(Date#(@1,'YYYY-MM-DD'), 'DD/MM/YYYY') as DVPG, // Data a ser considerada
Date(Date#(@1,'YYYY-MM-DD'), 'DD/MM/YYYY') as DACG, // Data a ser considerada para mini-gráficos
Num(Num#(@2, '#,##0.00;-#,##0.00', '.', ','), '#.##0,00', ',', '.') as VDAA, // Valor da ação na abertura
Num(Num#(@3, '#,##0.00;-#,##0.00', '.', ','), '#.##0,00', ',', '.') as VMAA, // Valor mais alto na ação no dia
Num(Num#(@4, '#,##0.00;-#,##0.00', '.', ','), '#.##0,00', ',', '.') as VMBA, // Valor mais baixo da ação no dia
Num(Num#(@5, '#,##0.00;-#,##0.00', '.', ','), '#.##0,00', ',', '.') as VDAF, // Valor da ação no fechamento
Num(Num#(@6, '#,##0.00;-#,##0.00', '.', ','), '#.##0,00', ',', '.') as VDFA, // Valor da ação no fechamento ajustado
Num(Num#(@7, '#,##0.00;-#,##0.00', '.', ','), '#.##0,00', ',', '.') as VDAN // Volume negociado da ação
FROM
[https://query1.finance.yahoo.com/v7/finance/download/$(Ticker).SA?period1=1431043200&period2=1593907200&interval=1d&events=history] //5 Years Period
(txt, codepage is 1252, no labels, delimiter is ',', msq, filters(
Remove(Row, Pos(Top, 1)),
Remove(Row, RowCnd(CellValue, 3, StrCnd(contain, 'null')))
));
Next Ticker
Thank you for your help.
What should I do with the rest of my code? I mean, what should I do with the rest of my tabs? Should I comment everything?
I tested your code and it worked very well, but I had to comment all the rest of my code. Is that correct?
Thanks
Your script looks something like this:
SET NomeEmpresas= ...;
SET NomeBancos= ...;
Empresas:
LOAD * INLINE [ ... ];
For each Ticker in $(NomeEmpresas)
DemonstrativoResultados:
LOAD ... FROM ...;
Join (DemonstrativoResultados)
LOAD ... FROM ...;
Empresas:
Concatenate (Empresas) LOAD ... Resident DemonstrativoResultados;
Drop Table DemonstrativoResultados;
Next Ticker
Replace
Cotação:
LOAD ... autogenerate 0;
For each Ticker in $(NomeEmpresas), $(NomeBancos)
Add
Cotação:
LOAD ... FROM ...;
Next Ticker
Also with partial loading, the entire script is executed, except for load or select statements that are not marked with replace or add.
If you perform a partial load, the table DemonstrativoResultados does not exist and will not created.
Therefore you get an error for "Join (DemonstrativoResultados)" and for "Drop Table DemonstrativoResultados;".
To prevent this, you should exclude all script areas that are not necessary for the partial loading.
To do this, you have to check in the script in which mode the script is running. This you can do with a simple trick:
TExecMode:
Load 'Full' as ExecMode
AutoGenerate 1;
TExecMode:
Replace Only
Load 'Partial' as ExecMode
AutoGenerate 1;
let vExecMode=FieldValue('ExecMode',1);
Now the variable vExecMode tells you in which mode the script is executed.
All in all:
SET NomeEmpresas= ...;
SET NomeBancos= ...;
TExecMode:
Load 'Full' as ExecMode
AutoGenerate 1;
TExecMode:
Replace Only
Load 'Partial' as ExecMode
AutoGenerate 1;
let vExecMode=FieldValue('ExecMode',1);
if '$(vExecMode)'='Full' then
Empresas:
LOAD * INLINE [ ... ];
For each Ticker in $(NomeEmpresas)
DemonstrativoResultados:
LOAD ... FROM ...;
Join (DemonstrativoResultados)
LOAD ... FROM ...;
Empresas:
Concatenate (Empresas) LOAD ... Resident DemonstrativoResultados;
Drop Table DemonstrativoResultados;
Next Ticker
end if
Replace
Cotação:
LOAD ... autogenerate 0;
For each Ticker in $(NomeEmpresas), $(NomeBancos)
Add
Cotação:
LOAD ... FROM ...;
Next Ticker
Another variant will be to set all loads, that are also required for the partial loading, at the beginning of the script. And of course the table TExecMode can also be deleted:
SET NomeEmpresas= ...;
SET NomeBancos= ...;
TExecMode:
Load 'Full' as ExecMode
AutoGenerate 1;
TExecMode:
Replace Only
Load 'Partial' as ExecMode
AutoGenerate 1;
let vExecMode=FieldValue('ExecMode',1);
drop table TExecMode;
Replace
Cotação:
LOAD ... autogenerate 0;
For each Ticker in $(NomeEmpresas), $(NomeBancos)
Add
Cotação:
LOAD ... FROM ...;
Next Ticker
if '$(vExecMode)'='Partial' then
exit script;
end if
Empresas:
LOAD * INLINE [ ... ];
For each Ticker in $(NomeEmpresas)
DemonstrativoResultados:
LOAD ... FROM ...;
Join (DemonstrativoResultados)
LOAD ... FROM ...;
Empresas:
Concatenate (Empresas) LOAD ... Resident DemonstrativoResultados;
Drop Table DemonstrativoResultados;
Next Ticker