USER MANUALS

CREATE_TAGS_FROM_VIEW

説明

ストアドプロシージャ CREATE_TAGS_FROM_VIEW を使用すると、Virtual DataPort ビューから情報を取得して、タグ割り当てを読み込むことができます。そのビューは事前定義されたスキーマに従っている必要があり、事前定義された構造に従ってデータを返す必要があります。

任意のタイプのビューを指定できるので、たとえば、タグを CSV ファイルで定義しておくことや、 REST API 経由で JSON データソースを使用して外部システムにアクセスすることができます。

注釈

この機能は、 エンタープライズプラス サブスクリプションバンドルでのみ使用可能です。所有するバンドルを見つけるには、Design Studio または Administration Tool の [About] ダイアログを開きます。この詳細については、「 Denodo Platform - サブスクリプションバンドル 」のセクションを参照してください。

構文

CREATE_TAGS_FROM_VIEW (
      input_database_view_name : text
      , input_view_name : text
      , input_action : text
      , input_unassign_tags_mode : text
      , input_unused_external_tags_mode : text
      , input_incremental : boolean
)
  • input_database_view_name: このプロシージャが実行するビューが含まれるデータベースの名前。

  • input_view_name: このプロシージャが実行するビューの名前。

  • input_action: このプロシージャがビューから読み込んだ情報で実行する必要がある動作を示します。以下の 2 つの値を指定できます。

    • READ: プロシージャはビューを実行して取得した情報を返します (デフォルト)。

    • CREATE: プロシージャはビューを実行して取得した情報を返し、さらにその情報を Virtual DataPort に保存します。

  • input_unassign_tags_mode: Virtual DataPort が、実行したビューで見つかったデータベースのビューと列に割り当てられている既存のタグに対して実行する動作を示します。以下の 2 つの値を指定できます。

    • ALL: ビューまたは列から、既存のすべてのタグの割り当てが解除されます。これは、タグ割り当てをこのプロシージャでのみ実行する場合に使用するオプションです。

    • ONLY_EXTERNAL: ビューまたは列から、外部システムからインポートされた既存のタグ (このプロシージャを使用してインポートされたタグなど) のみの割り当てが解除されます。このオプションは、タグを手動でビューまたは列に定義するのに役立ちますが、このプロシージャを使用して情報をインポートすることも可能です。(デフォルト)。

  • input_unused_external_tags_mode: Virtual DataPort が、このプロシージャからインポートしたタグのうち、ビューまたは列でもはや使用されていないタグに対して実行する動作を示します。以下に示す値を指定できます。

    • RETAIN: タグは Virtual DataPort から削除されません。(デフォルト)。

    • DROP_UNASSIGNED: ビューまたは列でもはや使用されていないタグは Virtual DataPort から削除されます。他のエレメント (グローバルセキュリティポリシー など) で使用されているタグは存続する可能性があります。その場合、このオプションではタグは削除されません。

    • DROP_UNASSIGNED_CASCADE: ビューまたは列でもはや使用されていないタグは Virtual DataPort から削除され、他のエレメント (グローバルセキュリティポリシー など) が削除されたタグを使用していた場合はそれらのエレメントも削除されます。

  • input_incremental: 実行されるビューがデータを増分で (前回の読み込み以降の新しい変更のみ) 返すかどうかを示します。ビューまたはその列が変更された場合、そのビューのタグ一式がデータに存在している必要があります。

出力スキーマには以下のフィールドがあります。

  • element_type: 現在のタプルで返されるエレメントのタイプ。指定できる値は、 databasetagview 、および column です。

  • database_name: 現在のエレメントが database の場合はそのデータベースの名前、それ以外の場合は現在のエレメントを含むデータベースの名前。

  • view_name: 現在のエレメントがビューまたは列の場合はビューの名前。

  • column_name: 現在のエレメントが列の場合は列の名前。

  • tag: 現在のエレメントがタグの場合はタグの名前。

  • tag_description: 現在のエレメントがタグの場合はタグの説明。

  • assignment_status: 現在のタプルがタグ割り当てを表す場合に、タグが正しく割り当てられているかどうかを示します。

必要な権限

このプロシージャを呼び出すことができるのは管理者のみです。

