创建视图
可以创建视图(Views),视图是基于 CQL 语句结果集的虚拟表格。视图可以组合表单来创建视图列表(View Listings)。每个视图都包含行和列,其中的字段来自研究数据库中的一个或多个实际表格。视图列表始终显示最新数据、装饰和访问相关查询的权限。每次打开视图时,Workbench 都会使用视图的 CQL 语句重新创建数据。
一些视图的示例应用场景包括:
- 限制数据访问:视图通过限制预设行和列的访问权限,为表提供了额外的安全性。
- 隐藏数据复杂性:视图可以隐藏多表连接中存在的复杂性。
- 重命名列:用户可以在视图上下文中重命名列,而不会影响基础表。
- 存储复杂查询:用户可以在视图中存储更复杂的 CQL。
- 为用户简化命令:用户可以从多个表中选择信息,而无需了解如何实际执行连接。
- 多视图功能:Workbench 支持在同一表上为不同用户创建不同的视图。
先决条件
默认情况下,具有标准 CDMS 超级用户(CDMS Super User)研究角色的用户可以执行下述操作。如果 Vault 使用自定义研究角色,则该角色必须授予以下权限:
类型 | 权限标签 | 控制 |
---|---|---|
“标准”选项卡 | 工作台选项卡 | 能够通过工作台(Workbench)选项卡访问和使用 Data Workbench 应用程序 |
功能权限 | 浏览视图 | 能够访问 Workbench 中的视图选项卡并浏览视图。能够将视图保存为检查 |
功能权限 | 创建视图 | 能够在 Workbench 中新建视图 |
功能权限 | 修改视图 | 能够编辑(修改)Workbench 中的现有视图 |
功能权限 | 删除视图 | 能够在 Workbench 中删除视图 |
如果您的“研究”包含受限数据,您必须具有“受限数据访问(Restricted Data Access)”权限才能查看该数据。
了解有关“研究角色”的更多信息。
访问视图
可以从 CDB 的视图区域访问视图。可以从导航抽屉(Navigation Drawer)(),或在选择研究(Study)后从研究页面上的研究菜单()导航到视图区域。
如何打开视图
在视图页面中,可以单击视图的标题(Title)打开视图。还可以从视图菜单打开视图:
搜索视图
可以使用标题、类别、目标、描述和来源列搜索特定视图。此搜索使用“包含(contains)”。
要进行搜索,请执行以下操作:
- 在 Workbench 中导航到研究。
-
默认情况下,Workbench 会搜索所有对象类型。可以选中并清除类型(Type)下拉列表中的复选框,以更改 Workbench 正在搜索的对象。
- 选择要搜索的列(Column)。默认值为标题(Title)。
- 输入搜索文本(Search Text)。
- 单击搜索或按 Enter 键进行搜索。
- 单击结果(Results)部分中的视图标题将其打开。
Workbench 会在搜索面板的结果部分显示搜索结果。
单击关闭(Close)()关闭搜索面板。
排序和筛选&
可以按以下各列对视图页面进行排序和筛选:
- 标题
- 类别
- 目标
- 创建日期
- 创建者
- 修改日期
- 修改者
- 上次上传
如果列已应用排序或筛选器,则 Workbench 将显示排序图标(表示升序,表示降序)和筛选器图标(filter_list)。可以在“列标题”中单击这些图标来编辑排序或筛选器。还可以对尚未具有排序和筛选功能的列进行排序和筛选。
如何排序
要对视图页面进行排序,请执行以下操作:
- 导航到研究的视图页面。
- 找到要作为排序依据的列。
- 将鼠标悬停在该列上以显示排序和筛选按钮。&
- 单击排序和筛选&(filter_list)。
- 单击以展开排序依据(Sort by)。
- 选择升序(Ascending)或降序(Descending)作为排序顺序。
如何筛选
要对视图页面进行筛选,请执行以下操作:
- 导航到研究的视图页面。
- 找到要作为排序依据的列。
- 将鼠标悬停在该列上以显示排序和筛选按钮。&
- 单击排序和筛选&(filter_list)。
- 单击以展开条件(Condition)。
- 选择一个运算符(Operator)。Workbench 使用输入的值(Value)和选择的运算符(Operator)来比较列中的值。在 CQL 参考(CQL Reference)中了解有关可用比较运算符的更多信息。
- 如果需要,请输入用于比较值的值(比较)。请注意,只能使用静态值,而不能使用函数。对于日期,请使用 YYYY-MM-DD 格式或使用日历选择器。
- 还可以通过比较进行筛选。选择运算符(Operator)后,单击比较(Compare)。然后,可以从可用列中进行选择。
- 单击确定(OK)。
如何重置筛选器
要重置(移除)列中的筛选器,请打开排序和筛选(Sort & Filter)菜单,然后单击清除(Clear)。
隐藏视图列
可以根据需要隐藏和显示列,而无需使用“隐藏列(Hide Columns)”选项将其从视图中移除。
此设置将在对象和研究 中保持,直到取消隐藏列。
CDB 用橙色虚线表示隐藏列。CDB 为每组隐藏列(彼此相邻且全部隐藏的列)显示一条虚线。
要隐藏列,请执行以下操作:
- 导航到视图。
- 将鼠标悬停在列标题上以显示排序和筛选菜单&(filter_list)。
- CDB 会隐藏该列。隐藏列由橙色虚线表示。单击取消隐藏列(Unhide Columns)以显示所有隐藏列。
显示视图的 CQL
要显示视图的 CQL,请执行以下操作:
如何创建视图
- 在 Workbench 中导航到研究。
- 从创建新的(Create New)菜单中,选择列表(Listing)。
- 将属性(Properties)从可用属性(Available Properties)拖放到已选择属性(Selected Properties),以将其添加到视图中。可以拖动一组属性,或单击展开(Expand)选择单个属性。
- 单击删除(Remove)()从视图中删除属性。
- 单击左侧列表生成器(Listing Builder)菜单中的条目(Items)。
- 将表单(Forms)从可用属性(Available Properties)拖放到已选择属性(Selected Properties),以将其添加到视图中。可以拖动整个表单,或单击展开选择该表单上的单个条目。
- 单击删除()从视图中删除条目。
- 单击左侧列表生成器菜单中的排列(Arrange)。
- 拖放属性、表单和条目对其进行重新排序。
- 单击左侧列表生成器菜单中的行(Rows)。
- 选择行结构(Row Structure):
- 按受试者(By Subject):此选项尝试在受试者的单行中显示来自多个表单的数据,独立于研究计划,并显示受试者在不同事件之间匹配的所有数据。任何选定的计划相关字段(如事件日期(Event Date)或事件名称(Event Name))在列表中都设置为空。
- 按计划(By Schedule):此选项在单独的行上显示来自不同事件的表单数据。如果与计划相关的字段是必填的,我们建议使用此选项。这是所有核心列表的默认选项。
- 单击左侧列表生成器菜单中的列(Columns)。
- 选择列结构(Column Structure):
- 宽(并排)(Wide (Side by Side)):使用此选项时,每列表示一个唯一的条目或条目属性。
- 堆叠(联合)(Stacked (Union)):使用此选项,每列可以包含多个堆叠在一起的条目或条目属性,其中用户最多可以为每列包含五(5)个条目和/或条目属性。
- 单击左侧列表生成器菜单中的别名(Aliases)。
- 为要使用非默认标题的任何列输入列别名(Column Alias)。
- 单击左侧列表生成器菜单中的排序&筛选(Sort Filter)。
- 使用排序&筛选菜单将排序顺序和筛选应用于任何列。
- 可选:单击预览(Preview)预览视图。
- 单击验证并保存(Validate and Save)。
- 输入视图的标题(Title)。请注意,此标题在研究中必须是唯一的。
- 输入简短标题。
- 从视图中选择类别(Category)。
- 可选:要创建新类别,请清除类别(Category)字段的文本并输入类别名称。如果不存在同名的类别,请按 Enter 键或从下拉列表中选择添加类别(Add Category)。
- 输入描述。
- 点击保存。Workbench 将保存视图并将其打开。
如何使用 CQL 创建视图
要创建新视图,请执行以下操作:
- 导航到要从中创建视图的列表。
- 输入标题。标题不能包含任何空格。请注意,该值在研究中必须是唯一的。
- 可选:输入简短标题。
- 可选:输入描述(Description)。
定义视图时的 CQL 限制
定义视图时,不支持以下 CQL 功能:
select *
UnPivot()
- 重复的列别名
- 投影中除
@Form.SeqNbr
之外的其他@Form
属性 - 投影中除
@ItemGroup.SeqNbr
之外的其他@ItemGroup
属性
引用视图时的 CQL 限制
在自定义列表中引用视图时,存在以下限制:
- 不支持在另一个视图内部引用视图。
- 投影或过滤器(
WHERE
子句)中不支持包含视图的@Form
和@ItemGroup
属性。 - 如果使用
On Subject ALIGN
,则视图不得使用UNALIGN
。 - 在将视图与另一个表单或视图连接时,如果使用
On Subject
,视图必须使用On Subject
。
在视图中固定列
可以在视图中固定列,这样即使向右滚动,这些列也保持可见。
要固定列,请执行以下操作:
- 导航到要修改的视图。
- 单击 Columns)。
- 选择要固定的列数。这是从左边开始的列计数,最左边的列是 1。
- 单击固定列(Pin Columns)菜单以外的区域将其关闭。
Workbench 会固定列,在最右侧固定列的右侧显示粗体边框。
如何编辑视图
如果在列表生成器中创建了视图,则可以使用列表生成器进行编辑,或通过在 CQL 编辑器中修改其 CQL 语句对其进行编辑。否则,只能编辑视图的 CQL 或其属性。
要在列表生成器中修改视图,请执行以下操作:
- 在 Workbench 中导航到研究。
- 从研究(Study)菜单或导航抽屉(Navigation Drawer)(ICON)中打开视图页面。
- 找到要编辑的视图。
- 单击视图的标题将其打开。
- 单击修改(Modify)。
- 进行更改。
- 可选:单击预览(Preview)预览视图。将在新窗口中打开视图预览。
- 单击验证并保存(Validate and Save)。
属性
要编辑视图的属性,请执行以下操作:
CQL 语句
要编辑视图的 CQL 语句,请执行以下操作:
- 导航到要编辑的视图。
- 单击 CQL 编辑器(CQL Editor)。Workbench 将在浏览器窗口的下半部分打开 CQL 编辑器。
- 对语句进行更改。有关创建 CQL 语句的详细信息,请参阅 CQL 参考。
- 单击关闭(Close)(X)关闭 CQL 编辑器。
- 在确认对话框中,单击保存。
使用另存为复制视图
可以使用“另存为”选项创建视图的副本。
要复制视图,请执行以下操作:
如何删除视图
可以删除视图。如果删除视图,则引用已删除视图的任何自定义列表或导出定义都将标记为无效。
要删除视图,请执行以下操作:
示例:两个不良事件表单的简单 CQL
如果研究使用两种不同的不良事件表单(Adverse_Event 和 Serious_Adverse_Event),则可以使用 UnionAll()
创建自定义列表,显示来自两种表单的数据。
select @HDR.Site.Number as `Site Number` , @HDR.Subject.Name as `Subject ID` , @HDR.Event.Name as `Event Name` , AETERM as AE_1 , AESEV as AE_2 , AESDTC as AE_3 from Adverse_Event as AE, (select distinct @HDR.Subject.Name as SubjNamne, @Form.SeqNbr as AEID, AETERM) from AE3001_LV1 WHERE (@Form.Status = 'submitted__v' or @HDR.Event.Status IN ('did_not_occur__v')) AND AETERM is not NULL) as AE union all select @HDR.Site.Number as `Site Number` , @HDR.Subject.Name as `Subject ID` , @HDR.Event.Name as `Event Name` , AETERM as AE_1 , AESEV as AE_2 , AESDTC as AE_3 from Adverse_Event as SAE, (select distinct @HDR.Subject.Name as SubjNamne, @Form.SeqNbr as AEID, AETERM) from AE3001_LV1 WHERE (@Form.Status = 'submitted__v' or @HDR.Event.Status IN ('did_not_occur__v')) AND AETERM is not NULL) as SAE
但是,这是一个复杂的 CQL 语句,用户可能难以使用。可以基于此列表(View_AE)创建一个视图,然后修改引用该视图作为源的自定义列表,而不是两个表单。这大大缩短了 CQL 语句。
View_AE CQL:
select @HDR.Site.Number as `Site Number` , @HDR.Subject.Name as `Subject ID` , @HDR.Event.Name as `Event Name` , AETERM as AE_1 , AESEV as AE_2 , AESDTC as AE_3 from Adverse_Event as AE, WHERE (@Form.Status = 'submitted__v' or @HDR.Event.Status IN ('did_not_occur__v') union all select @HDR.Site.Number as `Site Number` , @HDR.Subject.Name as `Subject ID` , @HDR.Event.Name as `Event Name` , AETERM as AE_1 , AESEV as AE_2 , AESDTC as AE_3 from Adverse_Event as SAE, WHERE (@Form.Status = 'submitted__v' or @HDR.Event.Status IN ('did_not_occur__v')
参考View_AE的自定义列表:
select V_AE.`Site Number` , V_AE.`Subject ID` , V_AE.`Event Name` , V_AE.`AE_1` , V_AE.`AE_2` , V_AE.`AE_3` from View_AE as V_AE, (select distinct @HDR.Subject.Name as `Subject Name`, @Form.SeqNbr as AEID, AETERM from AE3001_LV1 WHERE (@Form.Status = 'submitted__v' or @HDR.Event.Status IN ('did_not_occur__v')) AND AETERM is not NULL) as AE WHERE V_AE.@HDR.Subject.Name = AE.@HDR.Subject.Name