DeepSee 的开发 - 第四部分 - 创建主题区
一个主题区是一个子立方体,可以选择覆盖项目的名称。你定义一个主题区是为了使用户能够关注较小的数据集,出于安全原因或其他原因。本章讨论了以下主题。
简介
在本教程中,我们创建了两个主题区域,按邮政编码划分患者:
- Patient Set A: 居住在邮政编码为32006, 32007, or 36711区域的患者
- Patient Set B: 居住在邮政编码为34577 or 38928区域的患者
创建主题领域
要创建主题区域,请做以下工作。
- 在模型中,点击 "新建"。
- 选中 "主题区域"。
- 对于主题区名称,键入Patient Set A
- 对于主题区的类名,输入 Tutorial.SubjectA
- 对于基础立方体,点击浏览并选择 Tutorial。
- 单击 OK。
- 在一个单独的浏览器标签或窗口中,访问分析器,然后做以下工作。
- 展开HomeD。
- 把ZIP Code放到过滤器框中。这就在数据透视表的正上方增加了一个过滤框。
- 在该过滤框中,点击搜索按钮,然后选择 32006, 32007, 和 36711。
- 然后点击'为透视表显示当前查询'按钮(笔记本带一个笔的图标)
- 系统会显示一个对话框,显示分析器所使用的MDX查询。
SELECT FROM [PPatients] %FILTER %OR({[HOMED].[H1].[ZIP CODE].&[32006],[HOMED].[H1].[ZIP CODE].&[32007],[HOMED].[H1].[ZIP CODE].&[36711]}) - 将%FILTER后面的文本复制到系统剪贴板上。
- 点击确定。
- 在模型中,点击标有Patient Set A的一行。
- 在详细信息栏中,将复制的文本粘贴到 过滤器 中。
%OR({[HOMED].[H1].[ZIP Code].&[32006],[HOMED].[H1].[ZIP Code].&[32007],[HOMED].[H1].[ZIP Code].&[36711]}) - 点击保存,然后点击确定。
- 编译该主题区。
- 对于第二个主题区,重复前面的步骤,并作如下改动。
- 对于课题区名称,键入Patient Set B
- 对于主题区的类名,键入Tutorial.SubjectB
- 对另外两个邮政编码重复前面的步骤。因此,对于Filter,使用以下内容。
%OR({[HOMED].[H1].[ZIP Code].&[34577],[HOMED].[H1].[ZIP Code].&[38928]})
检查主题领域
现在我们检查一下我们所创建的主题领域。
- 在分析器中,点击左上角立方体按钮,选择Patient Set A。
- 单击 "确定"。然后分析器显示所选主题区的内容。 注意,总的记录数没有你的Tutorial基本立方体那么高。
- 在模型内容区,展开HomeD维度,ZIP Code级别,以及City级别。都没有之前的Tutorial基本立方体数据那么多。
- 对患者组B重复前面的步骤。
- 当您展开HomeD维度、ZIP Code级别,以及City级别。也没之前的Tutorial基本立方体数据那么多。
常见的过滤器表达式
在这一节中,我们在分析器中试验常见的过滤器,看看它们对生成的查询的影响。
- 在分析器中,打开Tutorial立方体。
- 分析器把立方体和主题区都称为主题区。它们之间的正式区别只有在你创建它们时才有意义。
- 点击新建。
- 分析器显示计数(记录的计数)。
- 在添加过滤器之前,让我们看看当前的查询是如何定义的,以便我们有一个比较的基础。
- 展开ColorD和Favorite Color。
- 把Orange拖到过滤器。
- 分析器现在只使用最喜欢的颜色是Orange的患者。
- 点击‘为透视表显示当前查询’按钮(笔记本加一个笔图标)。然后系统显示以下查询。
SELECT FROM [TUTORIAL] %FILTER [ColorD].[H1].[Favourite Color].&[Orange]
%FILTER关键字限制了查询。%FILTER后面的片段是一个过滤表达式。
- 点击确定。
- 给过滤器添加另一种颜色。点击过滤器中橙色旁边的X。这样就可以删除该过滤器。
- 把 "Favourite Color "拖到过滤器中。这就在数据透视表的正上方增加了一个过滤器框。
- 在该过滤框中,点击搜索按钮(放大镜图标),然后选择橙色和紫色。
- 系统现在只使用最喜欢的颜色是橙色或最喜欢的颜色是紫色的患者(注意,计数比单独的橙色要高)。
- 再次显示查询文本。现在你应该看到以下内容。
SELECT FROM [TUTORIAL] %FILTER %OR({[COLORD].[H1].[FAVOURITE COLOR].&[Orange],[COLORD].[H1].[FAVOURITE COLOR].&[Purple]}) - 在这种情况下,过滤器的表达式如下。
%FILTER %OR({[COLORD].[H1].[FAVOURITE COLOR].&[Orange],[COLORD].[H1].[FAVOURITE COLOR].&[Purple]})%OR函数是InterSystems公司的一项优化;该函数的参数是一个集合。 这个集合被大括号{}所包围,由一个逗号分隔的元素列表组成。在这种情况下,该集合包含两个成员表达式。一个集合表达式指的是由该集合的元素所表示的所有记录。在本例中,该集合指的是所有最喜欢的颜色是橙色的患者和所有最喜欢的颜色是紫色的患者。
- 点击确定。
- 使用过滤器下拉列表,清除紫色旁边的复选框。现在分析器只使用最喜欢的颜色是橙色的患者。
- 展开AllerD和Allergies。将模具拖到过滤器,在最喜欢的颜色的下面。这个透视表只显示最喜欢的颜色是橙色和对霉菌过敏的患者。
- 再次显示查询文本。现在你应该看到以下内容。
SELECT FROM [TUTORIAL] %FILTER NONEMPTYCROSSJOIN([AllerD].[H1].[Allergies].&[mold],[COLORD].[H1].[FAVOURITE COLOR].&[Orange])
MDX函数NONEMPTYCROSSJOIN结合了两个成员,并返回结果元组。该元组只访问属于两个给定成员的记录。
- 现在你已经看到了三种最常见的过滤表达式。 当你使用一个成员表达式作为过滤器时,系统只访问属于这个成员的记录。你可以写一个成员表达式,如下所示。
[dimension name].[hierarchy name].[level name].&[member key]
或者。
[dimension name].[hierarchy name].[level name].[member name]
dimension name是一个维度的名称。 hierarchy name是一个层次结构的名称。您可以省略层次结构的名称。如果你这样做,查询会使用在这个维度中定义的具有给定名称的第一层。 level name是该层次结构中的一个层次的名称。你可以省略层次名称。如果你这样做,查询会使用在这个维度中定义的具有给定名称的第一个成员。 member key是给定层次中成员的键。这通常与成员名称相同。 member name是给定级别中成员的名称。
- 关于更多过滤规则,请看用DeepSee使用MDX和DeepSee MDX参考。