Nik*_*iya 9 marklogic tableau-api marklogic-8
我正在使用Tableau和MarkLogic.我有以下XML结构
<CustomerInformation CustomerId="1">
<CustomerBasicInformation>
<CustomerTitle></CustomerTitle>
<CustomerFirstName></CustomerFirstName>
<CustomerMiddleName></CustomerMiddleName>
<CustomerLastName></CustomerLastName>
</CustomerBasicInformation>
<CustomerEmplyomentDetails>
<CustomerEmployer>
<EmployerName IsCurrentEmployer=""></EmployerName>
<CustomerDesignation></CustomerDesignation>
<EmployerLocation></EmployerLocation>
<CustomerTenure></CustomerTenure>
</CustomerEmployer>
<CustomerEmplyomentDetails>
<PolcyDetails>
<Policy PolicyId="">
<PolicyName></PolicyName>
<PolicyType></PolicyType>
<PolicyCategory></PolicyCategory>
<QuoteNumber></QuoteNumber>
<PolicyClaimDetails>
<PolicyClaim ClaimId="">
<PolicyClaimedOn></PolicyClaimedOn>
<PolicyClaimType></PolicyClaimType>
<PolicyClaimantName></PolicyClaimantName>
</PolicyClaim>
</PolicyClaimDetails>
<PolicyComplaintDetails>
<PolicyComplaint ComplaintId="">
<PolicyComplaintStatus></PolicyComplaintStatus>
<PolicyComplaintOn></PolicyComplaintOn>
</PolicyComplaint>
</PolicyComplaintDetails>
<BillingDetails>
<Billing BillingId="">
<BillingAmount></BillingAmount>
<BillingMode></BillingMode>
</Billing>
</BillingDetails>
</Policy>
<Policy PolicyId="">
<PolicyName></PolicyName>
<PolicyType></PolicyType>
<PolicyCategory></PolicyCategory>
<QuoteNumber></QuoteNumber>
<PolicyClaimDetails>
<PolicyClaim ClaimId="">
<PolicyClaimedOn></PolicyClaimedOn>
<PolicyClaimType></PolicyClaimType>
<PolicyClaimantName></PolicyClaimantName>
</PolicyClaim>
</PolicyClaimDetails>
<PolicyComplaintDetails>
<PolicyComplaint ComplaintId="">
<PolicyComplaintStatus></PolicyComplaintStatus>
<PolicyComplaintOn></PolicyComplaintOn>
</PolicyComplaint>
</PolicyComplaintDetails>
<BillingDetails>
<Billing BillingId="">
<BillingAmount></BillingAmount>
<BillingMode></BillingMode>
</Billing>
</BillingDetails>
</Policy>
</PolcyDetails>
</CustomerInformation>
Run Code Online (Sandbox Code Playgroud)
我已经在上面的结构上创建了一个视图.最初我为所有元素创建了一个视图,但在Tableau上我得到了重复值以及笛卡尔连接结果.所以为了解决这个问题,我使用了片段根的方法.由于单个客户可以有多个PolicyDetails.我在Policy上创建了片段根目录.类似声明,投诉,计费,报价对于单个策略可以是多个,我已经在每个策略上创建了片段根.
现在执行此操作后,它解决了重复问题以及笛卡尔连接结果集.它为每个实体(CustomerInfo,Policy,Claims,Complaints,Quote,Employer,Billing)提供了唯一的记录集.
但是,我无法将这些实体相互关联(如在foreign-primary key中).
我用元素范围和所有创建了以下视图.我只粘贴客户和政策详细信息,如果这解决了其他实体可以进行类似管理
view:create(
"InsurancePOC",
"CustomerBasicInfo",
view:element-view-scope(xs:QName("CustomerInformation")),
(
view:column("CustomerId", cts:element-attribute-reference(xs:QName("CustomerInformation"), xs:QName("CustomerId"))),
view:column("PolicyId", cts:element-attribute-reference(xs:QName("Policy"), xs:QName("PolicyId"))),
view:column("QuoteNumber", cts:element-attribute-reference(xs:QName("Quote"), xs:QName("QuoteNumber"))),
view:column("ComplaintId", cts:element-attribute-reference(xs:QName("PolicyComplaint"), xs:QName("ComplaintId"))),
view:column("BillingId", cts:element-attribute-reference(xs:QName("Billing"), xs:QName("BillingId"))),:)
view:column("CustomerFirstName", cts:element-reference(xs:QName("CustomerFirstName"))),
view:column("CustomerLastName", cts:element-reference(xs:QName("CustomerLastName")))
),
(),
()
),
view:create(
"InsurancePOC",
"PolcyInfo",
view:element-view-scope(xs:QName("Policy")),
(
view:column("PolicyId", cts:element-attribute-reference(xs:QName("Policy"), xs:QName("PolicyId"))),
view:column("PolicyName", cts:element-reference(xs:QName("PolicyName"))),
view:column("PolicyType", cts:element-reference(xs:QName("PolicyType")))
),
(),
()
)
Run Code Online (Sandbox Code Playgroud)
所有先决条件,如元素范围索引和所有已完成.
我正在尝试使用view:column("PolicyId", cts:element-attribute-reference(xs:QName("Policy"), xs:QName("PolicyId")))in 来关联这些实体CustomerBasicInfo view.
如果我这样做,它在Tableau或Query控制台中显示零结果.如果我删除它,给出独特的记录,但彼此没有任何关系.我想要的只是实现Policy-Customer之间的关系
请仔细阅读代码段,如果需要更多说明,请告诉我
笛卡尔连接结果的获取是 MarkLogic 中从范围索引驱动的 SQL 视图的一个已知问题,特别是对于上面的聚合文档。
解决 SQL 视图问题的最简单方法是将文档拆分为单独的策略,并嵌入客户的副本。如果客户经常有多个保单,这可能意味着大量的数据重复。
您还可以考虑将这些文档分开,并分别存储策略和客户详细信息,以及从策略到客户的 ID 引用,以便您随后可以在 Tableau 或 SQL 中将它们连接在一起。
不过,MarkLogic 9 附带了一项新功能,可以避免这一切的需要。它称为模板驱动提取。它还提供数据的 SQL 视图,但工作方式不同。context它由控制视图中的行的匹配模式(称为 )驱动。您将在本例中Policy使用。context从那里,您可以使用相对路径在树上向上到达客户详细信息,然后向下获取保单详细信息。
TDE 模板使用安装tde:template-insert。该函数的文档显示了此类 TDE 的简单示例:
http://docs.marklogic.com/tde:template-insert
您也可以先尝试一下tde:node-data-extract,以掌握窍门。
哈!
| 归档时间: |
|
| 查看次数: |
210 次 |
| 最近记录: |