2016-09-30 54 views
1

我試圖用IntervalMatch功能的加入兩個表一起下方使用Intervalmatch沒有合成關鍵

InvoiceData: 
    load Supplier 
    , SupplierName  
    , SupplierValue 
    , Invoice 
    , InvoiceDate 
    , DueDate 
    , OrigInvValue  
    , OrigDiscValue 
    , PaymentReference  
    , PaymentNumber 
    , PostValue 
    , Value 
    , MthInvBal1 
    , MthInvBal2 
    , MthInvBal3 
    , Currency  
    , ConvRate 
    , DatabaseName&'.'&Supplier&'.'&Invoice as SupplierInvoice 
    , DatabaseName as Company 
    ; 

    SQL Select ****; 

CurrencyRates: 
Load date(floor([StartDateTime])) as [StartDate] 
    ,date(floor([EndDateTime])) as [EndDate] 
    ,[Currency] as BaseCurrency 
    ,[CADDivision] 
    ,[CHFDivision] 
    ,[EURDivision] 
    ,[GBPDivision] 
    ,[JPYDivision] 
    ,[USDDivision] 
    ,[CADMultiply] 
    ,[CHFMultiply] 
    ,[EURMultiply] 
    ,[GBPMultiply] 
    ,[JPYMultiply] 
    ,[USDMultiply]; 
SQL SELECT [CR].[StartDateTime] 
    , [CR].[EndDateTime] 
    , [CR].[Currency] 
    , [CR].[CADDivision] 
    , [CR].[CHFDivision] 
    , [CR].[EURDivision] 
    , [CR].[GBPDivision] 
    , [CR].[JPYDivision] 
    , [CR].[USDDivision] 
    , [CR].[CADMultiply] 
    , [CR].[CHFMultiply] 
    , [CR].[EURMultiply] 
    , [CR].[GBPMultiply] 
    , [CR].[JPYMultiply] 
    , [CR].[USDMultiply] 
FROM [Lookups].[CurrencyRates] [CR]; 

IntervalMatch: 
IntervalMatch (InvoiceDate) 
Load distinct [StartDate],[EndDate] Resident CurrencyRates; 

從閱讀文獻,我不認爲應該是表之間的合成關鍵區間匹配和貨幣匯率,但是,我的數據模型仍然顯示這一點。它是否正確?

data model

回答

2

你得到合成關鍵每次任意兩個表由多個字段鏈接(在你的情況的startDateTime和EndDateTime)。

看着從HenricCronström上Qlik設計博客(https://community.qlik.com/blogs/qlikviewdesignblog/2013/04/04/intervalmatch)的文章中,你可以讀到:

此外,數據模型包含一個複合鍵(沒有fromdate和todate域)將自身表現爲一個QlikView合成密鑰。但不要害怕。這個合成密鑰應該在那裏;不僅它是正確的,而且它在給定數據模型的情況下也是最優的。你不需要刪除它。

所以看起來很自然,你會得到這個合成密鑰。

+0

完美,以前沒有這個鏈接,但基於它的東西沒有解釋鏈接 –

相關問題