Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Diferenciar datos de una Tabla

Buenos días, me dirijo a ustedes de nuevo ya que me ha surgido una duda con respecto a un punto en particular.

En esta ocasión tengo tres tablas de las cuales sus campos son iguales pero de diferente compañía, tengo que sacar una sola tabla de esas tres, y los ingresos(Income) de las 3 compañías deben verse como una sola tabla, si bien debería ser posible para el usuario seleccionar los ingresos de cada compañía por separado. esta ultima parte es la que no logro realizar adecuadamente,


Tengo estos datos, no se si al renombrar el id del cliente concatenado con el nombre de la compañía me podría diferenciar esa selección


Por su tiempo gracias.

Filial:

LOAD

CustID&'-'&CpnyName as CustomerID,

     KamID,

     Currency,

     IncomeTot,

     SKU,

     TypeProduct,

     Mark,

     QtyInvc,

     Unit,

     UnitMeasure,

     SkuTotWeight,

     SkuQty,

     WeightSku,

     Package,

     SkuPrice,

     TotInvc as Income,

     CpnyName

FROM

[vs_BiIncomeFILIALES.QVD]

(qvd);

join(Filial)

Idea:

LOAD

CustID&'-'&CpnyName as CustomerID,

     KamID,

    Currency,

     SKU,

     TypeProduct,

     Mark,

     QtyInvc,

     Unit,

     UnitMeasure,

     SkuTotWeight,

     SkuQty,

     WeightSku,

     Package,

     SkuPrice,

     TotInvc as Income,

     CpnyName

FROM

[vs_BiIncomeIIDEA.QVD]

(qvd);

join(Filial)

Sisana:

LOAD

CustID&'-'&CpnyName as CustomerID,

     KamID,

    Currency,

     SKU,

     TypeProduct,

     Mark,

     QtyInvc,

     Unit,

     UnitMeasure,

     SkuTotWeight,

     SkuQty,

     WeightSku,

     Package,

     SkuPrice,

     TotInvc as Income,

     CpnyName

FROM

[vs_BiIncomeSISANA.QVD]

(qvd);

1 Solution

Accepted Solutions
JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Erick,

Tienes que conseguir que las tres tablas tengan los mismos campos y con los mismos nombres.

Cuando lo logres no necesitarás ni JOINS ni CONCATENATE.

En caso de que te falte un campo en origen, puedes crearlo con NULL() o con un valor fijo 'VALOR A'

Saludos

Joaquín

View solution in original post

7 Replies
JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola Erick:

Prueba esto

Filial:

LOAD

CustID as CustomerID

    KamID,

    Currency,

    IncomeTot,

    SKU,

    TypeProduct,

    Mark,

    QtyInvc,

    Unit,

    UnitMeasure,

    SkuTotWeight,

    SkuQty,

    WeightSku,

    Package,

    SkuPrice,

    TotInvc as Income,

    CpnyName

FROM

[vs_BiIncomeFILIALES.QVD]

(qvd);

// join(Filial) //

Idea:

LOAD

CustID as CustomerID

    KamID,

    Currency,

    SKU,

    IncomeTot,

    TypeProduct,

    Mark,

    QtyInvc,

    Unit,

    UnitMeasure,

    SkuTotWeight,

    SkuQty,

    WeightSku,

    Package,

    SkuPrice,

   TotInvc as Income,

    CpnyName

FROM

[vs_BiIncomeIIDEA.QVD]

(qvd);

// join(Filial) //

Sisana:

LOAD

CustID as CustomerID

    KamID,

    Currency,

    SKU,

    IncomeTot,

    TypeProduct,

    Mark,

    QtyInvc,

    Unit,

    UnitMeasure,

    SkuTotWeight,

    SkuQty,

    WeightSku,

    Package,

    SkuPrice,

    TotInvc as Income,

    CpnyName

FROM

[vs_BiIncomeSISANA.QVD]

(qvd);

No necesitas el JOIN, tienes que lograr que la lista de campos sea la misma; tus usuarios podrán seleccionar por el campo CpnyName

Saludos

Joaquín

rubenmarin

Hola Erick, "join" sirve para agrupar registros segúnlos valores de los campos comunes, en este caso no va a encontrar ningún registro para agrupar porque el campo CpnyName será distinto en cada tabla.

