USER MANUALS

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_nameinput_view_namenull の場合、このプロシージャはすべてのデータベースにあるすべてのビューの依存関係を返します。

  • input_view_database_namenull で、 input_view_name がそうでない場合、このプロシージャはすべてのデータベースにある、この名前を持つすべてのビューの依存関係を返します。

  • input_view_namenull で、 input_view_database_name がそうでない場合、このプロシージャはそのデータベースにあるすべてのビューの依存関係を返します (ビューが別のデータベースのビューと依存関係を持つ場合は、それも表示されます)。

  • input_max_depthnull の場合、そのデフォルト値は 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 サーバーへの負荷が緩和されます。

たとえば、以下を実行してビューの依存関係を取得するとします。

「GET_PUBLIC_VIEW_DEPENDENCIES」プロシージャの正しい呼び出し方法
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 まで計算します。

「GET_PUBLIC_VIEW_DEPENDENCIES」プロシージャの誤った呼び出し方法
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 との違いについて説明します。以下のシナリオがあるとします。

Sample scenario for GET_PUBLIC_VIEW_DEPENDENCIES

GET_PUBLIC_VIEW_DEPENDENCIES のサンプルシナリオ

例 1:

すべてのビューが依存する最も近いパブリックビューを復旧します。そのために、input_database_name、input_view_name、input_max_depth はどれも指定しません。

GET_PUBLIC_VIEW_DEPENDENCIES(null, null, null)
例 1 の結果

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)
例 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

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)
例 3 の結果

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)
例 4 の結果

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

Add feedback