Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

IF (ISNULL (IE.CODE), IE.CODE, IP.Code)

Hola,       

     Espero Que Alguien Me Pueda Ayudar, Estoy Intentando Realizar la Carga de Datos en Qlik sentido la de la estafa Ayuda del ISNULL y es Muy Diferente a lo SQL Que Intento es Que Si el valor es NULO tomo el valor siguiente. 

Sentencia en SQL

     SQL ---> ISNULL (IE.Code, IP.Code) 

Intentos baño Qlick Sense

     Qlik Sense --->                1. IF (ISNULL (IE.CODE), IE.CODE, IP.Code)              

                                              2. IF (ISNULL (IE.CODE) = 0, IE.CODE, IP.Code)  

Les paso el guión   Carga de código

          LOAD"Code_ItemEntrega";

          SQL SELECT  IF (ISNULL (IE.Code), IE.Code, IP.Code)

          FROM S3NetSODA.dbo. "S3TblObj_Pedido" P   

               INNER JOIN S3NetSODA.dbo. "S3TblObj_ItemPedido" IP EN IP.Pedido = P.Code   

               INNER JOIN S3NetSODA.dbo. "S3TblObj_Periodo" Pd EN P.Prototype = Pd.Prototype Y P.Prototype = 0

                         AND (P.Fecha ENTRE Pd.Desde Y Pd.Hasta) 

           INNER JOIN S3NetSODA.dbo. "S3TblObj_EscenarioPeriodo" EP EN EP.Periodo = Pd.Code   

          LEFT JOIN S3NetSODA.dbo.ItemPedidoEntrega IE EN IE.ItemPedido = IP.Code Y IE.EscenarioPeriodo = EP.Code; 

Las Relaciones declaradas en los JOIN encuentran de Manera Correcta.   

Espero me puedan Ayudar! 

Gracias !!!

1 Solution

Accepted Solutions
Miguel_Angel_Baeyens

Hola Cinthya,

Creo que el problema está en que estás usando la función IsNull() en la sentencia SQL, y no en LOAD. Ten en cuenta que todo lo que está detrás del SQL SELECT se envía a la librería de conexión específica. Si por algún motivo IsNull() no es una función válida en tu origen de datos, entonces se produce un error. Mi recomendación sería:

Code_ItemEntrega:

LOAD IF(LEN(IE.Code) = 0, IE.Code, IP.Code) AS Campo;

SQL SELECT  IE.Code, IP.Code

FROM S3NetSODA.dbo. "S3TblObj_Pedido" P  

INNER JOIN S3NetSODA.dbo. "S3TblObj_ItemPedido" IP

           IN IP.Pedido = P.Code  

INNER JOIN S3NetSODA.dbo. "S3TblObj_Periodo" Pd

           IN P.Prototype = Pd.Prototype

           AND P.Prototype = 0

           AND (P.Fecha BETWEEN Pd.Desde AND Pd.Hasta)

INNER JOIN S3NetSODA.dbo. "S3TblObj_EscenarioPeriodo" EP EN EP.Periodo = Pd.Code

LEFT JOIN S3NetSODA.dbo.ItemPedidoEntrega IE

           IN IE.ItemPedido = IP.Code

           AND IE.EscenarioPeriodo = EP.Code;

Miguel

View solution in original post

4 Replies
Michael_Tarallo
Employee
Employee

Hola Cinthya,


Me estoy haciendo a alguien para mirar esto para usted . Estoy utilizando Google Translate - lo siento si esto no está claro


Gracias,


Mike

Regards,
Mike Tarallo
Qlik
Miguel_Angel_Baeyens

Hola Cinthya,

Creo que el problema está en que estás usando la función IsNull() en la sentencia SQL, y no en LOAD. Ten en cuenta que todo lo que está detrás del SQL SELECT se envía a la librería de conexión específica. Si por algún motivo IsNull() no es una función válida en tu origen de datos, entonces se produce un error. Mi recomendación sería:

Code_ItemEntrega:

LOAD IF(LEN(IE.Code) = 0, IE.Code, IP.Code) AS Campo;

SQL SELECT  IE.Code, IP.Code

FROM S3NetSODA.dbo. "S3TblObj_Pedido" P  

INNER JOIN S3NetSODA.dbo. "S3TblObj_ItemPedido" IP

           IN IP.Pedido = P.Code  

INNER JOIN S3NetSODA.dbo. "S3TblObj_Periodo" Pd

           IN P.Prototype = Pd.Prototype

           AND P.Prototype = 0

           AND (P.Fecha BETWEEN Pd.Desde AND Pd.Hasta)

INNER JOIN S3NetSODA.dbo. "S3TblObj_EscenarioPeriodo" EP EN EP.Periodo = Pd.Code

LEFT JOIN S3NetSODA.dbo.ItemPedidoEntrega IE

           IN IE.ItemPedido = IP.Code

           AND IE.EscenarioPeriodo = EP.Code;

Miguel

Not applicable
Author

La carga de datos termina exitosamente, sin embargo no esta remplazando el valor cuando es NULL, pareciera que lo filtra y no lo muestra, ¿Alguna opción?

GabrielAraya
Employee
Employee

Saludos,

Creo que deberias invertir las asignaciones en el LOAD:

IF(LEN(IE.Code) = 0, IP.Code, IE.Code) AS Campo

Saludos

Gabriel