断片1 (履歴)
Track 1 EnterpriseModel.Period."Day" < VALUEOF("Snapshot Date") OR
Track 2 EnterpriseModel.Period.MonthCode < VALUEOF("Snapshot Year Month") OR
Track 3 EnterpriseModel.Period."Year" < VALUEOF("Snapshot Year") OR
Track 4 EnterpriseModel.Period."Year" = VALUEOF("Snapshot Year") AND
EnterpriseModel.Period."Month in Year" < VALUEOF("Snapshot Month") OR
Track 5 EnterpriseModel.Period."Year" = VALUEOF("Snapshot Year") AND
EnterpriseModel.Period."Monthname" IN ('Mar', 'Feb', 'Jan')
たとえば、最初のトラックのEnterpriseModel.Period."Day"について考えます。 この履歴の断片では、<述語は、Oracle Analytics問合せエンジンに対して、スナップショットの日付の前の日を制約するすべての問合せは履歴の断片内にあるということを通知します。 反対に、日付の現在の断片内の>=述語は、現在の断片の中にスナップショットの日付の前のデータが含まれていないことを通知します。
2番目のトラックのMonthCode (たとえば、202112)は日付と似ています。 月には重なる部分が存在しないため(スナップショットの日付は4月1日であるため)、このトラックでは<述語と>=述語を使用します。 覚えておくべき重要なルールとして、追加されたそれぞれの並列トラックは異なる列セットを参照する必要があるという点があげられます。 共通の列を使用することは可能ですが、列セット全体は一意である必要があります。 Oracle Analytics問合せエンジンは、この列セットを使用して最も適切なトラックを選択します。
3番目のトラックのYear (履歴の断片内では<、現在の断片内では>)は、Oracle Analytics問合せエンジンに対して、年を制約する問合せに対する最適な(単一の)断片選択が可能であることを通知します。 たとえば、「Year IN (2019, 2020)」の論理問合せは履歴の断片にのみヒットします。 同様に、「Year = 2022」の問合せは現在の断片にのみヒットします。 ただし、2021年にヒットする問合せは、このトラックに記述されているコンテンツでは回答できず、以降のトラックに追加の情報がないかぎり両方の断片にヒットします。
4番目のトラックは、Year (month integer)の形式で年と月の断片セットを記述しています。 以前に説明した、複数列コンテンツ記述のテクニックに注目してください。 また、これらの2つの列にはあいまいさや重なりがないため、<述語と>=述語を使用していることに注目してください。
5番目のトラックは、年と月の名前によって断片化の内容を記述しています。 このトラックでは、値ベースのIN述語のテクニックを使用しています。
参考までに、スナップショットの日付がある月の特定の日付となる場合を考えます。したがってこの場合、複数列のコンテンツの年と月のみの記述は特定のスナップショットの月において重なります。 このあいまいさを指定するには、<=述語と>=述語を使用します。
断片1 (履歴):
EnterpriseModel.Period."Day" < VALUEOF("Snapshot Date") OR
EnterpriseModel.Period.MonthCode <= VALUEOF("Snapshot Year Month") OR
EnterpriseModel.Period."Year" < VALUEOF("Snapshot Year") OR
EnterpriseModel.Period."Year" = VALUEOF("Snapshot Year") AND
EnterpriseModel.Period."Month in Year" <= VALUEOF("Snapshot Month") OR
EnterpriseModel.Period."Year" = VALUEOF("Snapshot Year") AND
EnterpriseModel.Period."Monthname" IN ('Apr', 'Mar', 'Feb', 'Jan')
断片2 (現在):
EnterpriseModel.Period."Day" >= VALUEOF("Snapshot Date") OR
EnterpriseModel.Period.MonthCode >= VALUEOF("Snapshot Year Month") OR
EnterpriseModel.Period."Year" > VALUEOF("Snapshot Year") OR
EnterpriseModel.Period."Year" = VALUEOF("Snapshot Year") AND
EnterpriseModel.Period."Month in Year" >= VALUEOF("Snapshot Month") OR
EnterpriseModel.Period."Year" = VALUEOF("Snapshot Year") AND
EnterpriseModel.Period."Monthname" IN ('Dec', 'Nov', 'Oct', 'Sep', 'Aug', 'Jul',
'Jun', '', 'Apr')