5 Replies Latest reply: Oct 13, 2013 3:21 PM by Manuel Altamirano RSS

    Modificadores de Conjuntos con filtro de otro campo

      Buenos días.

       

      Primero quiero pedir perdón por postearlo en castello esta incidencia, ya que me costaría mucho intentar explicarlo en inglés y no quedaría muy claro.

       

      El problema que planteo me ocurre a partir de una idea que tengo de poder crear una tabla de filtros de unos epigrafes (como pueden ser de una Cuenta de resultados) para que se apliquen esos filtros automaticamente según se configuren en un Excel.

       

      A partir de ahí, yo quiero crear una tabla pivotante que la dimensión sean esos epígrafes, pero que los datos se filtren cada epigrafe con el filtro que corresponda a cada fila en el Excel.

       

      Una expresion con la que estoy probando esto es:

       

      =Aggr(Sum ({<Cuenta ={$(=MaxString([Filtro]))} >} Valor), Filtro)

       

      Como veis, quiero filtrar en el campo Cuenta por el valor del campo Filtro.

       

      He probado tanto sin Aggr como sin el, así como haciendo el Aggr en vez de por Filtro, que sea por Epigrafe, pero con el mismo resultado.

       

      El resultado es que siempre valida la expresion $(=MaxString([Filtro])) a nivel general y aplica el resultado a todos los valores de la dimension epigrafe. La idea es que se calculara dicha expresion por cada valor de Epigrafe (o de Filtro), por eso el Aggr, pero el resultado ha sido el mismo.

       

      Si selecciono individualmente cada uno de los Epigrafes se calcula correctamente.

       

      En el documento tengo varias expresiones de prueba con el mismo resultado, solo funcionan cuando se seleccionan individualmente los epigrafes.

       

      Os adjunto el documento y también los dos ficheros Excel con los que estoy trabajando.

       

      La idea, en el caso de que sea posible realizar esto, es crear tantas columnas como posibles filtros de campos haya (Cuenta, Proyecto, Cliente, ....) y rellenar ese Excel y que QV lo calcule automaticamente.

       

      Muchas gracias por adelantado a los que me ofrezcan su ayuda y comentarios.

       

      Un saludo.

        • Re: Modificadores de Conjuntos con filtro de otro campo

          Lo subo por si alguien que lo vea me puede ayudar.

           

          Muchas gracias.

          • Re: Modificadores de Conjuntos con filtro de otro campo

            Lo vuelvo a subir por si alguien puede darme una idea.

             

            Muchas gracias.

             

            Un saludo.

              • Re: Modificadores de Conjuntos con filtro de otro campo
                diego GOmez

                Hola Daniel,

                 

                una opción que se me ocurre por ahora es que los filtros no sea un rango si no que todos sean ingresados, es decir para el el caso del Epigrafe prueba3 el valor sea 602 y no un rango...

                 

                de tal forma que el script hagas lo siguiente

                 

                LOAD Cuenta,

                     Fecha,

                     Valor

                FROM

                PruebaDatosSetAnalisis.xlsx

                (ooxml, embedded labels, table is Hoja1);

                 

                 

                LOAD Epigrafe,

                     Subfield(Filtro,',') as Cuenta

                FROM

                PruebaEpigrafesSetAnalysis.xlsx

                (ooxml, embedded labels, table is Hoja1);

                  • Re: Modificadores de Conjuntos con filtro de otro campo

                    Muchas gracias Diego.

                     

                    Estoy probando tu solucion, y me gusta bastante, pero no utilizada directamente como dices.

                     

                    La cuestión es que puede tener filtros complejos el campos, porque pueden ser lista de valores, rangos, mezcla de ambos e incluso filtro con comodines.

                     

                    Lo que he hecho es lo siguiente para que me funcione al menos en los tres primeros casos, pero tengo que ver si puedo hacer que funcione en el caso que algún filtro sea con comodines.

                     

                    Muchísimas gracias por tu respuesta, ya que esto me da un punto de partida para poder atacar el problema, aunque no sea la que buscaba (sigo pensando que se debería filtrar en los conjuntos de datos un campo por el valor de otro campo de manera dinámica).

                     

                    Un saludo.

                     

                    Aux_Datos:

                    LOAD Cuenta,

                         Fecha,

                         Valor

                    FROM

                    PruebaDatosSetAnalisis.xlsx

                    (ooxml, embedded labels, table is Hoja1);

                     

                     

                    Datos:

                    NoConcatenate

                    Load *

                    Resident Aux_Datos;

                     

                    Epigrafes:

                    LOAD Epigrafe,

                         Subfield(Filtro,'|') as FiltroCuenta

                    FROM

                    PruebaEpigrafesSetAnalysis.xlsx

                    (ooxml, embedded labels, table is Hoja1);

                     

                     

                    Join(Aux_Datos)

                    Load *

                    Resident Epigrafes;

                     

                     

                    Drop Table Epigrafes;

                     

                     

                    Epigrafes:

                    NoConcatenate

                    Load

                              Cuenta,

                              Epigrafe

                    Resident Aux_Datos

                    Where IsNull(FiltroCuenta) Or Cuenta = FiltroCuenta Or (Cuenta >= SubField(FiltroCuenta, '..', 1) And Cuenta <= SubField(FiltroCuenta, '..', 2));

                     

                     

                    Drop Table Aux_Datos;

                      • Re: Modificadores de Conjuntos con filtro de otro campo

                        Hola Daniel,

                         

                             yo tenía y sigo teniendo, el mismo problema que tu y tu solución me parece muy buena partiendo de sugerencia de Diego. Digo que sigo teniendo pq al igual que tu pienso que con conjuntos se debe de poder hacer y he hecho bastantes pruebas al igual que tu y creo que debe ser una cuestión de sintaxis, pero con tu solución solo faltaría la cuestión que comentas de los comodines, el hecho de que puede filtrar por todas aquellas cuentas que comiencen por ej. 601* y que supongo que llegaste a solucionar.

                        Yo lo conseguí con variables:

                        Ej:

                        Set vGastosPersonal= (Cuenta like '640*' or like '641*' or like '642*' or like '649*')

                         

                        y luego una operación de conjuntos de este tipo si funciona:

                         

                        =sum({<Cuenta = { $(#vGastosPersonal) }>} Diario.Importe )

                         

                        pero no hay forma metiendo en un campo de una tabla el valor de dicha variable y luego poder utilizarla. Si llegaste a alguna solución te lo agradecería, seguiré haciendo pruebas.

                         

                         

                        Muchas gracias y un saludo.