GET_PUBLIC_VIEW_DEPENDENCIES¶
説明
ストアドプロシージャ GET_PUBLIC_VIEW_DEPENDENCIES
は、ビューの最も近いリネージを返します。つまり、ビューを構築するときに元となった最も近いパブリックビューとデータソースのリストを返します。
構文
GET_PUBLIC_VIEW_DEPENDENCIES (
input_view_database_name : text
, input_view_name : text
, input_max_depth : number
)
input_view_database_name
: 依存関係の取得先ビューがあるデータベースの名前。input_view_name
: 依存関係の取得先ビューの名前。input_max_depth
: 依存関係を取得する最大深さ。
パラメータはオプションです。
input_view_database_name
とinput_view_name
がnull
の場合、このプロシージャはすべてのデータベースにあるすべてのビューの依存関係を返します。input_view_database_name
がnull
で、input_view_name
がそうでない場合、このプロシージャはすべてのデータベースにある、この名前を持つすべてのビューの依存関係を返します。input_view_name
がnull
で、input_view_database_name
がそうでない場合、このプロシージャはそのデータベースにあるすべてのビューの依存関係を返します (ビューが別のデータベースのビューと依存関係を持つ場合は、それも表示されます)。input_max_depth
がnull
の場合、そのデフォルト値は 1 に設定されます。input_max_depth
が 0 の場合、すべての依存関係を取得します。それ以外の場合、指定された深さレベルまでの依存関係を取得します。
このプロシージャの結果の各行は、派生ビュー (「view_name」フィールド) と別のエレメント (「dependency_name」) の間の依存関係を表します。別のエレメントとは、派生ビュー、基本ビュー、またはデータソースのいずれかのことです。
出力スキーマには以下のフィールドがあります。
view_database_name
: 「view_name」フィールドのビューが属すデータベースの名前。view_name
: 派生ビューの名前。view_identifier
: ビューの ID。このストアドプロシージャによって自動生成され、このプロシージャが実行されるたびに変わる場合があります。この値の使用方法については、以下の例を参照してください。view_type
: ビューのタイプ。基本ビュー、選択、データソースなどです。dependency_database
: 依存関係が属すデータベースの名前。dependency_name
: 「view_name」フィールドのビューが依存するエレメント (ビューまたはデータソース) の名前。dependency_type
: 「view_name」フィールドのビューが依存するエレメントのタイプ。
このプロシージャ、または他の Denodo ストアドプロシージャを呼び出す場合は、可能であれば常に入力パラメータでフィルタしてください。クエリがより早く完了し、Denodo サーバーへの負荷が緩和されます。
たとえば、以下を実行してビューの依存関係を取得するとします。
SELECT *
FROM GET_PUBLIC_VIEW_DEPENDENCIES()
WHERE input_database_name = 'tpc_h'
AND input_view_name = 'orders_of_european_customers'
AND input_max_depth = 2
実行エンジンは、「input_database_name」、「input_view_name」、および「input_max_depth」の値をストアドプロシージャに渡し、ストアドプロシージャは、「orders_of_european_customers」ビューの依存関係のみを最大深さ 2 まで計算します。
SELECT *
FROM GET_PUBLIC_VIEW_DEPENDENCIES()
WHERE view_database_name = 'tpc_h'
AND view_name = 'orders_of_european_customers'
このクエリは、最初の例と同じ結果を返します。ただし、このストアドプロシージャは入力パラメータの値を受け取っていないため、すべてのデータベースのすべてのビューの依存関係を計算します。さらに、「input_max_depth」の値を指定しないことにより、深さ 1 までの依存関係のみを返します。このストアドプロシージャがすべてのビューのすべての依存関係を返した後に、実行エンジンは WHERE 条件を満たすものを選択します。
Denodo の「実際の」デプロイでは、最初のクエリには数百ミリ秒かかり、2 番目のクエリには数分かかる場合があります。
例
このストアドプロシージャは、VIEW_DEPENDENCIES に非常によく似ていますが、指定したビューが直接依存するパブリックビューのみを取得する必要がある場合は、はるかに効率的です。したがって、この後で説明するいくつかの例では、GET_PUBLIC_VIEWS_DEPENDENCIES の操作および VIEW_DEPENDENCIES との違いについて説明します。以下のシナリオがあるとします。

