各位大佬。
老弟有個問題。我是銀行里面的報表開發人員。就是用oracle進行報表開發的時候會出現某家機構由于業務量少導致有些維度沒有資料。這樣就導致報表開發的時候沒辦法統計到該維度的資料。但是由于報表樣式都是行里給的所以需要按照行里的樣子把報表展示出來。如果沒有資料也要把報表樣子顯示出來。這樣就出現由于后臺沒有資料,但報表要把資料展示出來的情況。目前我解決的辦法是。用事實表和維度表關聯,沒有關聯條件,讓他產生笛卡爾積。然后在通過產生的笛卡爾積資料和原來的事實表進行minus。來達到補全維度的資料。但是這樣做有個問題,通過笛卡爾積出來的結果集資料量特別大。從而導致查詢很慢。情況就是這么個情況。
因為我們是給銀行出報表而且銀行資料量比較大。我取數的明細表有1到2億左右的資料。通過匯總和一些報表邏輯加工,我的事實表在沒進行補全維度之前處理完之后就已經是2000W條資料了。而且維度表需要展示50項的維度。這樣就導致進行笛卡爾積的時候資料量就是2000W*50=10W億的資料。我這個補全維度的sql處理完大概要30分鐘。有沒有老哥提供一種補全維度的思路。可以將時間壓縮到10分鐘內。因為我的這個報表處理最慢的Sql就是補全維度哪里,其他邏輯處理通過oracle開個并行1分鐘基本解決。
上面說的都是資料庫里面資料加工情況。
我們這邊報表開發工具用的是cognos。雖然cognos里面可以通過表的關聯以及前臺頁面傳入引數確定唯一的一組報表展示的資料(舉個例子,因為報表在看的時候客戶一般要選擇日期機構,幣種,等選擇條件。通過這些條件關聯我的事實表最后查出的資料就是50條。因此可以通過cognos的外連接來實作我上面的補全維度情況。。但是我不想改cognos。我想知道oracle里面處理補全維度的這種情況應該如何來處理。)
但是我希望知道在不改cogons的情況下。在oracle把補全維度處理好。求老哥給個思路。
uj5u.com熱心網友回復:
機構的維度表與事實表左連就可以了uj5u.com熱心網友回復:
你說的外連接我知道。這個可以在cognos里面實作。但是oracle這邊外連接使用會有問題的。因為我們取得資料并不是一家銀行是好多行的資料都要取的。我的事實表最后會有好多機構的資料,但是通過他們前臺吧過濾條件去掉之后,就只有50條。如果按你說的外連接我這邊要寫回圈的。我感覺那樣更慢。uj5u.com熱心網友回復:
給出簡化后的表和資料吧,沒做過這功能的人根本不知道你在說什么。uj5u.com熱心網友回復:
你自己創建個維度表,每天更新轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/48189.html
標籤:開發
上一篇:oracle的安裝
