Skip Navigation
Expand
Analyticsでのテーブル結合のベストプラクティス
Answer ID 10969   |   Last Review Date 07/15/2019

Oracle B2C Service Analyticsでレポートを作成するときのに何かよいテーブル結合に対するベストプラクティスはありますか。

環境:

Analytics, CX
Oracle B2C Service 

解決策:

テーブル結合は、可能な限り小さいデータセットを返すように設定する必要があります。 Oracle B2C Service Analyticsがレポートを処理するために分析するデータセットが小さいほど、レポートは速く実行されます。
以下のベストプラクティスは、これを達成する方法、および結合構成によって不要に大きいデータセットが生成される可能性がある一般的なケースを回避する方法についてのガイドラインになります。
リレーショナルデータベースとSQLについて十分に理解することに役立ちます。


a)レポートに必要なテーブルにのみ結合します。さまざまな理由から実際のレポート設定にレポートで使用されていないテーブルへの結合が含まれる場合があります。これは避けるべきです。
可能であれば、レポートで使用されていないテーブルへの結合や参照を削除してください。レポートで使用されていないテーブルの列を参照する場合があります。これを行うとレポート処理時間が長くなるので注意してください。
これを回避する方法して、別のテーブルに行のない親テーブルの行を除外する必要がある場合、親テーブルの結合フィールドにNOT NULLフィルタを追加することをご検討ください。
新しいレポートを作成するためにコピーされたレポートの定義から継承されたために、余分な結合が存在することがあります。あるレポートを再構築して別のレポートを作成するときは、レポートの設定を確認し、
新しいレポートには不要なテーブル、結合、列などを削除するようにしてください。

b)できるだけ少ないテーブルを使用し、できるだけ少ない数のテーブルを必要とするようにレポートを生成します。レポートに必要なテーブルが少ないほど、必要な結合は少なくなります。
これにより、レポートを生成するために分析される行数を減少し、必要な関連処理も減少され、レポートは高速化されます。ただ、目的としてレポートが提供しなければならないことでそれに関連するフィルタリングに必要なものとのバランスをとる必要があります。

c)互いに直接関連しない大きなテーブルを結合しないようにしてください。互いに直接関連していない非常に大きなテーブルからデータを結合しようとすると、パフォーマンスが低下することがあります(共通キーを通じて)。
このようなテーブルを結合する場合は、結果セットを制限するためにできるだけ多くのフィルタを追加してください。
例としては、Incidentレコードを介して同じレポート内のTransactionsテーブルとInc_Performanceテーブルを結合することが挙げられます。特定のインシデントの行数は、トランザクション数にInc_Performanceレコードの数を掛けた数に等しくなるため、
非常に大きなデータセットが作成されます。そのような結合が必要な場合は、必ずこちらが必要であることを確認いたします。
パフォーマンスを向上させるために、2つのテーブル間に1つ以上の追加結合を提供するフィルタを追加することをご検討ください。例としては、inc_performance.time_startに作成されたtransactions.cを結合するフィルタを追加します。

d)テーブル間の結合が1対多数の結合である場合は、「1」レコードを持つテーブルを最初のテーブルとして使用してから、「多」レコードを持つテーブルをそれに結合します。

e)テーブル間のジョインが1対1のジョインである場合は、最初のテーブルとしてレコード数の少ないテーブル(使用するフィルタリングに基づく)を使用し、2番目のテーブルとしてレコード数の多いテーブルを使用します。

f)可能であれば、外部結合ではなく内部結合を使用します。内部結合は外部結合より少ないデータを返します。可能であれば、内部結合を使用します。 Oracle B2C Service Analyticsは通常、内部結合にデフォルト設定されていますが、設定が適用または要求される場合は、
必要に応じて内部結合を使用します。

たとえば、関連する組織情報を含むインシデントのリストが必要とします。外部結合を使用してIncidentsテーブルをOrganizationsテーブルに結合した場合、返される結果セットは組織情報を持つインシデントと組織情報を持たないインシデントになります。
内部結合を使用した場合、返されるデータは組織情報を含むインシデントレコードだけになります。従って、内部結合を使用して結果として得られるデータ・セットは、外部結合を使用した場合よりも小さくなり、多くのターゲット得られます。
外部結合を使用する必要があることをご確認ください。

Analyticsとカスタムレポートの作成の詳細については、 Answer ID 9111: アナリティックスのリソースをご参照ください。

Available Languages for this Answer:

Notify Me
The page will refresh upon submission. Any pending input will be lost.