大規模データ・セットでの定期推定のテスト
このトピックでは、大規模データ・セットで定期推定をテストするためのガイドラインを示します。
大規模データ・セットで定期推定を実行する前に、おおよその設備数および推定期間を把握しておくことが重要です。これは、計量コンポーネントの「最新測定日時」を確認することで、かなり迅速に測定できます。次のサンプル問合せは、指定された処理日からの月数ごとに計量コンポーネントの数を提供します。最新の連続する測定日時は次のとおりです。
select count(*)
, round((to_date(:processDateTime,'YYYY-MM-DD-HH24.MI.SS') - latest_msrmt_dttm)/31,0) MONTHS
from d1_measr_comp mc
group by round((to_date(:processDateTime,'YYYY-MM-DD-HH24.MI.SS') - latest_msrmt_dttm)/31,0)
order by 2
;
次に、処理する特定の「最新測定日時」の計量コンポーネントの数をスレッド別に示す、より複雑な問合せを示します。作業をさらに行うことで、定期推定用に構成され、かつ計量コンポーネントが実際にその構成に基づいて推定する準備が整っている、取付済設備および計量コンポーネントのみが示されます。
このパラメータは次のとおりです。
-
threads: 1を入力して、結果がスレッドに分割されないようにします
-
processDateTime: システム日付を使用する場合は空白のままにし、それ以外の場合は日時をYYYY-MM-DD-HH24.MI.SSの形式で指定します
with threads as (
select rownum thread_nbr
, lpad(round((rownum - 1) * (rpad('9',12,'9')+1)/:threads,0),12,'0') low_id
, lpad(round(rownum * ((rpad('9',12,'9')+1)/:threads),0)-1,12,'0') high_id
from dual
connect by rownum <= :threads
)
select /*+ parallel */ threads.thread_nbr
, threads.low_Id
, threads.high_id
, nvl(mc.adj_latest_msrmt_dttm,mc.latest_msrmt_dttm) LATEST_MSRMT_DTTM
, count(*) MC_COUNT
from threads
inner join d1_dvc dvc
on dvc.d1_device_id between threads.low_id and threads.high_id
inner join d1_dvc_cfg dc
on dc.d1_device_id = dvc.d1_device_id
inner join d1_install_evt ie
on ie.device_config_id = dc.device_config_id
and ie.d1_install_dttm < sysdate
and (ie.d1_removal_dttm is null or ie.d1_removal_dttm >= sysdate)
inner join d1_measr_comp mc
on mc.device_config_id = dc.device_config_id
inner join d1_measr_comp_type mct
on mct.measr_comp_type_cd = mc.measr_comp_type_cd
and hrs_wait_before_est > 0
where (to_date(nvl(:processDateTime,sysdate),'YYYY-MM-DD-HH24.MI.SS') - latest_msrmt_dttm) * 24 > mct.hrs_wait_before_est
group by threads.thread_nbr
, threads.low_Id
, threads.high_id
, nvl(mc.adj_latest_msrmt_dttm,mc.latest_msrmt_dttm)
order by 1, 4
;