Hecatoncheir: The Data Stewardship Studio¶
Contents:
Hecatoncheirについて¶
概要¶
Hecatoncheirは、データベースのメタデータおよび実データの統計情報やプロファイルを用いることで、データ品質マネジメントおよびデータガバナンスを実施するデータスチュアードを支援するソフトウェアです。
主要な機能¶
Hecatoncheirでは、以下の機能を提供しています。
- メタデータ収集機能
- データベースに接続してディクショナリ/カタログからメタデータを自動的に収集、可視化します。
- 補足する情報をインポートして一元的に閲覧することができます。
- データプロファイリング機能
- データベースに接続してテーブルやカラムに関する統計情報を自動的に収集、可視化します。
- データ検証機能
- あらかじめ指定したルールに基づいてデータが期待した品質や一貫性の状態であるかを検証、可視化します。
- カタログ機能
- テーブルを任意のデータセットにグループ化して参照することができます。
- データセットに関連する説明や添付ファイルを共有することができます。
- ビジネス用語辞書機能
- ビジネス用語を登録することで、テーブルやカラムの説明に出てくる用語の意味を参照することができます。
動作環境¶
対応データベース¶
現在のバージョンでは、以下のRDBMS製品に対応しています。
- Oracle Database / Oracle Exadata
- SQL Server
- PostgreSQL
- MySQL
- Amazon Redshift
- Google BigQuery
以下のRDBMS製品は、今後、順次対応する予定です。
- DB2
- DB2 PureScale (Neteeza)
- Apache Hive
- Apache Spark
- Vertica
対応オペレーティングシステム¶
現在のバージョンでは、以下のオペレーティングシステムに対応しています。
- Red Hat Enterprise Linux 6 (x86_64)
- Red Hat Enterprise Linux 7 (x86_64)
- Windows 7 (64bit / 32bit)
依存するソフトウェア¶
動作させるには以下のソフトウェアが必要です。
- Python 2.7系
- 各DBMSのクライアントライブラリやドライバ
- それらをPythonから利用するためのモジュール
Pythonのモジュールとして以下を使用します。
- cx-Oracle: Oracle Database / Oracle Exadata
- MySQL-python: MySQL
- psycopg2: PostgreSQL, Amazon Redshift
- pymssql: SQL Server
クイックスタート¶
ソースコードの入手とインストール¶
Githubのソースコードレポジトリを git clone
してソースコードを取得します。
[snaga@localhost tmp]$ git clone https://github.com/snaga/Hecatoncheir.git
Cloning into 'Hecatoncheir'...
remote: Counting objects: 3482, done.
remote: Compressing objects: 100% (237/237), done.
remote: Total 3482 (delta 176), reused 19 (delta 19), pack-reused 3226
Receiving objects: 100% (3482/3482), 864.87 KiB | 1.09 MiB/s, done.
Resolving deltas: 100% (2534/2534), done.
[snaga@localhost tmp]$ cd Hecatoncheir/
[snaga@localhost Hecatoncheir]$ ls
LICENSE build.bat dm-import-csv env.sh
QuickStart.md build.sh dm-import-datamapping requirements.txt
README.md demo dm-run-profiler setup.py
README.oracle dm-attach-file dm-run-server src
bin dm-export-repo dm-verify-results
[snaga@localhost Hecatoncheir]$
次に pip install .
でインストールを行います。
[snaga@localhost Hecatoncheir]$ sudo /usr/local/bin/pip install .
Processing /disk/disk1/snaga/Hecatoncheir/Hecatoncheir
Requirement already satisfied: jinja2==2.8 in /usr/local/lib/python2.7/site-packages (from hecatoncheir==0.8)
Requirement already satisfied: MarkupSafe in /usr/local/lib/python2.7/site-packages (from jinja2==2.8->hecatoncheir==0.8)
Installing collected packages: hecatoncheir
Running setup.py install for hecatoncheir ... done
Successfully installed hecatoncheir-0.8
[snaga@localhost Hecatoncheir]$
以下のコマンドがインストールされたら完了です。
[snaga@localhost tmp]$ ls /usr/local/bin/dm-*
/usr/local/bin/dm-attach-file /usr/local/bin/dm-import-datamapping
/usr/local/bin/dm-dump-xls /usr/local/bin/dm-run-profiler
/usr/local/bin/dm-export-repo /usr/local/bin/dm-run-server
/usr/local/bin/dm-import-csv /usr/local/bin/dm-verify-results
[snaga@localhost tmp]$
メタデータ取得とデータのプロファイリング¶
次に、実際のテーブルに対してメタデータ取得とデータプロファイリングを実行します。ここではOracleの SCOTT
スキーマ、 CUSTOMER
テーブルを対象とします。
メタデータの収集とデータプロファイリングをするには dm-run-profiler
コマンドを使います。
データベースの種類、TNS名、ユーザ名、パスワード、プロファイリング対象のテーブル名( SCOTT.CUSTOMER
)を指定して、 dm-run-profiler
コマンドを実行します。
[snaga@localhost tmp]$ dm-run-profiler --dbtype oracle --tnsname orcl --user scott --pass tiger SCOTT.CUSTOMER
[2017-04-30 15:57:09] INFO: 接続先(TNS): scott@orcl
[2017-04-30 15:57:09] INFO: データベースに接続しています。
[2017-04-30 15:57:09] INFO: データベースに接続しました。
[2017-04-30 15:57:09] INFO: レポジトリを初期化しました。
[2017-04-30 15:57:09] INFO: レポジトリファイル repo.db をオープンしました。
[2017-04-30 15:57:09] INFO: ----------------------------------------------
[2017-04-30 15:57:09] INFO: テーブルスキャン並列度: 0
[2017-04-30 15:57:09] INFO: テーブルプロファイリングスキップ: False
[2017-04-30 15:57:09] INFO: 行数プロファイリング: True
[2017-04-30 15:57:09] INFO: カラムプロファイリングスキップ: False
[2017-04-30 15:57:09] INFO: カラムプロファイリング閾値: 100,000,000行
[2017-04-30 15:57:09] INFO: 最小値/最大値プロファイリング: True
[2017-04-30 15:57:09] INFO: NULL値数プロファイリング: True
[2017-04-30 15:57:09] INFO: 最頻値プロファイリング: 10 件
[2017-04-30 15:57:09] INFO: カーディナリティプロファイリング: True
[2017-04-30 15:57:09] INFO: データ検証有効化: False
[2017-04-30 15:57:09] INFO: サンプルレコード取得: True
[2017-04-30 15:57:09] INFO: ----------------------------------------------
[2017-04-30 15:57:09] INFO: 1 テーブルのプロファイリングを開始します。
[2017-04-30 15:57:09] INFO: テーブル SCOTT.CUSTOMER のプロファイリングを開始します。
[2017-04-30 15:57:09] INFO: データ型の取得: 開始
[2017-04-30 15:57:09] INFO: データ型の取得: 完了
[2017-04-30 15:57:09] INFO: 行数の取得: 開始
[2017-04-30 15:57:09] INFO: 行数の取得: 完了 (28)
[2017-04-30 15:57:09] INFO: サンプル行の取得: 開始
[2017-04-30 15:57:09] INFO: サンプル行の取得:完了
[2017-04-30 15:57:09] INFO: NULL値数の取得: 開始
[2017-04-30 15:57:09] INFO: NULL値数の取得: 完了
[2017-04-30 15:57:09] INFO: 最小値/最大値の取得: 開始
[2017-04-30 15:57:09] INFO: 最小値/最大値の取得: 完了
[2017-04-30 15:57:09] INFO: 最頻値の取得(1/2): 開始
[2017-04-30 15:57:09] INFO: 最頻値の取得(2/2): 開始
[2017-04-30 15:57:09] INFO: 最頻値の取得: 完了
[2017-04-30 15:57:09] INFO: カーディナリティの取得: 開始
[2017-04-30 15:57:09] INFO: カーディナリティの取得: 完了
[2017-04-30 15:57:09] INFO: レコード検証: 開始
[2017-04-30 15:57:09] INFO: レコード検証: データ検証ルールがありません
[2017-04-30 15:57:09] INFO: テーブル SCOTT.CUSTOMER のプロファイリングが完了しました。
[2017-04-30 15:57:09] INFO: 1 テーブル中 0 テーブルのプロファイリングに失敗しました
[2017-04-30 15:57:09] INFO: 1 テーブルのプロファイリングを完了しました
[snaga@localhost tmp]$
メタデータ取得とプロファイリングが完了すると、取得したデータはレポジトリ(デフォルトでは repo.db
というファイル名)に保存されます。
[snaga@localhost tmp]$ ls -l repo.db
-rw-r--r-- 1 snaga snaga 35840 4月 30 15:57 2017 repo.db
[snaga@localhost tmp]$
HTMLファイルへのエクスポート¶
取得したメタデータとデータプロファイルをHTMLファイルに出力するには、 dm-export-repo
コマンドを使います。
レポジトリファイルと出力用ディレクトリを指定して dm-export-repo
コマンドを実行すると、指定したディレクトリにファイルを出力します。デフォルトではHTMLファイルフォーマットで出力します。
[snaga@localhost tmp]$ dm-export-repo repo.db html
[2017-04-30 15:58:14] INFO: 出力用ディレクトリ html を作成しました。
[2017-04-30 15:58:14] INFO: レポジトリファイル repo.db をオープンしました。
[2017-04-30 15:58:14] INFO: html/orcl.SCOTT.CUSTOMER.html を出力しました。
[2017-04-30 15:58:14] INFO: html/orcl.SCOTT.html を出力しました。
[2017-04-30 15:58:14] INFO: html/validation-valid.html を出力しました。
[2017-04-30 15:58:14] INFO: html/validation-invalid.html を出力しました。
[2017-04-30 15:58:14] INFO: html/index.html を出力しました。
[2017-04-30 15:58:14] INFO: html/index-tags.html を出力しました。
[2017-04-30 15:58:14] INFO: html/index-schemas.html を出力しました。
[2017-04-30 15:58:14] INFO: html/glossary.html を出力しました。
[2017-04-30 15:58:15] INFO: static ディレクトリを html にコピーしました。
[snaga@localhost tmp]$ ls -l html
total 140
-rw-rw-r-- 1 snaga snaga 5111 4月 30 15:58 2017 glossary.html
-rw-rw-r-- 1 snaga snaga 6043 4月 30 15:58 2017 index-schemas.html
-rw-rw-r-- 1 snaga snaga 5620 4月 30 15:58 2017 index-tags.html
-rw-rw-r-- 1 snaga snaga 6043 4月 30 15:58 2017 index.html
-rw-rw-r-- 1 snaga snaga 79935 4月 30 15:58 2017 orcl.SCOTT.CUSTOMER.html
-rw-rw-r-- 1 snaga snaga 6046 4月 30 15:58 2017 orcl.SCOTT.html
drwxr-xr-x 4 snaga snaga 4096 4月 29 16:41 2017 static
-rw-rw-r-- 1 snaga snaga 4466 4月 30 15:58 2017 validation-invalid.html
-rw-rw-r-- 1 snaga snaga 4704 4月 30 15:58 2017 validation-valid.html
[snaga@localhost tmp]$
このHTMLファイルをブラウザで表示することによって、データディクショナリから収集したメタデータとデータプロファイリングの結果を確認することができます。
基本的な使い方¶
メタデータ収集とデータプロファイリング¶
プロファイリングで収集する項目¶
データベースのテーブルを指定して、メタデータ収集とデータプロファイリング(テーブル統計情報とカラム統計情報の取得)を行うことができます。
収集する項目は以下の通りです。
- メタデータ(データベースディクショナリから取得)
- スキーマ名
- テーブル名
- カラム名
- カラムデータ型
- テーブル統計情報
- レコード数
- カラム数
- カラム統計情報
- 最小値/最大値
- 非NULL割合
- カーディナリティ(ユニーク性)
- データ分布(出現頻度別ランク)
メタデータ収集とプロファイリングの実施¶
メタデータ収集とデータプロファイリングは、 dm-run-profiler
コマンドを用い
て行います。
dm-run-profiler
コマンドのオプションで、接続するデータベースの種類
(Oracle、PostgreSQLなど)を指定し、必要なパラメータ(ホスト名やポート
番号、データベース名やユーザ名、パスワードなど)を与え、テーブル名を指
定して実行すると、 db-run-profiler
コマンドが自動的にメタデータ収集
とデータプロファイリングを行います。
以下は、 SCOTT.CUSTOMER
というテーブルをプロファイリングする実行例です。
dm-run-profiler --dbtype oracle --tnsname ORCL --user scott --pass tiger SCOTT.CUSTOMER
Oracleデータベースに対してプロファイリングを行う場合には、接続先をホスト名かTNS名で指定します。この例ではTNS名で接続しています。
引数に列挙することで複数のテーブルを指定することもできます。
dm-run-profiler --dbtype oracle --tnsname ORCL --user scott --pass tiger SCOTT.CUSTOMER SCOTT.ORDERS
スキーマ名だけを指定した場合には、指定したスキーマ内のすべてのテーブルを検出し、プロファイリングします。
以下は、Oracleの ORCL
データベースの SCOTT
スキーマ内のすべてのテーブルを対象にプロファイリングする実行例です。
dm-run-profiler --dbtype oracle --tnsname ORCL --user scott --pass tiger SCOTT
スキーマ名やテーブル名が何も指定されなかった場合、データベース内に存在するスキーマの一覧が表示されます。1つかそれ以上のスキーマを指定する必要があります。
dm-run-profiler
コマンドの詳細については「コマンドリファレンス」を参照してください。
クエリ処理時間の制限とデータプロファイル項目¶
dm-run-profiler
コマンドでは、クエリのタイムアウトを設定することができます。 --timeout
オプションでクエリタイムアウトを設定すると、プロファイリングを行うクエリの実行時間の上限を設定することができます。
上限時間を超えたクエリは中断され、テーブルの実データに対するクエリではなく、各DBMSの持つデータベース統計情報から収集するように切り替えます(但し、データベース統計情報が取得されていない場合には、データプロファイルを取得できません)。
なお、データベース統計情報が使われる場合、すべてのデータプロファイルを取得できるわけではありません。また、データベース統計情報から収集したデータプロファイルは、実際の値と異なることがあります。
そのため、 --enable-validation
オプションを指定した場合にはクエリタイムアウトの指定は無効化されます。これは、データ検証において必ずしも正確ではないデータベース統計情報を使う事態を避けるためです。
取得できるデータプロファイルは以下の通りです。
- テーブルスキャン+カラムスキャン(テーブル、カラムともにタイムアウトが発生しなかった場合、または
--enable-validation
を指定した場合) - テーブル - レコード数
- カラム - NULL数
- カラム - カーディナリティ
- カラム - 最小値・最大値
- カラム - 最頻値ランキング
- テーブルスキャン+カラムスキャン(テーブル、カラムともにタイムアウトが発生しなかった場合、または
- テーブルスキャン+カラム統計情報(テーブルはタイムアウトが発生せず、カラムのプロファイリング中にタイムアウトが発生した場合)
- テーブル - レコード数
- カラム - NULL数
- カラム - カーディナリティ
- テーブル統計情報+カラム統計情報(テーブルのレコード数を取得している間にタイムアウトが発生した場合)
- テーブル - レコード数
補足メタデータのCSVファイルからのインポート¶
インポートできる補足メタデータの項目¶
データベースディクショナリから取得できないメタデータは、CSVファイルから取り込むことで、ディクショナリから取得したメタデータと一緒に閲覧することができるようになります。
CSVファイルからインポートできる項目は以下の通りです。
- テーブル関連
- 日本語名
- コメント
- タグ
- 管理者
- カラム関連
- 日本語名
- コメント
- 外部キー参照情報
- データマッピング関連
- データソースのデータベース名
- データソースのスキーマ名
- データソースのテーブル名
- データソースのカラム名
- 変換種別
- 変換ルール
- 更新者
これらの情報をCSVファイルとして作成し、それをインポートすることでディクショナリから取得したメタデータを補足します。
各CSVファイルのフォーマットについては、「CSVファイルフォーマット」を参照してください。
補足メタデータのインポート方法¶
テーブルメタデータCSVおよびカラムメタデータCSVを取り込むには dm-import-csv
コマンドを、データマッピングCSVを取り込むには dm-import-datamapping
コマンドを使います。
dm-import-csv
コマンドは、CSVファイルのヘッダ(1行目)のフィールド名からCSVファイルの内容(テーブル関連かカラム関連か)を判断して、適切に変換してレポジトリにインポートします。
以下は、テーブル関連の補足メタデータをShift-JISのCSVファイルから取り込んでいる例です。
dm-import-csv repo.db pgsql_tables.csv
また、CSVファイルの文字コードはShift-JISをデフォルトとしていますが、任意の文字コードを指定することもできます。
以下は、カラム関連の補足メタデータをUTF-8のCSVファイルから取り込む例です。
dm-import-csv --encoding utf-8 repo.db pgsql_columns.csv
データマッピングのCSVファイルは dm-import-datamapping
コマンドでインポートします。
dm-import-datamapping repo.db pgsql_datamapping.csv
dm-import-csv
および dm-import-datamapping
の各コマンドの詳細は「コマンドリファレンス」を参照してください。
データ検証の設定と実施¶
データ検証の設定¶
データ検証を行うためには、まずデータ検証のためのルールファイルを作成します。
ルールファイルはCSV形式のファイルで、検証したいテーブル名やカラム名、検証ルールやパラメータなどを記載します。
ルールの記述方法の詳細については「データ検証ルール設定リファレンス」を参照してください。
このCSVファイルを dm-import-csv
コマンドを使ってレポジトリにインポートします。
dm-import-csv repo.db validation_oracle.txt
dm-import-csv
コマンドの詳細は「コマンドリファレンス」を参照してください。
データ検証の実施¶
dm-run-profiler
コマンド実行時に --enable-validation
オプションを指定して、プロファイリングと同時にデータの検証を行います。
以下の例は、 SCOTT.CUSTOMER
テーブルをプロファイリングするのと同時にデータ検証も行う例です。
dm-run-profiler --dbtype oracle --tnsname ORCL --user scott --pass tiger --enable-validation SCOTT.CUSTOMER
dm-run-profiler
コマンドで実行したデータ検証の結果は、取得したメタデータやデータプロファイルと一緒にレポジトリに保存されます。
データ検証結果のチェック¶
データ検証結果のチェックを行うには、 dm-verify-results
コマンドを使います。
レポジトリを指定して dm-verify-results
コマンドを実行すると、各テーブルについて最新のデータ検証結果にルール違反があったかどうかを確認することができます。
dm-verify-results repo.db
ルール違反が検知されると、メッセージを出力するとともに終了コードが「0以外」を返却します。
データ検証をバッチ処理で行う場合には、この dm-verify-results
コマンドを使うことで異常を検知することができます。
ビジネス用語集の作成¶
ビジネス用語の定義¶
テーブルやカラムの日本語名や、各種のコメントの中に出てくる用語について、その意味や同義語、関連用語、関連IT資産(テーブル)などを定義し、その定義をデータカタログから参照することができます。
また、任意の用語を検索することもできます。
ビジネス用語の登録¶
定義したい用語とその定義を記述したCSVファイルを作成します。
CSVファイルの詳細は「CSVファイルフォーマット」を参照してください。
作成したCSVファイルを dm-import-csv
コマンドを使ってレポジトリにインポートします。
dm-import-csv repo.db business_glossary.csv
dm-import-csv
コマンドの詳細は「コマンドリファレンス」を参照してください。
データセットの定義とデータカタログの作成¶
データセットの定義¶
データセットは、スキーマ単位でまとめられたテーブルのグループ、または同じタグが付けられたテーブルのグループとして定義されます。(テーブルへのタグ付けはテーブルの補足メタデータで設定することができます。詳細は「」補足メタデータのCSVファイルからのインポート」」を参照してください)
データセットコメントの登録¶
テーブルのグループであるデータセットに対してコメントを登録することができます(このコメントは利用者への説明としてデータカタログに掲載されます)。
コメントを登録したいデータセットがスキーマの場合、スキーマコメントを記載したCSVファイルを作成します。
コメントを登録したいデータセットがタグの場合、タグコメントを記載したCSVファイルを作成します。
各CSVファイルの詳細は「スキーマコメントCSV」および「タグコメントCSV」を参照してください。
作成したCSVファイルを dm-import-csv
コマンドを使ってレポジトリにインポートします。
dm-import-csv repo.db schema_comments.csv
dm-import-csv repo.db tag_comments.csv
dm-import-csvコマンドの詳細は「コマンドリファレンス」を参照してください。
データセット関連資料の添付¶
データセットのコメントはMarkdown形式で記述できるため比較的柔軟な表現が可能ですが、Markdownだけでは表現しきれない場合や、分量が多くなる場合があります。
そのような場合には、関連ファイル(具体的にはPowerPointやExcelのファイルなど)をデータセットのコメントに添付することができます。
ファイルを添付するには dm-attach-file
コマンドを使います。
レポジトリを指定し、添付したいデータセットの種別と名前を指定して、ファイルの追加を実行します。
以下は、「 タグ1
」というタグのデータセットに「 Tag1.ppt
」というファイルを添付する例です。
dm-attach-file repo.db tag:タグ1 add Tag1.ppt
以下は、「 testdb.public
」というスキーマのデータセットに「 schema_design.xlsx
」というファイルを添付する例です。
dm-attach-file repo.db schema:testdb.public add schema_design.xlsx
dm-attach-file
コマンドの詳細は「コマンドリファレンス」を参照してください。
データカタログの出力¶
レポジトリ内に取得・収集・登録した情報を閲覧するためには、データカタログとしてHTMLファイルを出力する必要があります。
dm-export-repo
コマンドでレポジトリと出力先ディレクトリを指定して実行すると、データカタログをHTMLとして出力します。
dm-export-repo repo.db ./html
dm-export-repo
コマンドでは生成するHTMLのテンプレートをデフォルトとは違うものを指定することもできます。テンプレートを変更することでデータカタログをカスタマイズすることができます。
dm-export-repo --template /path/to/mytemplates repo.db html
dm-export-repo
コマンドの詳細は「コマンドリファレンス」を参照してください。
コマンドリファレンス¶
dm-attach-fileコマンド¶
dm-attach-file
コマンドは、データセット(タグ/スキーマ)およびテーブルのコメントに添付するファイルを登録、一覧表示、削除します。
Usage: dm-attach-file [repo file] [target] [command]
Targets:
tag:[tag label]
schema:[schema name]
table:[table name]
Commands:
list
add [file]
rm [file]
Options:
--help Print this help.
repo file
はレポジトリファイル名です。
target
は、tag
, schema
, table
のいずれかのoターゲットを名前と共に指定します。
command
は、list
, add
, rm
のいずれかの操作をファイル名とともに指定します。
dm-dump-xlsコマンド¶
dm-dump-xls
コマンドは、指定したExcelファイルのシートをCSV形式で出力します。
Excelのファイル名、およびシート名、またはシート番号(1,2,3…)を指定すると、シートの内容をCSV形式で標準出力に出力します。
Usage: dm-dump-xls <filename.xls> [<sheet name> | <sheet index>]
Options:
-e STRING Output encoding (default: utf-8)
--help Print this help.
-e
オプションは出力するCSVデータのエンコーディングを指定します。
dm-export-repoコマンド¶
dm-export-repo
コマンドは、レポジトリに保存されたメタデータ、統計情報、その他の補足的なデータを、をデータカタログとして指定したファイル形式(HTMLなど)でエクスポートします。
以下の形式でレポジトリのデータをエクスポートすることができます。
- HTMLファイル
- CSVファイル
- JSONファイル
Usage: dm-export-repo [options...] [repo file] [output directory]
Options:
--format <STRING> Output format. (html, json or csv)
--help Print this help.
Options for HTML format:
--tags <TAG>[,<TAG>] Tag names to be shown on the top page.
--schemas <SCHEMA>[,<SCHEMA>] Schema names to be shown on the top page.
--template <STRING> Directory name for template files.
Options for CSV format:
--encoding <STRING> Character encoding for output files.
repo file
はレポジトリファイル名です。
output directory
は出力先のディレクトリ名です。
--format
は出力するフォーマットを指定します。デフォルトは html
です。
--tags
はデータカタログとして出力する際、トップページに優先的に表示するタグ名を指定します(指定していないものはタグ名順にソートして表示)。
--schemas
はデータカタログとして出力する際、トップページに優先的に表示するスキーマ名を指定します(指定していないものはスキーマ名順にソートして表示)。
--templates
はデータカタログとしてHTMLを生成する際に使用するテンプレートファイルのあるディレクトリです。
--encoding
は出力するCSVファイルのエンコーディングを指定します。デフォルトは utf-8
です。
dm-import-csvコマンド¶
dm-import-csv
コマンドは、テーブルやカラムに関する付加的な情報をCSVファイルからレポジトリにインポートします。
以下のCSVファイルをインポートすることができます。
- テーブルメタデータCSV
- カラムメタデータCSV
- スキーマコメントCSV
- タグコメントCSV
- ビジネス用語辞書CSV
- データ検証ルールCSV
Usage: dm-import-csv [repo file] [csv file]
Options:
-E, --encoding=STRING Encoding of the CSV file (default: sjis)
--help Print this help.
repo file
はレポジトリファイル名です。
-E, --encoding
は入力となるCSVファイルのエンコーディングです。デフォルトは sjis
です。
各CSVファイルのフォーマットについては「CSVファイルフォーマット」を参照してください。
dm-import-datamappingコマンド¶
dm-import-datamapping
コマンドは、データマッピングの情報をCSVファイルからレポジトリにインポートします。
Usage: dm-import-datamapping [repo file] [csv file]
Options:
-E, --encoding=STRING Encoding of the CSV file (default: sjis)
--help Print this help.
repo file
はレポジトリファイル名です。
-E, --encoding
は入力となるCSVファイルのエンコーディングです。デフォルトは sjis
です。
CSVファイルのフォーマットについては「CSVファイルフォーマット」を参照してください。
dm-repo-cmdコマンド¶
dm-repo-cmd
コマンドは、レポジトリに保存されているデータの操作を行います。
Usage: dm-repo-cmd [options...] [repo file | connetion string] [cmd] [args...]
Commands:
init
ls
rm <db.schema.table>
Options:
--help Print this help.
init
を指定すると、レポジトリを初期化します。
ls
を指定すると、レポジトリに含まれるテーブル名の一覧を「データベース名.スキーマ名.テーブル名」の形式で取得します。
rm
をテーブル名(データベース名.スキーマ名.テーブル名)とともに指定すると、レポジトリに含まれる当該テーブルのデータを削除します。
dm-run-profilerコマンド¶
dm-run-profiler
コマンドは、データベースに接続してメタデータおよびデータプロファイルの取得を行い、その結果をレポジトリに保存します。また、あらかじめ定義したルールに従ってデータ検証を行います。
Usage: dm-run-profiler [option...] [schema[.table]] ...
Options:
--dbtype=TYPE Database type
--host=STRING Host name
--port=INTEGER Port number
--dbname=STRING Database name
--tnsname=STRING TNS name (Oracle only)
--user=STRING User name
--pass=STRING User password
--credential=STRING Credential file name (BigQuery only)
-P=INTEGER Parallel degree of table scan
-o=FILENAME Output file
--batch=FILENAME Batch execution
--enable-validation Enable record/column/SQL validations
--enable-sample-rows Enable collecting sample rows. (default)
--disable-sample-rows Disable collecting sample rows.
--skip-table-profiling Skip table (and column) profiling
--skip-column-profiling Skip column profiling
--column-profiling-threshold=INTEGER
Threshold number of rows to skip profiling
columns
--timeout=NUMBER Query timeout in seconds (default:no timeout)
--help Print this help.
--dbtype
はデータベース種別の指定です。 oracle
, mssql
, pgsql
, mysql
のいずれかを指定できます。Amazon Redshiftは pgsql
を指定した上で、ポート番号も併せて指定する必要があります。
--host
はデータベースに接続するホスト名です。
--port
はデータベースに接続するポート番号です。
--dbname
は接続するデータベースです。
--tnsname
はTNS接続を使ってデータベースに接続する際のTNS名です(Oracleのみ)。
--user
はデータベースに接続するユーザ名です。
--pass
はデータベースに接続するパスワードです。
--credential
はBigQueryに接続するためのcredentialファイル(JSON形式)です。
-P
は内部でテーブルスキャンを実行する際の並列度です。
-o
は出力するレポジトリのファイル名です。
--batch
は一括して処理する複数のスキーマ名およびテーブル名を記述したファイルです。
--enable-validation
はデータ検証の機能を有効にします。
--enable-sample-rows
はサンプルレコード(10行)の取得を有効にします。(デフォルト)
--disable-sample-rows
はサンプルレコードの取得を無効にします。
--skip-table-profiling
はテーブルおよびカラムのプロファイリングを無効にします。
--skip-column-profiling
はカラムのプロファイリングを無効にします。
--column-profiling-threshold
はカラムのプロファイリングを行うレコード数の上限を指定します。
--timeout
はクエリのタイムアウトを秒数で指定します。クエリの実行時間がこれを超えると中断され、テーブルのプロファイリングは失敗として扱われます。
dm-run-serverコマンド¶
dm-run-server
コマンドは、指定したレポジトリのデータにネットワーク経由でアクセスするためのWebサーバを起動します。
dm-run-server
コマンドを使うことによって、以下を実現することができます。
- レポジトリのデータを都度HTMLにエクスポートしなくても閲覧可能
- レポジトリのデータの変更をリアルタイムに閲覧可能
- コメントやタグなど、一部のデータをWebブラウザから変更可能
Usage: dm-run-server [repo file] [port]
Options:
--help Print this help.
repo file
はレポジトリファイル名です。
port
はWebサーバに接続するためのポート番号です。(デフォルト8080)
dm-verify-resultsコマンド¶
dm-verify-results
コマンドは、レポジトリ内に保存されたデータ検証結果を参照して、違反しているレコードがないかどうかを確認します。
違反しているレコードがある場合は終了コード 1
を、ない場合には終了コード 0
を返します。
Usage: dm-verify-results [repo file]
Options:
--help Print this help.
repo file
はレポジトリファイル名です。
CSVファイルフォーマット¶
テーブルメタデータCSV¶
テーブルメタデータをインポートするためのCSVファイルは、以下のヘッダ行を含む必要があります。
フィールド名 | 内容 | 必須? |
---|---|---|
DATABASE_NAME | データベース名 | 必須 |
SCHEMA_NAME | スキーマ名 | 必須 |
TABLE_NAME | テーブル名 | 必須 |
TABLE_NAME_NLS | テーブル名(日本語表記) | |
TABLE_COMMENT | テーブルコメント | |
TAGS | タグ(カンマ区切り) | |
TABLE_OWNER | 管理者 |
テーブルコメントはMarkdown形式で記述することができます。
DATABASE_NAME,SCHEMA_NAME,TABLE_NAME,TABLE_NAME_NLS,TABLE_COMMENT,TAGS,TABLE_OWNER
ORCL,SCOTT,CUSTOMER,顧客テーブル,,,
ORCL,SCOTT,LINEITEM,注文明細テーブル,,"TAG1,TAG2",
ORCL,SCOTT,NATION,国名マスタ,,,
ORCL,SCOTT,ORDERS,注文テーブル,,TAG1,
ORCL,SCOTT,PART,商品マスタ,,,
ORCL,SCOTT,PARTSUPP,商品・サプライヤ対応表,,TAG2,
ORCL,SCOTT,REGION,地域マスタ,,,
ORCL,SCOTT,SUPPLIER,サプライヤマスタ,,TAG2,
カラムメタデータCSV¶
カラムメタデータをインポートするためのCSVファイルは、以下のヘッダ行を含む必要があります。
フィールド名 | 内容 | 必須? |
---|---|---|
DATABASE_NAME | データベース名 | 必須 |
SCHEMA_NAME | スキーマ名 | 必須 |
TABLE_NAME | テーブル名 | 必須 |
COLUMN_NAME | カラム名 | 必須 |
COLUMN_NAME_NLS | カラム名(日本語表記) | |
COLUMN_COMMENT | カラムコメント | |
FK | 外部キー参照 |
カラムコメントはMarkdown形式で記述することができます。
DATABASE_NAME,SCHEMA_NAME,TABLE_NAME,COLUMN_NAME,COLUMN_NAME_NLS,COLUMN_COMMENT,FK
ORCL,SCOTT,CUSTOMER,C_CUSTKEY,顧客ID,,
ORCL,SCOTT,CUSTOMER,C_NAME,顧客名,,
ORCL,SCOTT,CUSTOMER,C_ADDRESS,顧客住所,,
ORCL,SCOTT,CUSTOMER,C_NATIONKEY,国名コード,,NATION.N_NATIONKEY
ORCL,SCOTT,CUSTOMER,C_PHONE,電話番号,,
ORCL,SCOTT,CUSTOMER,C_ACCTBAL,残高,,
ORCL,SCOTT,CUSTOMER,C_MKTSEGMENT,業界,,
ORCL,SCOTT,CUSTOMER,C_COMMENT,備考,,
スキーマコメントCSV¶
スキーマコメントをインポートするためのCSVファイルは、以下のヘッダ行を含む必要があります。
フィールド名 | 内容 | 必須? |
---|---|---|
DATABASE_NAME | データベース名 | 必須 |
SCHEMA_NAME | スキーマ名 | 必須 |
SCHEMA_DESCRIPTION | スキーマの短い説明 | 必須 |
SCHEMA_COMMENT | スキーマコメント | 必須 |
スキーマコメントはMarkdown形式で記述することができます。
DATABASE_NAME,SCHEMA_NAME,SCHEMA_DESCRIPTION,SCHEMA_COMMENT
ORCL,SCOTT,SCOTT用スキーマ,これはSCOTTスキーマです
タグコメントCSV¶
タグコメントをインポートするためのCSVファイルは、以下のヘッダ行を含む必要があります。
フィールド名 | 内容 | 必須? |
---|---|---|
TAG_NAME | タグ名 | 必須 |
TAG_DESCRIPTION | タグの短い説明 | 必須 |
TAG_COMMENT | タグコメント | 必須 |
タグコメントはMarkdown形式で記述することができます。
TAG_NAME,TAG_DESCRIPTION,TAG_COMMENT
タグ1,短いタグ説明,これはタグ1のコメントです
データマッピングCSV¶
データマッピングのコンセプトや詳細について知りたい場合には、以下を参照してください:
データマッピングをインポートするためのCSVファイルは、以下のヘッダ行を含む必要があります。
フィールド名 | 内容 | 必須? |
---|---|---|
CHANGE_DATE | 変更年月日 | 必須 |
DATABASE_NAME | 対象データベース名 | 必須 |
SCHEMA_NAME | 対象スキーマ名 | 必須 |
TABLE_NAME | 対象テーブル名 | 必須 |
COLUMN_NAME | 対象カラム名 | |
DATA_TYPE | データ型 | |
PK | 主キーかどうか | |
NULLABLE | NULLを許容するかどうか | |
SOURCE_DATABASE_NAME | データソースのデータベース名 | |
SOURCE_SCHEMA_NAME | データソースのスキーマ名 | |
SOURCE_TABLE_NAME | データソースのテーブル名 | |
SOURCE_COLUMN_NAME | データソースのカラム名 | |
TRANSFORMATION_CATEGORY | 変換種別 | |
TRANSFORMATION_ROLE | 変換ルール | |
UPDATED_BY | 更新者 |
TRANSFORMATION_ROLE
カラムに含まれる改行および空白スペースは、HTML表示する際には <br/>
および
に変換して表示されます。
CHANGE_DATE,DATABASE_NAME,SCHEMA_NAME,TABLE_NAME,COLUMN_NAME,DATA_TYPE,PK,NULLABLE,SOURCE_DATABASE_NAME,RECORD_ID,SOURCE_SCHEMA_NAME,SOURCE_TABLE_NAME,SOURCE_COLUMN_NAME,TRANSFORMATION_CATEGORY,TRANSFORMATION_ROLE,UPDATED_BY
2016-12-03,ORCL,SCOTT,ORDERS,O_ORDERDATE,DATE,,,ORCL,AAA01(応募),DWH_AAA,APPLICATION,APP_DT,,TO_CHAR('YYYYMMDD'),snaga
2016-12-03,ORCL,SCOTT,ORDERS,O_ORDERDATE,DATE,,,ORCL,BBB01(予約),DWH_BBB,RESERVE,REGIST_DATE,無変換,,snaga
2016-12-03,ORCL,SCOTT,ORDERS,O_ORDERDATE,DATE,,,ORCL,BBB02(キャンセル),DWH_BBB,RESERVE,CANCEL_DATE,無変換,,snaga
ビジネス用語辞書CSV¶
ビジネス用語辞書をインポートするためのCSVファイルは、以下のヘッダ行を含む必要があります。
フィールド名 | 内容 | 必須? |
---|---|---|
TERM | 単語 | 必須 |
DESCRIPTION_SHORT | 概要 | 必須 |
DESCRIPTION_LONG | 詳細 | 必須 |
OWNER | 管理者 | 必須 |
CATEGORIES | カテゴリ | |
SYNONYMS | 同義語 | |
RELATED_TERMS | 関連用語 | |
RELATED_ASSETS | 関連テーブル |
TERM,DESCRIPTION_SHORT,DESCRIPTION_LONG,OWNER,CATEGORIES,SYNONYMS,RELATED_TERMS,RELATED_ASSETS
顧客,「顧客」の定義。(概要版),"# 顧客の定義(詳細版)
* カスタマー
* サプライヤー
* アカウント
Markdownで書けます。",snaga,カテゴリ1,"カスタマー","アカウント,サプライヤー","SCOTT.CUSTOMER,SCOTT.COMPANY, SUPPLIER"
データ検証ルールCSV¶
データ検証ルールをインポートするためのCSVファイルは、以下のヘッダ行を含む必要があります。
フィールド名 | 内容 | 必須? |
---|---|---|
DATABASE_NAME | データベース名 | 必須 |
SCHEMA_NAME | スキーマ名 | 必須 |
TABLE_NAME | テーブル名 | 必須 |
COLUMN_NAME | カラム名 | 必須 |
DESCRIPTION | ルールの説明(日本語表記) | 必須 |
RULE | ルール名 | 必須 |
PARAM | 第1パラメータ | |
PARAM2 | 第2パラメータ |
データ検証ルールCSVの詳細については「データ検証ルール設定リファレンス」を参照してください。
データ検証ルール設定リファレンス¶
カラム統計情報によるカラム検証¶
データプロファイリングで収集したカラムの統計情報(最大値、最小値、NULL値数などを)を用いて検証を行います。
rows
, nulls
, min
, max
, cardinality
の各変数を使ってルールを記述することができます。
DATABASE_NAME,SCHEMA_NAME,TABLE_NAME,COLUMN_NAME,DESCRIPTION,RULE,PARAM,PARAM2
orcl,SCOTT,CUSTOMER,C_CUSTKEY,Not null,columnstat,{nulls} == 0
orcl,SCOTT,CUSTOMER,C_CUSTKEY,Unique,columnstat,{rows} == {cardinality}
orcl,SCOTT,CUSTOMER,C_CUSTKEY,Larger than zero,columnstat,{min} > 0
orcl,SCOTT,CUSTOMER,C_CUSTKEY,Min is zero,columnstat,{min} == 0
orcl,SCOTT,CUSTOMER,C_CUSTKEY,"Max is larger than 100,000",columnstat,{max} > 100000
orcl,SCOTT,CUSTOMER,C_CUSTKEY,"Max is larger than 1,000,000",columnstat,{max} > 1000000
orcl,SCOTT,CUSTOMER,C_CUSTKEY,Cardinality is 28,columnstat,{cardinality} == 28
orcl,SCOTT,CUSTOMER,C_CUSTKEY,Cardinality is larger than 28,columnstat,{cardinality} > 28
テーブルスキャンによるレコード検証¶
カラムの統計情報だけでは検証できない値の範囲やデータのパターンなどについて、テーブルの全レコードをスキャンして検証します。
各カラムの名前を変数としてルールを記述することができます。また、複数のカラムの組み合わせでルールを記述することもできます。
DATABASE_NAME,SCHEMA_NAME,TABLE_NAME,COLUMN_NAME,DESCRIPTION,RULE,PARAM,PARAM2
orcl,SCOTT,CUSTOMER,C_CUSTKEY,Number,regexp,^\d+$
orcl,SCOTT,CUSTOMER,C_CUSTKEY,"Between 0 and 1,000,000",eval,{C_CUSTKEY} > 0 and {C_CUSTKEY} < 1000000
orcl,SCOTT,CUSTOMER,C_ACCTBAL,Larger than zero,eval,{C_ACCTBAL} > 0
orcl,SCOTT,CUSTOMER,"C_CUSTKEY,C_NATIONKEY",Custkey is larger than Nationkey,eval,{C_CUSTKEY} > {C_NATIONKEY}
orcl,SCOTT,CUSTOMER,"C_CUSTKEY,C_NATIONKEY",eval,Custkey is smaller than Nation key,{C_CUSTKEY} < {C_NATIONKEY}
SQLクエリによる検証¶
指定したSQLを実行して、その結果を用いて検証を行うことができます。
SQLの出力する列を変数としてルールを記述することができます。
DATABASE_NAME,SCHEMA_NAME,TABLE_NAME,COLUMN_NAME,DESCRIPTION,RULE,PARAM,PARAM2
orcl,SCOTT,CUSTOMER,C_CUSTKEY,1 or more records,sql,select count(*) count from customer,{COUNT} > 0
orcl,SCOTT,CUSTOMER,C_CUSTKEY,zero record,sql,select count(*) count from customer,{COUNT} == 0