Qlik Community

New to Qlik Sense

Discussion board where members can get started with Qlik Sense.

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
MVP
MVP

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

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

4 Replies
Employee
Employee

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

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
MVP
MVP

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

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

Highlighted
Not applicable

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

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?

Employee
Employee

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

Saludos,

Creo que deberias invertir las asignaciones en el LOAD:

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

Saludos

Gabriel

Community Browser