プログラマ38の日記

主にプログラムメモです。

TERADATA: BIツールではViewで定義しよう

まずTERADATAでは、次のようにViewを定義します。

REPLACE VIEW
SampleView (
field1
,field2
,field3
) as
LOCKING TABLE SampleTable FOR ACCESS
select
field1
,field2
,field3
from
SampleTable;

上の赤の太字の記載は、テーブルがロックされててもデータを読むという指定です。

いわゆるダーティリードですが、DWHでは、1つのレコードを頻繁に更新することはないので、ダーティリードで特に問題になるケースは少ないと思います。

どちらかというと、ロックされるとデータが読めない方が問題があって、日中に時間のかかる更新を行っていると、その間selectが実行できなくなります。

※TERADATAのロック制御はTERADATA社のサイトに詳しく書いてあります。

 

大体のBIツールではselect文は自動で生成されるため、select文の頭に、locking table ・・・ for access を指定できません。そのためテーブルに対応するViewを定義し、Viewの中でlocking table ・・・ for accessを指定します。

そのViewをBIツールで定義することでロックされててもテーブルを読むことができるようになります。