如何解决具有PIVOT优化的Tableau自定义SQL
我有2个要使用的主表:项目和详细信息
项目表:
-ident-PK,bigint
-id-uniqueidentifier类型。不是每行唯一,而是每组尝试唯一。如果一个项目总共处理了3次,则所有3个ID都相同,但每个ID都有唯一的标识
-完成日期\
-例外日期/完成日期/例外永远不会同时填充,但是如果行不起作用,则可以同时为NULL
-加载日期-创建日期
-完成日期-NULL表示项目仍待处理
-尝试
-lastupdated
-data-一个非常结构化的XML字符串。该XML字符串可以表示多种类型的数据。所以,一排可以
是:
(Get-Command Get-ChildItem -Syntax) -split '\r\n' |
where {$_} | foreach {"# $_"} | clip
另一个可能是:
Version 1:
<collection>
<row>
<field name="Product" type="text" value="ABCD" />
<field name="Name" type="text" value="Joe" />
<field name="Date" type="text" value="20200309" />
</row>
</collection>
**注意:我只加入具有相同XML字符串列名称的数据。因此,只有相同的数据“版本”
详细信息表:
-ident-PK,bigint
-attributeName-PK,vachar(100)
-attributeType
-attributeValue
-lastupdated
由于Item表中的每个XML字符串的数量和名称在每一行之间都可能有所不同,因此该XML字符串被外推到Detail表中的行中,以查看以下列:
Version 2:
<collection>
<row>
<field name="CustID" type="text" value="1234" />
<field name="FName" type="text" value="Susan" />
<field name="LName" type="text" value="Miller" />
<field name="Date" type="text" value="7/24/1972" />
<field name="Status" type="text" value="4" />
</row>
</collection>
因此先前的条目将显示为:
ID | attributeName | attributeType | attributeValue | lastupdated
我需要做的是得到
- 每个异常(项目行)的最新尝试都没有未决项目或同一Item.id的已完成项目。
- 完成-完成的结果不为空
- 待处理-IS为空
“有趣”的部分是,我还需要将详细信息PIVOT到其匹配的ident行
我有以下SQL。根据“详细信息”数据的大小,它可能很慢(超过1分钟)或很快(不到10秒,是的,我知道实际上并不快)
如何优化查询以获得最佳性能?
ID | attributeName | attributeType | attributeValue | lastupdated
1 | Product | text | ABCD | 2019-02-11 21:02:34.633
1 | Name | text | Joe | 2019-02-11 21:02:34.633
1 | Date | text | 20200309 | 2019-02-11 21:02:34.633
2 | CustID | text | 1234 | 2020-10-14 00:45:32.257
2 | FName | text | Susan | 2020-10-14 00:45:32.257
2 | LName | text | Miller | 2020-10-14 00:45:32.257
2 | Date | text | 7/24/1972 | 2020-10-14 00:45:32.257
2 | Status | text | 4 | 2020-10-14 00:45:32.257
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。