Crea un objeto de tipo contador que se puede vincular a una sentencia de bucle, como puede ser un foreach o un for.

Permite además, dividir el bucle en grupos de n iteraciones o ciclos. Dispone, además del elemento util.count.log para emitir mensajes de log con el número de iteraciones realizadas hasta el momento, el tiempo requerido para completar el ciclo o intervalo realizado, y el número de iteraciones o registros procesados por segundo.

1 util.counter

<util.counter
    step='step'
    max='max'
/>

Exceptions

either counter-step or counter-max must be > 0

Es necesario, al menos, informar uno de los dos atributos step o max.

Example

Contador de prograso con valor maximo conocido (1000) con muestreo de progreso cada 100 iteraciones.

Copy
<xsql-script>
    <body>
        <set name='maxrows'>1000</set>
        <set name='m_counter'><util.counter step='100' max='#maxrows' /></set>
        <for start='1' end='#maxrows' name='idx'>
            <do>
                 <if>
                     <expr>
                        <util.counter.count><m_counter /></util.counter.count>
                    </expr>
                    <then>
                        <println>PROGRESS - <util.counter.log><m_counter /></util.counter.log></println>
                    </then>
                 </if>
            </do>
        </for>
        
    </body>
</xsql-script>
PROGRESS -        100 row(s)  of 1000 ( 10,0 %) in [00:00:00], elapsed [00:00:00], performance [ 100000,0 row(s) / sec] ETA=[00:00:00] insert [    0] update [    0] delete [    0] errors [    0]
PROGRESS -        200 row(s)  of 1000 ( 20,0 %) in [00:00:00], elapsed [00:00:00], performance [ 100000,0 row(s) / sec] ETA=[00:00:00] insert [    0] update [    0] delete [    0] errors [    0]
PROGRESS -        300 row(s)  of 1000 ( 30,0 %) in [00:00:00], elapsed [00:00:00], performance [ 100000,0 row(s) / sec] ETA=[00:00:00] insert [    0] update [    0] delete [    0] errors [    0]
PROGRESS -        400 row(s)  of 1000 ( 40,0 %) in [00:00:00], elapsed [00:00:00], performance [ 100000,0 row(s) / sec] ETA=[00:00:00] insert [    0] update [    0] delete [    0] errors [    0]
PROGRESS -        500 row(s)  of 1000 ( 50,0 %) in [00:00:00], elapsed [00:00:00], performance [ 100000,0 row(s) / sec] ETA=[00:00:00] insert [    0] update [    0] delete [    0] errors [    0]
PROGRESS -        600 row(s)  of 1000 ( 60,0 %) in [00:00:00], elapsed [00:00:00], performance [ 100000,0 row(s) / sec] ETA=[00:00:00] insert [    0] update [    0] delete [    0] errors [    0]
PROGRESS -        700 row(s)  of 1000 ( 70,0 %) in [00:00:00], elapsed [00:00:00], performance [ 100000,0 row(s) / sec] ETA=[00:00:00] insert [    0] update [    0] delete [    0] errors [    0]
PROGRESS -        800 row(s)  of 1000 ( 80,0 %) in [00:00:00], elapsed [00:00:00], performance [ 100000,0 row(s) / sec] ETA=[00:00:00] insert [    0] update [    0] delete [    0] errors [    0]
PROGRESS -        900 row(s)  of 1000 ( 90,0 %) in [00:00:00], elapsed [00:00:00], performance [ 100000,0 row(s) / sec] ETA=[00:00:00] insert [    0] update [    0] delete [    0] errors [    0]
PROGRESS -       1000 row(s)  of 1000 (100,0 %) in [00:00:00], elapsed [00:00:00], performance [ 100000,0 row(s) / sec] END            insert [    0] update [    0] delete [    0] errors [    0]