使用没有合成密钥的Intervalmatch

时间:2016-09-30 12:49:06

标签: qlikview qliksense

我尝试使用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

1 个答案:

答案 0 :(得分:2)

每当任何两个表与多个字段链接时(在您的情况下为StartDateTime和EndDateTime),您将获得一个合成密钥。

查看HenricCronström关于Qlik设计博客(https://community.qlik.com/blogs/qlikviewdesignblog/2013/04/04/intervalmatch)的文章,您可以阅读:

  

此外,数据模型包含一个复合键(FromDate和ToDate字段),它将自身显示为QlikView合成键。但不要害怕。这个合成密钥应该在那里;它不仅是正确的,而且在数据模型的基础上也是最优的。您无需将其删除。

所以看起来很自然你会得到那个合成密钥。