Query(中文)
实用工具¶
查询允许您从内部或外部数据库获取信息,以及从矩阵中提取的信息,例如汇率、税率和保存在自定义表中的其他费率。要获取此信息,可以在表单中创建 SQL 查询。
查询可以是以下类型:普通、数据验证和穿透钻取。
注意:CCH Tagetik 数据模型的详细信息可在 Tagetik Data Model Repository 文档中查阅,该文档可从 CCH Tagetik 的主工具栏 > 下载
> 下载(参见CCH Tagetik 主页)。
普通查询¶
使用标准 SQL 语言定义的查询。用于从数据库中提取数据并以表格格式在表单中查看。查询生成的表格可以使用标准 Excel 功能进行编辑。
可以将单元格字段插入查询以使其参数化。这允许您筛选要提取的数据,并编写可在多个上下文中使用的查询。
示例
为从汇率表中提取数据而定义的查询:SELECT cod_valuta, cambio_medio, cambio_finale FROM dati_cambio。由于数据未按场景/期间筛选,该查询返回为所有场景/期间定义的所有汇率。
如果对于某个表单,您只想提取特定场景/期间的汇率,则必须使用单元格字段使查询参数化:SELECT cod_valuta, cambio_medio, cambio_finale FROM dati_cambio where cod_scenario = ${$Scenario.code} and cod_periodo = ${$Period.code}。
如果查询在将场景和期间作为参数的表单中运行,则表达式 ${$Scenario.code} 和 ${$Period.code} 将替换为所选值。
要使场景和/或期间值固定,必须将表达式 ${$Scenario.code} 和 ${$Period.code} 替换为写在双引号(" ")之间的所需值。
数据验证查询¶
允许您通过从预定义值列表中选择来定义单元格值的查询。此列表是与矩阵元素关联的数据验证查询的结果。数据验证查询不会出现在 Excel 工作表中。
示例
给定一个用于录入与自定义维度 1 上管理的产品相关信息的矩阵。每一行必须包含产品代码和相应的价格。为确保插入的产品是实际正在生产的产品,可以限制用户的选择,并定义从自定义维度 1 表读取数据的查询。
如果选择了启用自由文本插入,系统将禁用验证通知,用户还可以插入未包含在数据验证查询结果中的值。
可以使数据验证查询的结果依赖于表单上定义的各种类型的筛选器。查询结果依赖的筛选器数量越多,运行表单所需的时间就越长。参见数据验证查询的筛选器类型。
穿透钻取¶
允许您分析通过 ETL 导入到 CCH Tagetik 的构成某个值的数据的查询。有关在导航模式下使用查询的更多详细信息,参见穿透钻取查询。
此类型查询根据其所在单元格中定义的内容进行筛选。它可用于根据所选单元格显示矩阵中多个值的详细信息。穿透钻取查询在运行表单时不会运行,而是由用户显式运行。它们基于矩阵的某个单元格运行。这允许您利用所有矩阵筛选器,而不仅仅是选项卡筛选器和表单筛选器。
示例
假设通用保险科目已填充了从会计记录导入的值。CCH Tagetik 中仅存在合计数字,而不存在各种保险类型(例如汽车、火灾、法律)的详细信息。创建穿透钻取查询允许您查询 ETL 使用的暂存表(作为加载的中间步骤)以获取这些详细信息。
查询必须在 MAP_DATI_TRASFORMATI 表上运行,该表包含每种保险类型和每张发票的详细信息。为此,系统必须知道哪些 MAP_DATI_TRASFORMATI 字段对应于我们想要显示值的字段。结果如下:
SELECT campo1 as "GL ACCOUNT", campo2 as "ACCOUNT CODE", campo3 as "INVOICE No', campo4 as "AMOUNT" FROM MAP_DATI_TRASFORMATI where cod_mappatura='ETL_IMPORT' and cod_import='ETL_ROUTINE and campo5=${$Account.code} and campo6=${$Scenario.code}'
在示例中,值根据会计科目(对应于字段 5)和场景(对应于字段 6)进行筛选。
如果表单包含穿透钻取查询,并且为用户启用了 0002868 - Reporting .NET - Navigation - Drill-through 功能,则在以导航或数据录入模式打开表单时,将出现
按钮。此按钮允许您打开左侧的穿透钻取面板,系统在其中显示表单中存在的穿透钻取查询,按模板分组。
数据验证查询的筛选器类型¶
数据验证查询的可能筛选器类型可以在受影响于中选择,如下所示:
- 单元格筛选器
- 行/列筛选器
- 参数/选项卡筛选器/矩阵筛选器
- 参数/选项卡筛选器
单元格筛选器¶
查询会调用与行和列筛选器中存在的维度相关的单元格字段。系统会为其关联的每个可编辑单元格运行一次查询。
示例
假设我们在查询中的场景维度上定义了一个筛选器,并在矩阵中的期间维度上定义了一个筛选器,且该矩阵具有以下行筛选器和列筛选器:
在这种情况下,为了生成可选值列表,系统会运行 12 个查询,即每个场景/期间交叉点运行一个查询。
行/列筛选器¶
该查询会调用与行筛选器或列筛选器中存在的维度相关的单元格字段。系统会针对与其关联的每一行或每一列运行该查询。
示例
假设在上一个示例的矩阵中定义了一个 数据校验 查询,并且该矩阵仅按期间维度进行了筛选。在这种情况下,系统会运行四个查询,即筛选器中存在的每个元素(行或列)运行一个查询。
参数/选项卡筛选器/矩阵筛选器¶
该查询会调用与参数和选项卡筛选器或矩阵筛选器中存在的维度相关的单元格字段。系统会针对每个工作表/矩阵组合运行该查询。
参数/选项卡筛选器¶
该查询会调用与参数和选项卡筛选器中存在的维度相关的单元格字段。系统会针对每个工作表运行该查询。
数据校验属性¶
创建数据校验查询后,矩阵向导属性表中会启用 数据校验 属性。该属性允许您将校验查询链接到矩阵中定义的行或列元素,并显示以下选项:
- 查询(Query),用于指定要与所选行或列元素关联的查询标识符
- 字段(Field),用于指定由该查询生成的表中要用于填充可选元素列表的列
示例
我们创建了 PRODUCT 查询,它返回所有实际在生产的产品。要关联该查询并在列表中显示产品代码,查询(Query) 选项必须定义为 PRODUCT,字段(Field) 选项必须定义为 COD_DEST1。

