Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
isaiasdd
Not applicable

Usar intervalo de datas na função NetworkDays

Tenho uma tabela de feriados assim:

CodFeriadoDataInicioDataFinalDescricao
124/12/201602/01/2017Descanso Final de Ano
227/02/201702/03/2017Carnaval
320/03/201703/04/2017Férias Coletivas

Para usar na função networkdays() teria que passar data por data, existe alguma maneira de passar os períodos para a função networkdays()?

1 Solution

Accepted Solutions
mario_sergio_ti
Not applicable

Re: Usar intervalo de datas na função NetworkDays

Traduzindo para o seu modelo;

LOAD

  Codigo,DataInicio,DataFinal,Descricao,

  IterNo() as Day,

  Date( DataInicio + IterNo() - 1 ) as Date

  While DataInicio + IterNo() - 1 <= DataFinal;

Holidays:

LOAD

    Codigo,

    DataInicio,

    DataFinal,

    Descricao;

FROM Banco;

6 Replies
MCampestrini
Not applicable

Re: Usar intervalo de datas na função NetworkDays

Isaias

Para juntar as datas dos feriados, utilize a função Concat() no campo da data do feriado.

Márcio Rodrigo Campestrini
mario_sergio_ti
Not applicable

Re: Usar intervalo de datas na função NetworkDays

Amigo;

Segue: Concatenar linhas/registros via Script ou via Expressão

Mas  acho que não precisará fazer desta forma para o objetivo;

Olha a expressão:

Networkdays(data_inicial, data_final {, feriado})

Se fizer algo assim:

Networkdays([CampoDataInicial], [CampoDataFinal],[CampoListaFeriados])

mario_sergio_ti
Not applicable

Re: Usar intervalo de datas na função NetworkDays

Para gerar intervalo de datas;

Exemplo:

    LOAD

      IterNo() as Day,

      Date( StartDate + IterNo() - 1 ) as Date

      While StartDate + IterNo() - 1 <= EndDate;

 

    LOAD * INLINE

    [StartDate, EndDate

    2014-01-22, 2014-01-26

    ];

isaiasdd
Not applicable

Re: Usar intervalo de datas na função NetworkDays

Mario,

Então fiz no script gerar minhas datas, porém não funciona quando tenho mais que um registro na tabela de feriados, pois no meu script ele está sobrescrevendo a tabela.

Holidays:

LOAD

     Codigo,

     DataInicio,

     DataFinal,

     Descricao;

FROM Banco;

// para gerar as datas

LET vNroRows = NoOfRows('Holidays');

For vRow=0 To $(vNroRows)-1

     LET vDataInicio = Num(Date(Floor(Peek('DataInicio', $(vRow), 'Holidays'))));

     LET vDataFinal = Num(Date(Floor(Peek('DataFinal', $(vRow), 'Holidays'))));

     HolidayCalendar:

     LOAD

          Date($(vDataInicio) + IterNo()-1) As HolidayDate

     AUTOGENERATE 1 While $(vDataInicio) + IterNo()-1 <= $(vDataFinal)-1;

Next;

         

mario_sergio_ti
Not applicable

Re: Usar intervalo de datas na função NetworkDays

Amigo, segue lógica;

PreenximentoIntervaloDatas:

LOAD

  CodFeriado,DataInicio,DataFinal,Descricao,

  IterNo() as Day,

  Date( DataInicio + IterNo() - 1 ) as Date

  While DataInicio + IterNo() - 1 <= DataFinal;

Amostra_Feriados:

LOAD * Inline [

CodFeriado, DataInicio, DataFinal, Descricao

1, 24/12/2016, 02/01/2017, Descanso Final de Ano

2, 27/02/2017, 02/03/2017, Carnaval

3, 20/03/2017, 03/04/2017, Férias Coletivas

];

mario_sergio_ti
Not applicable

Re: Usar intervalo de datas na função NetworkDays

Traduzindo para o seu modelo;

LOAD

  Codigo,DataInicio,DataFinal,Descricao,

  IterNo() as Day,

  Date( DataInicio + IterNo() - 1 ) as Date

  While DataInicio + IterNo() - 1 <= DataFinal;

Holidays:

LOAD

    Codigo,

    DataInicio,

    DataFinal,

    Descricao;

FROM Banco;