我尝试使用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;
通过阅读文献,我不认为应该是表间隔匹配和货币汇率之间的综合关键,但是,我的数据模型仍然显示了这一点。这是对的吗?
答案 0 :(得分:2)
每当任何两个表与多个字段链接时(在您的情况下为StartDateTime和EndDateTime),您将获得一个合成密钥。
查看HenricCronström关于Qlik设计博客(https://community.qlik.com/blogs/qlikviewdesignblog/2013/04/04/intervalmatch)的文章,您可以阅读:
此外,数据模型包含一个复合键(FromDate和ToDate字段),它将自身显示为QlikView合成键。但不要害怕。这个合成密钥应该在那里;它不仅是正确的,而且在数据模型的基础上也是最优的。您无需将其删除。
所以看起来很自然你会得到那个合成密钥。