Использование 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;

Из чтения литературы я не думаю, что должен быть синтетический ключ между совпадением интервала таблицы и курсами валют, однако моя модель данных все еще показывает это. Это верно?

модель данных


person Chris J    schedule 30.09.2016    source источник


Ответы (1)


Вы получаете синтетический ключ каждый раз, когда любые две таблицы связаны более чем с одним полем (в вашем случае StartDateTime и EndDateTime).

Глядя на статью Хенрика Кронстрёма в блоге Qlik Design (https://community.qlik.com/blogs/qlikviewdesignblog/2013/04/04/intervalmatch) вы можете прочитать это:

Кроме того, модель данных содержит составной ключ (поля FromDate и ToDate), который будет проявляться как синтетический ключ QlikView. Но не бойтесь. Этот синтетический ключ должен быть там; это не только правильно, но и оптимально с учетом модели данных. Вам не нужно удалять его.

Так что вполне естественно, что вы получите этот синтетический ключ.

person BrunoMarques    schedule 30.09.2016
comment
Отлично, раньше не было этой ссылки, но что-то основано на ней, не объясняя ссылку - person Chris J; 01.10.2016