精华文章系列 DeepSee 的开发 - 第一部分 - Cube
创建一个透视表
- 在模型内容窗格中展开DiagD维度。
- 将Diagnoses拖放到行中,或者双击诊断。
- 将Patient Count(病人计数)拖放到Measure(度量)中,或双击病人数。
- 将 Avg Age(平均年龄) 拖至Measure(度量),或双击 "平均年龄"。
- 单击保存。 系统显示一个对话框,你可以指定透视表的名称。 保存透视表并给它一个名字。当你这样做时,你是在保存检索数据的基础查询,以及以你选择的方式显示数据所需的信息。你不是在保存数据。
- 对于文件夹,键入Test
- 对于透视名称,键入Patients by Diagnosis (Patients Cube)。
- 点击确定。
注意:基表是Patients,这意味着所有的度量都是关于病人的数据总结。
度量和levels
- 点击新建。
- 把Patient Count和Avg Age拖到度量区。 这个简单的透视表向我们展示了这些度量中每一项的总数值,跨越基类中的所有记录。有1000名病人,他们的平均年龄(在这个例子中)是36.59岁。
- 使用SQL 校验
select count(*) as "count" ,avg(age) as avgage from BI_Study.Patient
- 在分析器中,对前面的透视表进行如下修改。
- 在左边展开GenD,把Gender拖到行区。现在你会看到类似下面的内容。
- 使用SQL 校验
group by gender
- 展开ProfD和Profession,把Electrician拖到行中。
- 使用SQL 校验
select count(*) as "count",avg(age) as avgage from BI_Study.Patient join BI_Study.PatientDetails
on BI_Study.Patient .PatientID = BI_Study.PatientDetails.PatientID
where BI_Study.PatientDetails.profession->profession='Electrician'
维度和levels
在许多情况下,你可以交替使用维度和levels。在本节中,我们将对它们进行比较,看看它们的区别。
- 在分析器中,点击新建。
- 展开AgeD维度。你会在左边的区域看到以下内容:
AgeD定义了一个名为All Patients的特殊成员,它是一个All成员。一个All成员指的是基类的所有记录。 AgeD定义了多个levels。Age Group,Age Bucket,和Age。 当你拖放一个维度作为行(或列)使用时,系统会显示该维度中定义的第一层的所有成员。在这个例子中,第一层是Age Group。
所有成员
所有成员指的是基类的所有记录。每个维度都可以有一个All成员,但是在Patients cube中,只有一个维度有一个All成员。
本教程的这一部分演示了如何使用一个All成员。
- 点击新建。
- 展开AgeD维度。
- 把Age Group拖到行中。
- 将度量 "Patient Count"、"Avg Age "和 "Avg Test Score"拖入 "度量"。
- 单击 "设置透视表的选项 "按钮(扳手图标)。
- 在 "行选项 "区域,单击 "摘要 "复选框,在下拉列表中不选择 "总计",然后单击 "确定"。
- 然后系统会显示一个总数,如下所示。
.png)
上图所示,总数值适合于病人数,但不适合于其他度量。对于平均年龄和平均测试分数,显示一个平均值而不是总和更合适。
- 单击 "设置透视表的选项 "按钮(扳手图标)。
- 在行选项区域,清除摘要复选框,然后点击确定。
- 将AgeD下的All Patients拖到行中。然后系统在Age Group级别的成员之后显示所有病人。
上图所示,All Patients 是一个比刚刚的总数行更有用的摘要行。它显示病人数、平均年龄和平均测试分数等指标,每个指标都是所有病人的汇总。
注意: 对于平均年龄和平均测试分数,在某些情况下,你可能更喜欢在数据透视表中显示数值的平均值。例如,对于平均年龄,该摘要行将所有病人的年龄相加,然后除以1000。你可能更喜欢把这里显示的三个成员的平均年龄值相加,然后除以3。所有成员不能帮助你做到这一点;相反,你可以创建一个计算成员。
- 单击 "行 "窗格中的X按钮。这个动作会清除行的定义。
- 展开DiagD维度, 将 "诊断 "拖放到 "行 "窗格中。
- 将All Patients拖到行中,在诊断的下面。然后你会看到类似下面的内容。 正如你所看到的,你可以在Age以外的维度上使用通用命名的All Patients成员,Age是它刚好被定义的维度。
层次结构
一个维度包含一个或多个层次结构,每个层次结构可以包含多个级别。模型内容区按照层次结构指定的顺序列出各层,但(为了节省空间)不显示该cube的层次结构名称。用户可以利用层次结构的优势,钻取到更低的层次。
- 点击新建。
- 展开BirthD维度。
- 将Decade拖放到Rows中,或者双击Decade。
- 显示的度量是Count,是对病人的计数。
- 双击1950年代行(或任何其他有相对较多病人的行)。点击"<<"符号右边的任何地方。系统就会显示出该十年出生的病人,按年份(层次结构的下一个最低层次)分组。
- 再次双击某行。系统会显示该年出生的病人,按年份和季度分组。
- 再次双击某一行。系统显示该年及该季度出生的病人,按年份及月份分组。
- 再次双击某一行。系统显示该年、该月出生的病人,按实际日期分组。
- 反复点击<符号,回到透视表的原始状态。
属性
一个level可以有属性,你可以在透视表中显示这些属性。
- 点击新建。
- 展开HomeD维度。
- 展开City层面,将城市拖放到行中。
- 显示的度量是Count,是对病人的计数。
- 拖动Population到列。
- 将Principal Export拖到列中。
- 单击 "行 "窗格中的X按钮。
- 将ZIP拖到行中,显示 ‘@NOPROPERTY’,这些属性没有这个级别的值。
在透视表中,属性在几个方面与度量不同。
- 属性可以有字符串值。
- 属性只对它们被定义的那一层有值。
根据cube的定义方式,属性也可以影响它们所属层次的排序和成员名称。
列表
本教程的这一部分演示了列表,它从选定的一个或多个单元格的最低级别数据中显示选定的记录。
- 点击新建。
- 将 "Patient Count "和 "Avg Test Score "拖放到 "度量 "中。
- 展开AgeD维度,展开Age层。
- 将成员0拖到列中。这个成员指的是所有年龄小于1岁的病人。
- 把成员1拖到列中,在成员0的下面。
- 展开BirthTD维度,将Birth Time层拖放到行中。
- 点击一个单元格。例如,单击1am行中的病人计数单元格,在0下面。
- 点击 ‘显示当前所选单元格的详细列表(Listing)’ 按钮(放大镜图标) 。
- 点击 ‘显示透视表’ 按钮(三个点 + 三个横线图标) ,以原始状态重新显示透视表。 默认情况下,Patients立方体使用一个叫做Patient details的列表,其中包括PatientID、Age、Gender和其他字段,正如你刚才看到的。你也可以显示其他列表。
- 点击 ‘设置透视表的选项’ 按钮(扳手图标)。
- 在列表下拉列表中,选择 ‘Doctors Details’,然后单击确定。
- 医生详情列表显示所选病人的主治医生的信息。
- 点击 ‘显示透视表’ 按钮(放大镜图标) ,以原始状态重新显示透视表。
- 点击 ‘显示当前所选单元格的详细列表(Listing)’ 按钮 (三个点 + 三个横线图标)。即可以看到医生详情的列表。
过滤器和成员
在一个典型的透视表中,成员可以作为行、列或两者都使用。成员的另一个常见用途是使你能够过滤数据。
- 在分析器中,点击新建。
- 展开ColorD和Favorite Color,将最喜欢的颜色拖到过滤器中。
- 显示的度量是计数,是对病人的计数。分析器现在只显示最喜欢的颜色级别的一个成员。
- 点击 "行 "框中的X按钮。
- 展开AgeD,把Age Group拖到行中。
- 点击‘设置透视表选项‘按钮(扳手图标)。
- 在 "行选项 "区域,点击 "摘要 "复选框,在下拉列表中选择 "总计",然后点击确定。
- 总数行显示该列中数字的总和。
- 你可以使用任何成员作为任何透视表的过滤器,不管透视表的行(或列)使用什么。你可以使用多个成员作为过滤器,你也可以组合过滤器。
过滤器和可搜索的度量
在DeepSee中,你可以定义可搜索度量。
- 点击新建。
- 系统显示所有病人的计数。
- 点击过滤器框中的’将高级过滤器添加到表中‘选项(配置图标)。
- 点击添加条件。然后你看到这个。
- 点击Age Group,这使你能够编辑表达式的这一部分。
- 点击左边的下拉列表,向下滚动,并点击 Measures.Encounter Count。只要你这么做,表达式就会被更新。
- 点击=运算符,这使你可以编辑表达式的这一部分。
- 点击>=运算符。只要你这样做,表达式就会被更新。
- 点击0,这使你能够编辑表达式的这一部分。
- 在该字段中输入10,然后点击应用。
- 单击 "确定"。系统显示所有至少有10次就诊的病人的总计数。
- 在模型内容窗格中展开AgeD维度。
- 将Age Group拖放到行中。
- 点击‘设置透视表选项‘按钮(扳手图标)。
- 在 "行选项 "区域,单击 "摘要 "复选框,在下拉列表中不选择 "总计",然后单击 "确定"。
- 总数行显示该列中数字的总和。注意,这里的总数与前面显示的相同。