ビューの定義

このプロシージャは、入力ビューに少なくとも一定の列名を持つスキーマが存在することを想定しています。正しいスキーマに従ってインターフェイスを定義し、実装として必要なビューを割り当てることをお勧めします。

想定しているスキーマを以下に示します。

CREATE OR REPLACE INTERFACE VIEW i_tags_definition (
        element_type:text,
        database_name:text,
        view_name:text,
        column_name:text,
        tag:text,
        tag_description:text
    )

このプロシージャは、次のクエリを実行して、このビューからデータを抽出します。

SELECT element_type, database_name, view_name, column_name, tag, tag_description
FROM <input_database_name>.<input_view_name>

データ構造

このビューは、実行する必要がある変更を理解するために、Virtual DataPort が想定する構造に従ってデータを返す必要があります。

返すデータには、以下のセクションが必要です。

  • データベース: 影響を受けるデータベースを、データベース 1 つにつき 1 行(つまり element_type に値 database 、列 database_name に名前がそれぞれ格納された行) で返します。

    返すデータベースのビューのみが影響を受けるので、 input_action の値が CREATE であるとき、あるビューがデータに含まれない場合はそのビューがタグを持たないものと見なされます。そのため、タグの割り当ては解除されます。また、この割り当て解除は、以下に示すように input_unassign_tags_mode パラメータに依存する可能性があります。あるビューがデータに含まれる場合、そのタグ操作情報は完全である (つまり、結果に含まれるタグは保持され、それ以外は削除される) 必要があります。以下の表の 1 行目を参照してください。

    • input_unassign_tags_mode の値が ALL の場合、ビューのタグはすべて削除されます。値が ONLY_EXTERNAL の場合、このプロシージャのように、外部システムからインポートしたタグが削除されます。

    • input_incremental の値が true であり、返されたデータでビューに空のタグの割り当てがある場合のみ、ビューのタグが削除されます。割り当てが解除されるタグは、 input_unassign_tags_mode パラメータの値に依存します。

  • Tag descriptions: タグに説明を追加する必要がある場合、タグ 1 つにつき 1 行でこの情報を返します。element_type の値が tag の場合、 tag 列で名前、 tag_description 列で説明を返す必要があります。タグに説明が存在しない場合、空の値を使用してそのタグに対応するタプルを返す必要はありません。以下の表の 2 行目を参照してください。

  • Assignments: ビューまたは列へのタグの割り当て。

    • ビュー: ビューに割り当てるタグを、割り当て 1 つにつき 1 行で返す必要があります。element_type の値は viewdatabase_name はビューが含まれるデータベース、 view_name はビューの名前です。最後に、 tag 列はタグの名前です。以下の表の 3 行目を参照してください。

    • : 列に割り当てるタグを、割り当て 1 つにつき 1 行で返す必要があります。element_type の値は columndatabase_name はビューが含まれるデータベース、 view_name はビューの名前、 column_name は列の名前です。最後に、 tag 列はタグの名前です。以下の表の 4 行目を参照してください。

    • 増分: 増分読み込みを実行する場合のデータ構造に関する注意事項。

      • 新しい割り当てのみが含まれる必要があります。

      • ビューまたはその列の割り当てが変更された場合、ビューとその列の すべてのタグ操作情報 がデータに含まれる必要があります。

      • ビューにもはやタグが存在しない場合、ビューとその列からすべてのタグを削除するために、タグが存在しないビューを参照するタプルが含まれる必要があります。これは、 element_typeviewdatabase_nameview_name でビューを特定し、さらに他の情報を含むタプルを意味します。以下の表の 5 行目を参照してください。

データセクション

element_type

database_name

view_name

column_name

tag

tag_description

1

database

<database_name>

2

tag

<tag_name>

<tag_description>

3

view

<database_name>

<view_name>

<tag_name>

4

column

<database_name>

<view_name>

<column_name>

<tag_name>

5

view

<database_name>

<view_name>