GET_PUBLIC_VIEW_DEPENDENCIES
のサンプルシナリオ¶
例 1:
すべてのビューが依存する最も近いパブリックビューを復旧します。そのために、input_database_name、input_view_name、input_max_depth はどれも指定しません。
GET_PUBLIC_VIEW_DEPENDENCIES(null, null, null)
input_view_database_name |
input_view_name |
input_max_depth |
view_database_name |
view_name |
view_type |
dependency_database |
dependency_name |
dependency_type |
depth |
---|---|---|---|---|---|---|---|---|---|
NULL |
NULL |
NULL |
db_1 |
view_g |
Select |
db_1 |
view_e |
Select |
1 |
NULL |
NULL |
NULL |
db_1 |
view_e |
Select |
db_1 |
view_a |
Base View |
1 |
NULL |
NULL |
NULL |
db_1 |
view_e |
Select |
db_1 |
view_b |
Base View |
1 |
NULL |
NULL |
NULL |
db_1 |
view_a |
Base View |
db_datasources |
ds1 |
Jdbc Datasource |
1 |
NULL |
NULL |
NULL |
db_1 |
view_b |
Base View |
db_datasources |
ds2 |
Jdbc Datasource |
1 |
NULL |
NULL |
NULL |
db_1 |
view_i |
Select |
db_2 |
view_d |
Base View |
1 |
NULL |
NULL |
NULL |
db_1 |
view_i |
Select |
db_2 |
view_h |
Select |
1 |
NULL |
NULL |
NULL |
db_1 |
view_i |
Select |
db_1 |
view_g |
Select |
1 |
NULL |
NULL |
NULL |
db_2 |
view_d |
Base View |
db_datasources |
ds2 |
Jdbc Datasource |
1 |
NULL |
NULL |
NULL |
db_2 |
view_h |
Select |
db_2 |
view_f |
Select |
1 |
NULL |
NULL |
NULL |
db_2 |
view_f |
Select |
db_2 |
view_c |
Base View |
1 |
NULL |
NULL |
NULL |
db_2 |
view_f |
Select |
db_2 |
view_d |
Base View |
1 |
NULL |
NULL |
NULL |
db_2 |
view_c |
Base View |
db_datasources |
ds2 |
Jdbc Datasource |
1 |
NULL |
NULL |
NULL |
db_3 |
view_j |
Base View |
db_datasources |
ds2 |
Jdbc Datasource |
1 |
VIEW_DEPENDENCIES との重要な違い
db2.view_d は、ビューツリーに 2 回 (1 回は db2.view_f の子として、もう 1 回は view_i の子として) 出現します。このプロシージャでは、db2.view_d の依存関係は結果セットに 1 回だけ出現します。一方、VIEW_DEPENDENCIES では、ビューツリー (またはサーバー全体を処理する場合は複数のビューツリー) にビューが出現する回数と同じだけ繰り返し出現します。
上記の少量のメタデータに対して、このプロシージャは 14 行生成しますが、プロシージャ VIEW_DEPENDENCIES は 277 行出力します。
例 2:
データベース 'db_1' のすべてのビューが依存する最も近いパブリックビューを取得します。そのために、input_view_name と input_max_depth は指定しませんが、input_database_name は指定します。
GET_PUBLIC_VIEW_DEPENDENCIES('db_1', null, null)
input_view_database_name |
input_view_name |
input_max_depth |
view_database_name |
view_name |
view_type |
dependency_database |
dependency_name |
dependency_type |
depth |
---|---|---|---|---|---|---|---|---|---|
db_1 |
NULL |
NULL |
db_1 |
view_g |
Select |
db_1 |
view_e |
Select |
1 |
db_1 |
NULL |
NULL |
db_1 |
view_e |
Select |
db_1 |
view_a |
Base View |
1 |
db_1 |
NULL |
NULL |
db_1 |
view_e |
Select |
db_1 |
view_b |
Base View |
1 |
db_1 |
NULL |
NULL |
db_1 |
view_a |
Base View |
db_datasources |
ds1 |
Jdbc Datasource |
1 |
db_1 |
NULL |
NULL |
db_1 |
view_b |
Base View |
db_datasources |
ds2 |
Jdbc Datasource |
1 |
db_1 |
NULL |
NULL |
db_1 |
view_i |
Select |
db_2 |
view_d |
Base View |
1 |
db_1 |
NULL |
NULL |
db_1 |
view_i |
Select |
db_2 |
view_h |
Select |
1 |
db_1 |
NULL |
NULL |
db_1 |
view_i |
Select |
db_1 |
view_g |
Select |
1 |
db_1 |
NULL |
NULL |
db_2 |
view_d |
Base View |
db_datasources |
ds2 |
Jdbc Datasource |
1 |
db_1 |
NULL |
NULL |
db_2 |
view_h |
Select |
db_2 |
view_f |
Select |
1 |
db_1 |
NULL |
NULL |
db_2 |
view_f |
Select |
db_2 |
view_c |
Base View |
1 |
db_1 |
NULL |
NULL |
db_2 |
view_f |
Select |
db_2 |
view_d |
Base View |
1 |
db_1 |
NULL |
NULL |
db_2 |
view_c |
Base View |
db_datasources |
ds2 |
Jdbc Datasource |
1 |
db_3.view_j の依存関係が出力されていません。db2 のビューは、db1 のビューの依存関係なので、出力されています。
例 3:
データベース 'db_2' のすべてのビューが依存するすべてのパブリックビューを取得します。そのために、input_view_name は指定しませんが、input_database_name と input_max_depth は指定します。
GET_PUBLIC_VIEW_DEPENDENCIES('db_2', null, 0)
input_view_database_name |
input_view_name |
input_max_depth |
view_database_name |
view_name |
view_type |
dependency_database |
dependency_name |
dependency_type |
depth |
---|---|---|---|---|---|---|---|---|---|
db_2 |
NULL |
0 |
db_2 |
view_h |
Select |
db_2 |
view_f |
Select |
1 |
db_2 |
NULL |
0 |
db_2 |
view_h |
Select |
db_datasources |
ds2 |
Jdbc Datasource |
3 |
db_2 |
NULL |
0 |
db_2 |
view_h |
Select |
db_2 |
view_c |
Base View |
2 |
db_2 |
NULL |
0 |
db_2 |
view_h |
Select |
db_2 |
view_d |
Base View |
2 |
db_2 |
NULL |
0 |
db_2 |
view_f |
Select |
db_datasources |
ds2 |
Jdbc Datasource |
2 |
db_2 |
NULL |
0 |
db_2 |
view_f |
Select |
db_2 |
view_c |
Base View |
1 |
db_2 |
NULL |
0 |
db_2 |
view_f |
Select |
db_2 |
view_d |
Base View |
1 |
db_2 |
NULL |
0 |
db_2 |
view_c |
Base View |
db_datasources |
ds2 |
Jdbc Datasource |
1 |
db_2 |
NULL |
0 |
db_2 |
view_d |
Base View |
db_datasources |
ds2 |
Jdbc Datasource |
1 |
例 4:
この最後のケースでは、データベース 'db_1' のビュー 'view_g' が依存するパブリックビューを最大深さ 2 まで取得します。 そのために、input_view_name、input_database_name、および input_max_depth を指定します。
GET_PUBLIC_VIEW_DEPENDENCIES('db_1', 'view_g', 2)
input_view_database_name |
input_view_name |
input_max_depth |
view_database_name |
view_name |
view_type |
dependency_database |
dependency_name |
dependency_type |
depth |
---|---|---|---|---|---|---|---|---|---|
db_1 |
view_g |
2 |
db_1 |
view_g |
Select |
db_1 |
view_e |
Select |
1 |
db_1 |
view_g |
2 |
db_1 |
view_g |
Select |
db_1 |
view_a |
Base View |
2 |
db_1 |
view_g |
2 |
db_1 |
view_g |
Select |
db_1 |
view_b |
Base View |
2 |
db_1 |
view_g |
2 |
db_1 |
view_e |
Select |
db_datasources |
ds1 |
Jdbc Datasource |
2 |
db_1 |
view_g |
2 |
db_1 |
view_e |
Select |
db_1 |
view_a |
Base View |
1 |
db_1 |
view_g |
2 |
db_1 |
view_e |
Select |
db_datasources |
ds2 |
Jdbc Datasource |
2 |
db_1 |
view_g |
2 |
db_1 |
view_e |
Select |
db_1 |
view_b |
Base View |
1 |
db_1 |
view_g |
2 |
db_1 |
view_a |
Base View |
db_datasources |
ds1 |
Jdbc Datasource |
1 |
db_1 |
view_g |
2 |
db_1 |
view_b |
Base View |
db_datasources |
ds2 |
Jdbc Datasource |
1 |