【问题标题】:Create array of values in Cognos在 Cognos 中创建值数组
【发布时间】:2019-11-13 20:48:03
【问题描述】:

有没有办法在 Cognos Report Studio 中为给定字段创建一个值数组?

假设一项费用有 5 位参与者。如果我引入字段费用和与会者,这将创建 5 行,因为粒度被强制降低到与会者级别而不是费用级别。

我可以将其强制返回到参加者列是逗号分隔值或某种数组的一行吗?

提取:

+---------+----------+-----------+------------+
| Expense | Employee | Entry Key | Attendee   |
+---------+----------+-----------+------------+
| Meal    | Iron Man | 1         | Thor       |
+---------+----------+-----------+------------+
| Meal    | Iron Man | 1         | Hulk       |
+---------+----------+-----------+------------+
| Meal    | Iron Man | 1         | Spider Man |
+---------+----------+-----------+------------+
| Meal    | Iron Man | 1         | Star Lord  |
+---------+----------+-----------+------------+
| Meal    | Iron Man | 1         | Thanos     |
+---------+----------+-----------+------------+

所需的提取物:

+---------+----------+-----------+-------------------------------------------+
| Expense | Employee | Entry Key | Attendee                                  |
+---------+----------+-----------+-------------------------------------------+
| Meal    | Iron Man | 1         | Thor, Hulk, Spider Man, Star Lord, Thanos |
+---------+----------+-----------+-------------------------------------------+

仅限于计算字段/方程式假设这需要一个子查询,然后使用输入键连接回完整查询。不确定这在计算字段中是否可行