Para este caso podrías usar Concatenate(), que añade registros a la tabla anterior (o a la que especifiques entre los paréntesis:

Filial:

LOAD ....

FROM [vs_BiIncomeFILIALES.QVD] (qvd);

Concatenate(Filial)

LOAD ...

FROM [vs_BiIncomeIIDEA.QVD] (qvd);

....

Me faltaría saber como es el resto del documento pero en principio no necesitarías la clave múltiple (CustID&'-'&CpnyName) porque en esta misma tabla tienes el código de cliente y la empresa, las selecciones en el campo 'CpnyName' debería diferenciarte los ingresos por compañía.

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola Erick:


Necesitas más ayuda ?


Si has resuelto tu pregunta, marca como útiles o correctas las respuestas que te hayan ayudado.


Saludos

Joaquín

Not applicable
Author

Hola joaquin, agradezco sus respuestas, aun no respondía porque me atore con algo diferente, ya intente realizar esas propuestas ciertamente es una concatenación, a lo cual me causa conflicto, ya que la tabla de Filiales en el campo CpnyName, no existe nada de datos a lo cual realice esta acción: asignar una etiqueta fija a la tabla Filial.

sera correcto?

Incomes:

LOAD Distinct

  'Filial' as Company,// asignar una etiqueta fija ya que company name no existen registros****

  num(CustID)&'-'&'Filial' AS CustomerID,

  autonumber(SKU&Mark&Package&TypeProduct&UnitMeasure) AS SkuID,

  QtyInvc * SkuTotWeight AS [Weight Total],

     KamID,

     BuID as Description ,

     IdIncome,

     //BillName,

     OrdNbr as NumOrder,

     OrdDate as OrderDate,

     InvcNbr as InvoiceNum,

     InvcDate as InvoiceDate,

     //IdBatch,

     IncDate as FechaID,

     Currency,

     IncomeTot as [Income Total],

     //SKU,

     TypeProduct as [Type of Product],

     Mark,

     QtyInvc as [Invoice Qty],

     //Unit,

     UnitMeasure,

     SkuTotWeight,

     SkuQty as [Sku Qty],

     WeightSku as [weight Sku],

     Package,

     SkuPrice as [Sku Price],

     TotInvc AS [Total Invoice]

FROM

[Proyecto\QVDs Extraccion\vs_BiIncomeFILIALES.QVD]

(qvd);

//***********************IDEA*******************************************

Concatenate(Incomes)

Idea:

LOAD

num(CustID)&'-'&CpnyName AS CustomerID,

  QtyInvc * SkuTotWeight AS [Weight Total],

     KamID,

     BuID,

     IdIncome,

     //BillName,

     OrdNbr as NumOrder,

     OrdDate as OrderDate,

     InvcNbr as InvoiceNum,

     InvcDate  as InvoiceDate,

     //IdBatch,

     IncDate as FechaID,

     Currency,

     IncomeTot as [Income Total],

     SKU AS SkuID,

     TypeProduct as [Type of Product],

     Mark,

     QtyInvc as [Invoice Qty],

     //Unit,

     UnitMeasure,

     SkuTotWeight,

     SkuQty as [Sku Qty],

     WeightSku as [weight Sku],

     Package,

     SkuPrice as [Sku Price],

     TotInvc AS [Total Invoice],

     CpnyName,

     'Idea' as Company

FROM

[Proyecto\QVDs Extraccion\vs_BiIncomeIIDEA.QVD]

(qvd);

//**************************************Sisana**************************************+

Concatenate(Incomes)

Sisana:

LOAD

num(CustID)&'-'&CpnyName AS CustomerID,

     KamID,

     BuID,

     IdIncome,

     //BillName,

     OrdNbr as NumOrder,

     OrdDate as OrderDate,

     InvcNbr as InvoiceNum,

     InvcDate as InvoiceDate,

     //IdBatch,

     IncDate as FechaID,

     Currency,

     IncomeTot as [Income Total],

     SKU AS SkuID,

     TypeProduct as [Type of Product],

     Mark,

     QtyInvc as [Invoice Qty],

     //Unit,

     UnitMeasure,

     SkuTotWeight,

     SkuQty as [Sku Qty],

     WeightSku as [weight Sku],

     Package,

     SkuPrice as [Sku Price],

     TotInvc AS [Total Invoice],

     CpnyName,

     'Sisana' as Company

    

FROM

[Proyecto\QVDs Extraccion\vs_BiIncomeSISANA.QVD]

(qvd);

//******Tabla Final de Income*****************************

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Erick,

Tienes que conseguir que las tres tablas tengan los mismos campos y con los mismos nombres.

Cuando lo logres no necesitarás ni JOINS ni CONCATENATE.

En caso de que te falte un campo en origen, puedes crearlo con NULL() o con un valor fijo 'VALOR A'

Saludos

Joaquín

Not applicable
Author

Joaquin muchas gracias por aclararme esta duda, y ya quedo; ahora me surgió una mas usando esa tabla de Incomes, con otra tabla yo tengo una de cambio de moneda, en esta ultima tengo fechas que como es obvio el monto de dolar, peso y euro son variables y cambian al día, ahora lo que quisiera hacer es, tomar la fecha mas próxima para realizar el cambio correspondiente al día que se toma el monto de Income tengo esto:


Tipos de Cambio:

LOAD fecha as FechaID,

    USD,

    MN,

    EURO

FROM

[..\..\QVDs Extraccion\Vs_TiposdeCambio.QVD]

(qvd);

esta tabla la uno a la final de incomes y en ella, tengo estas columnas

Facts:

LOAD

Distinct

Company,

     CustomerID,

     SkuID,

     [Weight Total],

     KamID,

     IdIncome,

     NumOrder,

     OrderDate,

     InvoiceNum,

     InvoiceDate,

     IDFecha,

     Currency,

     [Income Total],

     [Invoice Qty], 

     [Sku Price],

     [Total Invoice],

     FechaID,

USD,

MN,

EURO,

IF(Currency='USD',[Income Total]*USD) AS [USD To Pesos],

IF(Currency='USD',[Income Total]*1) AS [Dollars],

IF(Currency='USD',[Income Total]/USD/EURO) AS [USD To Euros],

IF(Currency='MN',[Income Total]*1) AS [Pesos],

IF(Currency='MN',[Income Total]*USD) AS [Pesos To USD],

IF(Currency='MN',[Income Total]*EURO) AS [Pesos To Euros],

IF(Currency='EURO',[Income Total]*EURO) AS [Euros To Pesos],

IF(Currency='EURO',[Income Total]/EURO/USD) AS [Euros To USD],

IF(Currency='EURO',[Income Total]*1) AS [Euros]

resident TempFacts;

DROP Table TempFacts;

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola Erick:

Abre otro hilo para esta segunda pregunta, la mayoría de nosotros solo leemos los hilos cerrados para buscar respuestas.

Saludos

Joaquín