在数据录入步骤中,每个与 数据校验 查询关联的单元格中都会显示以下内容:
- 一个下拉列表,用于选择要分配给单元格的值
- 该
按钮,用于通过键入 * 和 ? 从列表中的多个值中搜索要在单元格上定义的值

通过在矩阵的两行或多行(或列)上选择相同的校验查询但不同的字段,可以获得依赖单元格。在数据录入时,在第一个行的单元格上选择第一个字段中的值后,您可以在第二个行的对应单元格上仅选择第二个字段中生成查询结果中存在的组合的那些值。
如果要在同时具有数据校验查询和关联字典的单元格上启用多选,则必须在字典上配置多选。
将布局选项用于公式¶
可以定义以查询元素作为参数的 Excel 公式。例如,这对于计算查询两列之间的差值很有用。此外,通过特定的布局选项,CCH Tagetik 允许您将插入到查询右侧或左侧的公式自动复制到由同一查询生成的所有行。
示例
假设定义了一个提取平均汇率和期末汇率的查询,以及一个用于两个字段之间相减的 Excel 公式。运行查询时,该公式会复制到查询提取的所有汇率对的所有行。

用户的数据可见性设置¶
为防止未经授权访问数据,必须在角色设置阶段为每个用户定义数据可见性。这使系统能够知道在表单中运行 SQL 查询时是否应用用户权限,以及是否允许访问 ETL 模块的表。以下功能可用:
- 0003100:允许通过共享表单中包含的 SQL 查询不受限制地访问数据表。
- 0003101:允许通过临时表单中包含的 SQL 查询不受限制地访问数据表。
- 0003102:允许通过共享表单中包含的 SQL 查询访问 ETL 模块的表。
- 0003103:允许通过临时表单中包含的 SQL 查询访问与 ETL 相关的表。
注意:如果功能 0003102 和 0003103 被禁用,则当运行引用 ETL 模式表的查询时,会出现一条指示不允许访问的错误消息。