连接父节点和子节点的 Oracle BI Publisher Excel 模板

问题描述 投票:0回答:3

我有一个项目列表的主要数据集,其中包含“项目 ID”列,以及多个子集,用于每个项目的不同信息,其中包含“项目 ID”和“值”列。数据集通过项目 ID 列连接。 我的双出版商数据模型看起来像这样

我的目标是创建下表。

我需要的桌子

当我使用 BI Publisher 的报告编辑器并应用以下步骤时;

  1. 插入表格
  2. 将项目 ID 添加为“主”数据集中的第一列。
  3. 从子数据集中添加值列。

它工作得非常好,并且匹配每个值的项目 ID 和主数据集的项目 ID。

但是我需要使用 Excel 模板,但我无法使用 Excel 模板获得相同的表格。我尝试了几个重复的部分组合,但没有一个有效。

如何将每行的子节点连接到父节点?

由于保密原因,我无法分享屏幕截图,也没有任何模板副本。

提前致谢。

excel xpath bi-publisher
3个回答
0
投票

不确定您的数据结构/XML 是如何设置的。或者为什么您无法更新数据集上的 SQL 以合并那里的数据,但这些可能会有所帮助:

选项1

<?for-each:PROJECT?>
<?xdoxslt:set_variable($_XDOCTX, 'v_PROJECT', PROJECT_ID)?>

<?for-each:DATASET_1/RECORD?> 
<?if:xdoxslt:get_variable($_XDOCTX,'v_PROJECT')=PROJECT_ID?>
<?VALUE?>
<?end if?>
<?end for-each?>

<?end for-each?>

选项2

<?for-each:PROJECT?>
<?xdoxslt:set_variable($_XDOCTX, 'v_PROJECT', PROJECT_ID)?>

<?for-each:DATASET_1/RECORD[PROJECT_ID = xdoxslt:get_variable($_XDOCTX,'v_PROJECT')]?> 
<?VALUE?>
<?end for-each?>

<?end for-each?>

0
投票

感谢您的帮助,我之前无法分享任何屏幕截图或代码,因为我的电脑中没有任何屏幕截图或代码。但我在我的电脑上安装了 BI Publisher 并尝试重新创建示例数据。

我的数据集

我正在尝试创建一个像这样的表 我要创建的表

这是我的 xdo_metadata 表的样子

XDO_?XDOFIELD2?   <?NAME?>
XDO_?XDOFIELD2?   <?TASK_COUNT?>
XDO_?XDOFIELD3?   <?TASK_COUNT?>
XDO_?XDOFIELD4?   <?TASK_COUNT?>
XDO_GROUP_?XDOG1? <xsl:for-each select=".//PROJECT">

但是它并没有像我想象的那样工作。它创建了一个如下表 第一次尝试的输出

我发现了为什么它不起作用,因为我对所有值列使用了相同的别名。

后来我尝试在字段名称之前使用父节点更改 xdo_metadata ,效果非常好;

XDO_?XDOFIELD2?   <?NAME?>
XDO_?XDOFIELD2?   <?./SET1/TASK_COUNT?>
XDO_?XDOFIELD3?   <?./SET2/TASK_COUNT?>
XDO_?XDOFIELD4?   <?./SET3/TASK_COUNT?>
XDO_GROUP_?XDOG1? <xsl:for-each select=".//PROJECT">

我想在每个查询中使用唯一的别名(如 TASK_COUNT1、TASK_COUNT2、TASK_COUNT3)也可以。

希望对以后遇到问题的人有帮助。


0
投票

oğuzhan-Öztürk

我正在努力实现与您完全相同的目标。 我可以完全理解您的元数据表 - 我无法开始工作的是在电子表格本身中创建组。

您有 4 个查询/组(PROJECT、SET1、SET2、SET3)

您正在使用项目组中的名称列 您正在使用其他 3 组中的 TASK_COUNT 列。

您仅在 Excel 工作表中定义项目组?

有一个步骤是在 Excel 中突出显示列,然后单击 Publisher->Repeating Group yes? 您能解释一下您在这里做了什么吗? 例如,您是否突出显示了所有 4 列并将它们设为项目组?

非常感谢

© www.soinside.com 2019 - 2024. All rights reserved.