以下の表は、ビューでどのようにデータを返す必要があるかを表す例を示します。順序は重要ではありません。

  • 行 1 ~ 2 はタグ操作の影響を受けるデータベースです。

  • 行 3 ~ 5 は使用されているタグの一部の説明です。

  • 行 6 ~ 8 はビューに対するタグの割り当てです。たとえば、行 6 は、ビュー hr.employees に対するタグ hr_data の割り当てを示します。

  • 行 9 から最終行までは、列に対するタグの割り当てです。たとえば、行 10 は、ビュー hr.employees の列 first_name に対するタグ pii の割り当てです。

element_type

database_name

view_name

column_name

tag

tag_description

1

database

hr

2

database

sales

3

tag

pii

Personally identifiable information

4

tag

hidden

Data that must be hidden

5

tag

zip

Postal code

6

view

hr

employees

hr_data

7

view

sales

customer_payments

customers_data

8

view

sales

customer_payments

payments_data

9

column

hr

employees

first_name

pii

10

column

hr

employees

last_name

pii

11

column

hr

employees

email

pii

12

column

hr

employees

picture

hidden

13

column

hr

employees

password

hidden

14

column

sales

customer_payments

first_name

pii

15

column

sales

customer_payments

last_name

pii

16

column

sales

customer_payments

email

pii

17

column

sales

customer_payments

postal_code

zip

18

column

sales

customer_payments

amount

payment

上記のデータを CSV ファイルに書き込み、 区切り形式ファイル のデータソースを使用して、Virtual DataPort ビューを作成できます。このビューは、このプロシージャが想定しているスキーマに従ったインターフェイスの実装として使用できます。例として、前述の i_tags_definition について説明します。

次の図に、インターフェイス i_tags_definition 、およびその実装である、前述のデータから作成する 区切り形式ファイル 基本ビューを示します。注: 実装ビューには、任意のタイプおよび任意の複雑さを使用できます。

Interface i_tags_definition

インターフェイス i_tags_definition の定義

ここで、プロシージャ CREATE_TAGS_FROM_VIEW を実行し、インターフェイス i_tags_definition を使用してタグ定義を読み込みます。

SELECT element_type, database_name, view_name, column_name, tag, tag_description
   FROM CREATE_TAGS_FROM_VIEW()
      WHERE input_database_view_name = 'admin'
         AND input_view_name = 'i_tags_definition'
         AND input_action = 'READ';

input_action の値は READ なので、プロシージャはデータの取得のみ行います。

Returned data by ``CREATE_TAGS_FROM_VIEW`` procedure accessing to the interface ``i_tags_definition``

プロシージャ CREATE_TAGS_FROM_VIEW がインターフェイス i_tags_definition にアクセスして返すデータ

返されたデータが正しいことを確認したら、タグ割り当てはそのままで、入力パラメータ input_action に値 CREATE を指定して、プロシージャを呼び出すことができます。

SELECT element_type, database_name, view_name, column_name, tag, tag_description
   FROM CREATE_TAGS_FROM_VIEW()
      WHERE input_database_view_name = 'admin'
         AND input_view_name = 'i_tags_definition'
         AND input_action = 'CREATE';

これで、影響を受けるビューまたは列にタグが割り当てられます。

View ``customer_payments`` after executing procedure ``CREATE_TAGS_FROM_VIEW``

プロシージャ CREATE_TAGS_FROM_VIEWCREATE オプションで実行した後のビュー customer_payments

View ``employees`` after executing procedure ``CREATE_TAGS_FROM_VIEW``

プロシージャ CREATE_TAGS_FROM_VIEWCREATE オプションで実行した後のビュー employees

以下の表に、タグの割り当てを解除する方法の例を示します。

  • 行 1 はタグ解除の影響を受けるデータベースです。データに列が含まれていないので、ビューの関連付けられているタグは割り当てを解除されます。

element_type

database_name

view_name

column_name

tag

tag_description

1

database

hr

ここで、タグの割り当て解除はそのままで、プロシージャを呼び出すことができます。

SELECT element_type, database_name, view_name, column_name, tag, tag_description
   FROM CREATE_TAGS_FROM_VIEW()
      WHERE input_database_view_name = 'admin'
         AND input_view_name = 'i_tags_definition'
         AND input_action = 'CREATE';

これで、影響を受けるビューと列にはタグが割り当てられていません。

