gpt4 book ai didi

tableau-api - Tableau MarkLogic数据建模

转载 作者:行者123 更新时间:2023-12-04 04:37:23 26 4
gpt4 key购买 nike

我正在将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>

我已经在上面的结构上创建了一个 View 。
最初,我为所有元素创建了一个 View ,但是在Tableau上,我得到了重复的值以及笛卡尔联接结果。
因此,为了解决这个问题,我使用了片段根的方法。
由于单个客户可以有多个PolicyDetails。我已经在Policy上创建了片段根目录。
类似地,单个保单的 claim ,投诉,开票,报价可以是多个,我在每个保险单上都创建了片段根。

现在,执行此操作后,它可以解决重复问题以及笛卡尔联接结果集。它为每个实体(CustomerInfo,Policy, claim ,投诉,报价,雇主,开票)提供唯一的记录集。

但是,我无法将此实体彼此关联(如在外键中)。

我创建了具有元素作用域和所有元素的以下 View 。我仅粘贴客户和政策详细信息,如果可以解决的话,其他实体也可以类似地进行管理
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")))
),
(),
()
)

像元素范围索引之类的所有前提条件都已完成。

我正在尝试使用 view:column("PolicyId", cts:element-attribute-reference(xs:QName("Policy"), xs:QName("PolicyId")))中的 CustomerBasicInfo view关联这些实体。

如果这样做,它将在Tableau或查询控制台中显示零结果。
如果我删除它,则会提供唯一的记录,但彼此之间没有任何关系。
我要做的就是实现Policy-Customer之间的关系

请仔细阅读代码段,如果需要更多说明,请告诉我

最佳答案

笛卡尔联接结果的获取是MarkLogic中Range索引驱动的SQL View 的一个已知问题,尤其是对于上述聚合文档而言。

解决SQL View 问题的最简单方法是将您的文档拆分为单独的Policy,并嵌入客户的副本。如果客户经常有多个策略,那可能意味着大量的数据重复。

您还可以考虑将这些文档拆开,并分别存储策略和客户详细信息,以及从策略到客户的ID引用,以便以后可以在Tableau或SQL中将它们结合在一起。

MarkLogic 9附带了一项新功能,可以避免所有这些需求。它称为Template Driven Extraction。它还提供了有关数据的SQL View ,但是以不同的方式工作。它由控制 View 中行的匹配模式(称为context)驱动。在这种情况下,您可以将Policy用作context。从那里开始,您将使用相对路径在树上查找客户详细信息,然后向下获取策略详细信息。

TDE模板是使用tde:template-insert安装的。该函数的文档显示了此类TDE的简单示例:

http://docs.marklogic.com/tde:template-insert

您也可以先使用 tde:node-data-extract 来解决这个问题。

HTH!

关于tableau-api - Tableau MarkLogic数据建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39464616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com