在没有合成密钥的情况下使用 Intervalmatch
Using Intervalmatch without a synthetic key
我正在尝试使用 IntervalMatch
函数将下面的两个 table 连接在一起
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;
通过阅读文献,我认为 table 间隔匹配和汇率之间不应该是合成键,但是,我的数据模型仍然显示这一点。这是正确的吗?
每当任何两个表与一个以上的字段(在您的例子中是 StartDateTime 和 EndDateTime)链接时,您都会得到一个合成键。
查看 Qlik 设计博客 (https://community.qlik.com/blogs/qlikviewdesignblog/2013/04/04/intervalmatch) 上 Henric Cronström 的文章,您可以读到:
Further, the data model contains a composite key (the FromDate and ToDate fields) which will manifest itself as a QlikView synthetic key. But have no fear. This synthetic key should be there; not only is it correct, but it is also optimal given the data model. You do not need to remove it.
所以你得到那个合成密钥似乎很自然。
我正在尝试使用 IntervalMatch
函数将下面的两个 table 连接在一起
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;
通过阅读文献,我认为 table 间隔匹配和汇率之间不应该是合成键,但是,我的数据模型仍然显示这一点。这是正确的吗?
每当任何两个表与一个以上的字段(在您的例子中是 StartDateTime 和 EndDateTime)链接时,您都会得到一个合成键。
查看 Qlik 设计博客 (https://community.qlik.com/blogs/qlikviewdesignblog/2013/04/04/intervalmatch) 上 Henric Cronström 的文章,您可以读到:
Further, the data model contains a composite key (the FromDate and ToDate fields) which will manifest itself as a QlikView synthetic key. But have no fear. This synthetic key should be there; not only is it correct, but it is also optimal given the data model. You do not need to remove it.
所以你得到那个合成密钥似乎很自然。