【问题讨论】:

    标签: cognos report-studio


    【解决方案1】:

    使用中继器表的简单查询结构。这将为每个值(之前或之后)创建一个逗号,并且不可能在第一个值之前或最后一个值之后省略逗号。

    这是一个示例报告:

    你没有说什么版本的 Cognos。这是针对 11.0.13 的。您可能需要更新第一行中的版本号和样式版本以匹配您的环境。

    <report xmlns="http://developer.cognos.com/schemas/report/14.3/" useStyleVersion="11.4" expressionLocale="en-us">
        <drillBehavior/>
        <layouts>
            <layout>
                <reportPages>
                    <page name="Page1">
                        <style>
                            <defaultStyles>
                                <defaultStyle refStyle="pg"/>
                            </defaultStyles>
                        </style>
                        <pageBody>
                            <style>
                                <defaultStyles>
                                    <defaultStyle refStyle="pb"/>
                                </defaultStyles>
                            </style>
                            <contents>
                                <list horizontalPagination="true" name="List1" refQuery="Query1">
                                    <noDataHandler>
                                        <contents>
                                            <block>
                                                <contents>
                                                    <textItem>
                                                        <dataSource>
                                                            <staticValue>No Data Available</staticValue>
                                                        </dataSource>
                                                        <style>
                                                            <CSS value="padding:10px 18px;"/>
                                                        </style>
                                                    </textItem>
                                                </contents>
                                            </block>
                                        </contents>
                                    </noDataHandler>
                                    <style>
                                        <CSS value="border-collapse:collapse"/>
                                        <defaultStyles>
                                            <defaultStyle refStyle="ls"/>
                                        </defaultStyles>
                                    </style>
                                    <listColumns>
                                        <listColumn>
                                            <listColumnTitle>
                                                <style>
                                                    <defaultStyles>
                                                        <defaultStyle refStyle="lt"/>
                                                    </defaultStyles>
                                                </style>
                                                <contents>
                                                    <textItem>
                                                        <dataSource>
                                                            <dataItemLabel refDataItem="Country"/>
                                                        </dataSource>
                                                    </textItem>
                                                </contents>
                                            </listColumnTitle>
                                            <listColumnBody>
                                                <style>
                                                    <defaultStyles>
                                                        <defaultStyle refStyle="lc"/>
                                                    </defaultStyles>
                                                </style>
                                                <contents>
                                                    <textItem>
                                                        <dataSource>
                                                            <dataItemValue refDataItem="Country"/>
                                                        </dataSource>
                                                    </textItem>
                                                </contents>
                                            </listColumnBody>
                                        </listColumn>
                                        <listColumn>
                                            <listColumnTitle>
                                                <style>
                                                    <defaultStyles>
                                                        <defaultStyle refStyle="lt"/>
                                                    </defaultStyles>
                                                </style>
                                                <contents>
                                                    <textItem>
                                                        <dataSource>
                                                            <staticValue>Retailer Type</staticValue>
                                                        </dataSource>
                                                    </textItem>
                                                </contents>
                                            </listColumnTitle>
                                            <listColumnBody>
                                                <style>
                                                    <defaultStyles>
                                                        <defaultStyle refStyle="lc"/>
                                                    </defaultStyles>
                                                </style>
                                                <contents>
                                                    <repeaterTable name="Repeater table1" refQuery="Query1" across="20" down="1">
                                                        <repeaterTableCell>
                                                            <contents>
                                                                <textItem>
                                                                    <dataSource>
                                                                        <dataItemValue refDataItem="Retailer type"/>
                                                                    </dataSource>
                                                                </textItem>
                                                                <textItem>
                                                                    <dataSource>
                                                                        <staticValue>, </staticValue>
                                                                    </dataSource>
                                                                </textItem>
                                                            </contents>
                                                            <style>
                                                                <defaultStyles>
                                                                    <defaultStyle refStyle="rc"/>
                                                                </defaultStyles>
                                                                <CSS value="padding:0px;font-size:8pt"/>
                                                            </style>
                                                        </repeaterTableCell>
                                                        <style>
                                                            <CSS value="border-collapse:collapse"/>
                                                            <defaultStyles>
                                                                <defaultStyle refStyle="rt"/>
                                                            </defaultStyles>
                                                        </style>
                                                        <masterDetailLinks>
                                                            <masterDetailLink>
                                                                <masterContext>
                                                                    <dataItemContext refDataItem="Country"/>
                                                                </masterContext>
                                                                <detailContext>
                                                                    <dataItemContext refDataItem="Country"/>
                                                                </detailContext>
                                                            </masterDetailLink>
                                                        </masterDetailLinks>
                                                    </repeaterTable>
                                                </contents>
                                            </listColumnBody>
                                        </listColumn>
                                        <listColumn>
                                            <listColumnTitle>
                                                <style>
                                                    <defaultStyles>
                                                        <defaultStyle refStyle="lt"/>
                                                    </defaultStyles>
                                                </style>
                                                <contents>
                                                    <textItem>
                                                        <dataSource>
                                                            <dataItemLabel refDataItem="Quantity"/>
                                                        </dataSource>
                                                    </textItem>
                                                </contents>
                                            </listColumnTitle>
                                            <listColumnBody>
                                                <style>
                                                    <defaultStyles>
                                                        <defaultStyle refStyle="lm"/>
                                                    </defaultStyles>
                                                </style>
                                                <contents>
                                                    <textItem>
                                                        <dataSource>
                                                            <dataItemValue refDataItem="Quantity"/>
                                                        </dataSource>
                                                    </textItem>
                                                </contents>
                                            </listColumnBody>
                                        </listColumn>
                                    </listColumns>
                                    <listOverallGroup>
                                        <listFooter>
                                            <listRows>
                                                <listRow>
                                                    <rowCells>
                                                        <rowCell colSpan="2">
                                                            <contents>
                                                                <textItem>
                                                                    <dataSource>
                                                                        <staticValue>Overall</staticValue>
                                                                    </dataSource>
                                                                </textItem>
                                                                <textItem>
                                                                    <dataSource>
                                                                        <staticValue> - </staticValue>
                                                                    </dataSource>
                                                                </textItem>
                                                                <textItem>
                                                                    <dataSource>
                                                                        <staticValue>Summary</staticValue>
                                                                    </dataSource>
                                                                </textItem>
                                                            </contents>
                                                            <style>
                                                                <defaultStyles>
                                                                    <defaultStyle refStyle="if"/>
                                                                </defaultStyles>
                                                            </style>
                                                        </rowCell>
                                                        <rowCell>
                                                            <contents>
                                                                <textItem>
                                                                    <dataSource>
                                                                        <dataItemValue refDataItem="Summary(Quantity)"/>
                                                                    </dataSource>
                                                                </textItem>
                                                            </contents>
                                                            <style>
                                                                <defaultStyles>
                                                                    <defaultStyle refStyle="is"/>
                                                                </defaultStyles>
                                                            </style>
                                                        </rowCell>
                                                    </rowCells>
                                                </listRow>
                                            </listRows>
                                        </listFooter>
                                    </listOverallGroup>
                                </list>
                            </contents>
                        </pageBody>
                    </page>
                </reportPages>
            </layout>
        </layouts>
        <XMLAttributes>
            <XMLAttribute output="no" name="RS_CreateExtendedDataItems" value="true"/>
            <XMLAttribute output="no" name="RS_modelModificationTime" value="2015-11-25T21:38:24.820Z"/>
            <XMLAttribute output="no" name="listSeparator" value=","/>
        </XMLAttributes>
        <modelPath>/content/folder[@name=&apos;Samples&apos;]/folder[@name=&apos;Models&apos;]/package[@name=&apos;GO sales (query)&apos;]/model[@name=&apos;model&apos;]</modelPath>
        <queries>
            <query name="Query1">
                <source>
                    <model/>
                </source>
                <selection>
                    <dataItem aggregate="none" rollupAggregate="none" name="Country" sort="ascending">
                        <expression>[Sales (query)].[Branch].[Country]</expression>
                        <XMLAttributes>
                            <XMLAttribute output="no" name="RS_dataType" value="3"/>
                            <XMLAttribute output="no" name="RS_dataUsage" value="attribute"/>
                        </XMLAttributes>
                    </dataItem>
                    <dataItem aggregate="none" rollupAggregate="none" name="Retailer type" sort="ascending">
                        <expression>[Sales (query)].[Retailer type].[Retailer type]</expression>
                        <XMLAttributes>
                            <XMLAttribute output="no" name="RS_dataType" value="3"/>
                            <XMLAttribute output="no" name="RS_dataUsage" value="attribute"/>
                        </XMLAttributes>
                    </dataItem>
                    <dataItem aggregate="total" name="Quantity">
                        <expression>[Sales (query)].[Sales].[Quantity]</expression>
                        <XMLAttributes>
                            <XMLAttribute output="no" name="RS_dataType" value="1"/>
                            <XMLAttribute output="no" name="RS_dataUsage" value="fact"/>
                        </XMLAttributes>
                    </dataItem>
                    <dataItemListSummary refDataItem="Quantity" aggregateMethod="aggregate" name="Summary(Quantity)"/>
                </selection>
                <detailFilters>
                    <detailFilter>
                        <filterExpression>[Sales (query)].[Time].[Year] = 2013</filterExpression>
                    </detailFilter>
                </detailFilters>
            </query>
        </queries>
        <reportName>Repeater Table (simple - using Samples data)</reportName>
    </report>
    

    【讨论】:

      【解决方案2】:

      使用具有复杂查询结构的重复表以仅在值之间包含逗号(不在开头或结尾)。这是一个示例报告: 你没有说什么版本的 Cognos。这是针对 11.0.13 的。您可能需要更新第一行中的版本号和样式版本以匹配您的环境。

      <report xmlns="http://developer.cognos.com/schemas/report/14.3/"           useStyleVersion="11.4" expressionLocale="en-us">
          <drillBehavior/>
          <layouts>
              <layout>
                  <reportPages>
                      <page name="Page1">
                          <style>
                              <defaultStyles>
                                  <defaultStyle refStyle="pg"/>
                              </defaultStyles>
                          </style>
                          <pageBody>
                              <style>
                                  <defaultStyles>
                                      <defaultStyle refStyle="pb"/>
                                  </defaultStyles>
                              </style>
                              <contents>
                                  <list horizontalPagination="true" name="List1" refQuery="Query3">
                                      <noDataHandler>
                                          <contents>
                                              <block>
                                                  <contents>
                                                      <textItem>
                                                          <dataSource>
                                                              <staticValue>No Data Available</staticValue>
                                                          </dataSource>
                                                          <style>
                                                              <CSS value="padding:10px 18px;"/>
                                                          </style>
                                                      </textItem>
                                                  </contents>
                                              </block>
                                          </contents>
                                      </noDataHandler>
                                      <style>
                                          <CSS value="border-collapse:collapse"/>
                                          <defaultStyles>
                                              <defaultStyle refStyle="ls"/>
                                          </defaultStyles>
                                      </style>
                                      <listColumns>
                                          <listColumn>
                                              <listColumnTitle>
                                                  <style>
                                                      <defaultStyles>
                                                          <defaultStyle refStyle="lt"/>
                                                      </defaultStyles>
                                                  </style>
                                                  <contents>
                                                      <textItem>
                                                          <dataSource>
                                                              <dataItemLabel refDataItem="Country"/>
                                                          </dataSource>
                                                      </textItem>
                                                  </contents>
                                              </listColumnTitle>
                                              <listColumnBody>
                                                  <style>
                                                      <defaultStyles>
                                                          <defaultStyle refStyle="lc"/>
                                                      </defaultStyles>
                                                  </style>
                                                  <contents>
                                                      <textItem>
                                                          <dataSource>
                                                              <dataItemValue refDataItem="Country"/>
                                                          </dataSource>
                                                      </textItem>
                                                  </contents>
                                              </listColumnBody>
                                          </listColumn>
                                          <listColumn>
                                              <listColumnTitle>
                                                  <style>
                                                      <defaultStyles>
                                                          <defaultStyle refStyle="lt"/>
                                                      </defaultStyles>
                                                  </style>
                                                  <contents>
                                                      <textItem>
                                                          <dataSource>
                                                              <staticValue>Retailer Type</staticValue>
                                                          </dataSource>
                                                      </textItem>
                                                  </contents>
                                              </listColumnTitle>
                                              <listColumnBody>
                                                  <style>
                                                      <defaultStyles>
                                                          <defaultStyle refStyle="lc"/>
                                                      </defaultStyles>
                                                  </style>
                                                  <contents>
                                                      <repeaterTable across="20" down="1" name="Repeater table1" refQuery="Query2">
                                                          <repeaterTableCell>
                                                              <contents>
                                                                  <textItem>
                                                                      <dataSource>
                                                                          <dataItemValue refDataItem="Retailer type"/>
                                                                      </dataSource>
                                                                  </textItem>
                                                                  <textItem>
                                                                      <dataSource>
                                                                          <dataItemValue refDataItem="Comma"/>
                                                                      </dataSource>
                                                                  </textItem>
                                                              </contents>
                                                              <style>
                                                                  <defaultStyles>
                                                                      <defaultStyle refStyle="rc"/>
                                                                  </defaultStyles>
                                                                  <CSS value="padding:0px;font-size:8pt"/>
                                                              </style>
                                                          </repeaterTableCell>
                                                          <style>
                                                              <CSS value="border-collapse:collapse"/>
                                                              <defaultStyles>
                                                                  <defaultStyle refStyle="rt"/>
                                                              </defaultStyles>
                                                          </style>
                                                          <masterDetailLinks>
                                                              <masterDetailLink>
                                                                  <masterContext>
                                                                      <dataItemContext refDataItem="Country"/>
                                                                  </masterContext>
                                                                  <detailContext>
                                                                      <dataItemContext refDataItem="Country"/>
                                                                  </detailContext>
                                                              </masterDetailLink>
                                                          </masterDetailLinks>
                                                      </repeaterTable>
                                                  </contents>
                                              </listColumnBody>
                                          </listColumn>
                                          <listColumn>
                                              <listColumnTitle>
                                                  <style>
                                                      <defaultStyles>
                                                          <defaultStyle refStyle="lt"/>
                                                      </defaultStyles>
                                                  </style>
                                                  <contents>
                                                      <textItem>
                                                          <dataSource>
                                                              <dataItemLabel refDataItem="Quantity"/>
                                                          </dataSource>
                                                      </textItem>
                                                  </contents>
                                              </listColumnTitle>
                                              <listColumnBody>
                                                  <style>
                                                      <defaultStyles>
                                                          <defaultStyle refStyle="lm"/>
                                                      </defaultStyles>
                                                  </style>
                                                  <contents>
                                                      <textItem>
                                                          <dataSource>
                                                              <dataItemValue refDataItem="Quantity"/>
                                                          </dataSource>
                                                      </textItem>
                                                  </contents>
                                              </listColumnBody>
                                          </listColumn>
                                      </listColumns>
                                      <listOverallGroup>
                                          <listFooter>
                                              <listRows>
                                                  <listRow>
                                                      <rowCells>
                                                          <rowCell colSpan="2">
                                                              <contents>
                                                                  <textItem>
                                                                      <dataSource>
                                                                          <staticValue>Overall</staticValue>
                                                                      </dataSource>
                                                                  </textItem>
                                                                  <textItem>
                                                                      <dataSource>
                                                                          <staticValue> - </staticValue>
                                                                      </dataSource>
                                                                  </textItem>
                                                                  <textItem>
                                                                      <dataSource>
                                                                          <staticValue>Summary</staticValue>
                                                                      </dataSource>
                                                                  </textItem>
                                                              </contents>
                                                              <style>
                                                                  <defaultStyles>
                                                                      <defaultStyle refStyle="if"/>
                                                                  </defaultStyles>
                                                              </style>
                                                          </rowCell>
                                                          <rowCell>
                                                              <contents>
                                                                  <textItem>
                                                                      <dataSource>
                                                                          <dataItemValue refDataItem="Summary(Quantity)"/>
                                                                      </dataSource>
                                                                  </textItem>
                                                              </contents>
                                                              <style>
                                                                  <defaultStyles>
                                                                      <defaultStyle refStyle="is"/>
                                                                  </defaultStyles>
                                                              </style>
                                                          </rowCell>
                                                      </rowCells>
                                                  </listRow>
                                              </listRows>
                                          </listFooter>
                                      </listOverallGroup>
                                  </list>
                              </contents>
                          </pageBody>
                      </page>
                  </reportPages>
              </layout>
          </layouts>
          <XMLAttributes>
              <XMLAttribute output="no" name="RS_CreateExtendedDataItems" value="true"/>
              <XMLAttribute output="no" name="listSeparator" value=","/>
          </XMLAttributes>
          <modelPath>/content/folder[@name=&apos;Samples&apos;]/folder[@name=&apos;Models&apos;]/package[@name=&apos;GO sales (query)&apos;]/model[@name=&apos;model&apos;]</modelPath>
          <queries>
              <query name="Query1">
                  <source>
                      <model/>
                  </source>
                  <selection>
                      <dataItem aggregate="none" rollupAggregate="none" name="Country" sort="ascending">
                          <expression>[Sales (query)].[Branch].[Country]</expression>
                          <XMLAttributes>
                              <XMLAttribute output="no" name="RS_dataType" value="3"/>
                              <XMLAttribute output="no" name="RS_dataUsage" value="attribute"/>
                          </XMLAttributes>
                      </dataItem>
                      <dataItem aggregate="none" rollupAggregate="none" name="Retailer type" sort="ascending">
                          <expression>[Sales (query)].[Retailer type].[Retailer type]</expression>
                          <XMLAttributes>
                              <XMLAttribute output="no" name="RS_dataType" value="3"/>
                              <XMLAttribute output="no" name="RS_dataUsage" value="attribute"/>
                          </XMLAttributes>
                      </dataItem>
                      <dataItem aggregate="total" name="Quantity">
                          <expression>[Sales (query)].[Sales].[Quantity]</expression>
                          <XMLAttributes>
                              <XMLAttribute output="no" name="RS_dataType" value="1"/>
                              <XMLAttribute output="no" name="RS_dataUsage" value="fact"/>
                          </XMLAttributes>
                      </dataItem>
                      <dataItemListSummary refDataItem="Quantity" aggregateMethod="aggregate" name="Summary(Quantity)"/>
                  </selection>
                  <detailFilters>
                      <detailFilter>
                          <filterExpression>[Sales (query)].[Time].[Year] = 2013</filterExpression>
                      </detailFilter>
                  </detailFilters>
              </query>
              <query name="Query2">
                  <source>
      
                      <queryRef refQuery="Query1"/>
                  </source>
                  <selection>
                      <dataItem aggregate="none" rollupAggregate="none" name="Country">
                          <expression>[Query1].[Country]</expression>
                      </dataItem>
                      <dataItem aggregate="none" rollupAggregate="none" name="Retailer type">
                          <expression>[Query1].[Retailer type]</expression>
                          <XMLAttributes>
                              <XMLAttribute output="no" name="RS_dataType" value="3"/>
                              <XMLAttribute output="no" name="RS_dataUsage" value="0"/>
                          </XMLAttributes>
                      </dataItem>
                      <dataItem name="Comma">
                          <expression>case
          when running-count ([Retailer type] for [Country]) &lt; maximum (running-count ([Retailer type] for [Country]) for [Country]) then &apos;,&apos;
          else &apos;&apos;
      end</expression>
                          <XMLAttributes>
                              <XMLAttribute output="no" name="RS_dataType" value="3"/>
                              <XMLAttribute output="no" name="RS_dataUsage" value=""/>
                          </XMLAttributes>
                      </dataItem>
                  </selection>
              </query>
              <query name="Query3">
                  <source>
      
                      <queryRef refQuery="Query1"/>
                  </source>
                  <selection>
                      <dataItemListSummary aggregateMethod="aggregate" name="Summary(Quantity)" refDataItem="Quantity"/>
                      <dataItem aggregate="none" rollupAggregate="none" name="Country">
                          <expression>[Query1].[Country]</expression>
                          <XMLAttributes>
                              <XMLAttribute output="no" name="RS_dataType" value="3"/>
                              <XMLAttribute output="no" name="RS_dataUsage" value="0"/>
                          </XMLAttributes>
                      </dataItem>
                      <dataItem aggregate="total" name="Quantity">
                          <expression>[Query1].[Quantity]</expression>
                          <XMLAttributes>
                              <XMLAttribute output="no" name="RS_dataType" value="2"/>
                              <XMLAttribute output="no" name="RS_dataUsage" value="2"/>
                          </XMLAttributes>
                      </dataItem>
                  </selection>
              </query>
          </queries>
          <reportName>Repeater Table (using Samples data)</reportName>
      </report>
      

      【讨论】:

      • 这需要使用方程式/计算字段来完成 - 我无权创建查询
      • 无法从这里到达。
      • 您可以使用主详细信息吗?
      • @VAI Jason:那会是中继表吗?如果他无法创建查询,他将在哪里获得逗号? (或者也许可以在文本项中硬编码逗号并在最后一个值之后有一个额外的逗号。)
      • @VAI Jason 我明白你的意思。我的答案中的报告规范在列表和中继器表之间没有主详细信息关系,因此它在每一行都返回相同的值。我会更新答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      相关资源
      最近更新 更多