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

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

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

1 ответ

Решение

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

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

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

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

Другие вопросы по тегам