View ``employees`` after executing procedure ``CREATE_TAGS_FROM_VIEW`` with ``CREATE`` option for deleting tags assignment.

タグの割り当てを解除するためにプロシージャ CREATE_TAGS_FROM_VIEWCREATE オプションで実行した後のビュー employees

次に、 増分読み込み を実行します。達成したいことを以下に示します。

  • ビュー customer_payments とその列からタグを削除します。ビューを参照するタプルを、タグ割り当てなしで、データに含める必要があります。

  • ビュー store_managers に新しいタグを説明付きで追加します。タグの説明を含むタプルおよびビューへの割り当てを含むタプルをデータに含める必要があります。

  • ビュー store_managers の列 username に新しいタグを説明なしで追加します。列への割り当てを含むタプルをデータに含める必要があります。

  • 最後に、 store_managers の列にタグ piihidden の割り当てを追加します。これらの割り当てを含むタプルをデータに含める必要があります。

新しい CSV ファイルには、以下のデータが必要です。

element_type

database_name

view_name

column_name

tag

tag_description

1

database

hr

2

database

sales

3

tag

store_data

Data about the stores

4

view

sales

customer_payments

5

view

hr

store_managers

store_data

6

column

hr

store_managers

first_name

pii

7

column

hr

store_managers

last_name

pii

8

column

hr

store_managers

email

pii

9

column

hr

store_managers

picture

hidden

10

column

hr

store_managers

password

hidden

区切り形式ファイル データソースで新しいファイルを参照した後、プロシージャを input_incremental = true で実行する必要があります。

SELECT element_type, database_name, view_name, column_name, tag, tag_description, assignment_status
   FROM CREATE_TAGS_FROM_VIEW()
      WHERE input_database_view_name = 'admin'
         AND input_view_name = 'i_tags_definition'
         AND input_action = 'CREATE'
         AND input_incremental = true;

実行後、ビュー customer_payments にはタグがなく、ビュー employees には実行前と同じタグがあり、ビュー store_managers には新しいタグが割り当てられています。

View ``customer_payments`` after executing procedure ``CREATE_TAGS_FROM_VIEW`` with ``input_incremental`` = true

プロシージャ CREATE_TAGS_FROM_VIEWinput_incremental = true で実行した後のビュー customer_payments

最後に、もう一度、増分読み込みを実行します。前の例では、ビュー store_managers に次のタグを追加するのを忘れていました。

  • staff_id 列と store_id 列にタグ id を追加

  • ビューにタグ staff_data を追加

したがって、変更するビューが store_managers なので、追加する必要があるのはこのビューとその列に対するタグ操作情報のみです。

新しい CSV ファイルには、以下のデータが必要です。

element_type

database_name

view_name

column_name

tag

tag_description

1

database

hr

2

database

sales

3

tag

id

Internal identifier

4

view

hr

store_managers

store_data

5

view

hr

store_managers

staff_data

6

column

hr

store_managers

first_name

pii

7

column

hr

store_managers

last_name

pii

8

column

hr

store_managers

email

pii

9

column

hr

store_managers

picture

hidden

10

column

hr

store_managers

password

hidden

11

column

hr

store_managers

staff_id

id

12

column

hr

store_managers

store_id

id

このビューに対する すべての タグ操作情報(既存のタグと新しいタグ) がデータに含まれる必要があります。

区切り形式ファイル データソースで新しいファイルを参照した後、プロシージャを input_incremental = true で実行する必要があります。

SELECT element_type, database_name, view_name, column_name, tag, tag_description, assignment_status
   FROM CREATE_TAGS_FROM_VIEW()
      WHERE input_database_view_name = 'admin'
         AND input_view_name = 'i_tags_definition'
         AND input_action = 'CREATE'
         AND input_incremental = true;

実行後、ビュー store_managers には新しいタグ store_data が割り当てられ、 staff_id 列と store_id 列にはタグ id が割り当てられています。他のビューは変更されません。

View ``store_managers`` after executing procedure ``CREATE_TAGS_FROM_VIEW`` with ``input_incremental`` = true

プロシージャ CREATE_TAGS_FROM_VIEWinput_incremental = true で実行した後のビュー store_managers

Add feedback