4

製品の故障率を計算するクロス集計レポートがあります。2つのメジャー(PASSCOUNT、FAILCOUNT)と計算FAILRATE(FAILCOUNT / PASSCOUNT + FAILCOUNT)があります

レポートのレイアウトは次のようになります。

                   OEM
                   MODEL
TESTYEAR TESTMONTH PASSCOUNT FAILCOUNT FAILRATE

合計アイコンを選択すると、論理的に各列が次のように合計されます。

2012 OCT 7547  697  0.08
     NOV 9570  373  0.04
     DEC 1879  107  0.05
------------------------
Total   18996  1177 0.17

しかし、私のユーザーはTOTALFAILRATEを

TOTAL FAILCOUNT/(TOTAL PASSCOUNT+TOTAL FAILCOUNT) 

これは

1177 / (18996+1177) = 0.058

レポートでこのカスタム合計を作成するにはどうすればよいですか?クエリ計算の作成について読んでいますが、これが正しいアプローチであるかどうかはわかりません。

Cognos Report Studio 8.4 IBM DB2 UDB

4

3 に答える 3

3

Crosstab で適切な合計を選択することが重要です。
合計行を追加するときは、[自動集計] を選択してください。
Cognos 自動要約
このオプションにより、集計がクエリ データ項目ごとに個別に決定されます。
それでも期待どおりの結果が得られない場合は、クエリ エクスプローラーで、クロス集計で使用されているクエリを選択し、FAILRATE データ項目で計算オプションを選択します (プロパティ パネルで)。
Cognos 集計関数のプロパティ

于 2013-01-06T07:58:07.087 に答える
3

あなたは確かにできます。いくつかの方法があります。

レポートクエリには、目的の計算を構成する個々のクエリ項目 (PASSCOUNT、FAILCOUNT など) があります。同じクエリ項目リストに新しいデータ項目/式を作成し、定義を編集できます。左側では、元の db データ ソースの列を使用することを選択できますが、同じクエリで定義した他のクエリ項目/計算を実際に再利用するために選択できる別のペインがあります (PASSCOUNT FAILCOUNT FAILRATE)。Cognos は、同じクエリ内の他の列を使用して式を作成するときに、それらのクエリ項目に依存する計算を解決するために、最初にそれらのクエリ項目を解決することを認識しています。計算/派生列が他の依存クエリ項目の後にリストされていることを確認する必要があります (実際にはこれは問題ではないかもしれませんが、それを見ると意味があります)。

要約行は少しトリッキーかもしれません/そうでないかもしれません。目の前にレポート スタジオがなくても、合計セクションをリスト レポートに追加し、新しい失敗率式を使用すると、十分にスマートになる可能性があります...正しい計算を拡張するか、別の方法を使用して計算を行う必要がある場合があります。 report式であるsummary。

クエリではなく、レポートの gui ページでレポート式を作成します (サイド テーブル、シングルトンなどのツールボックスにあります)。クエリと同じように式ビルダーがありますが、クエリの実行後に実行され、結果が返されるため、関数セットが異なることに気付くでしょう。あなたがやっているような単純なことは問題ありません。これは単なる数学ですが、他のデータベース関数は、データベースに対してクエリを実行している間ではなく、html 出力で発生しているため、レポート式では使用できないことに注意してください。

お役に立てれば。要約すると、同じクエリ/結果セット内の他の列の集計計算に基づいて計算列を作成しています。これは理論的にはこの SQL ステートメントと同じですが、SQL ではこれが直接許可されていないため機能しませんが、cognos が何をしているかを説明するのに役立つことを願っています。

FAILCOUNT として 1+2、PASSCOUNT として 2+3、(FAILCOUNT/PASSCOUNT+FAILCOUNT) AS FAILRATE を SOMETABLE から選択 -- Cognos は、同じクエリで他の集計計算列の結果を使用できます。SQL を生成すると、その方法を確認できます。これを実行するように SQL を調整します。

ありがとう、

ティム

于 2013-01-09T15:09:08.350 に答える