1.5 データ・ストア

データ・ストアは、データの格納先がデータベースか1つ以上のファイルかどうかに関係なく、データのストアに接続します。データ・ストアをプロセスのデータ・ソースとして使用することや、プロセスの結果をデータ・ストアにエクスポートすること、あるいはこのどちらも実行することが可能です。

通常は、サーバー経由でデータ・ストアに接続することをお薦めします。これは、ファイルへの接続時にサーバーがそのファイルに必ずアクセスできるように、サーバー・ランディング領域にファイルが存在している必要があることを意味します。「ファイルのダウンロード」タスクまたはEDQのSFTPインタフェースを使用すると、外部の場所からサーバー・ランディング領域にファイルをダウンロードして処理できます。また、「ファイルのアップロード」タスクを使用すると、処理後に、サーバー・ランディング領域のファイルを外部の場所に転送することが可能です。ただし、クライアント接続を使用してデータをサーバーにプルすることも可能です。詳細は、「クライアント側のデータ・ストア」を参照してください。

ノート:

サーバーでは、データのインポートやエクスポートに使用するクライアント接続を使用できないため、クライアント側のデータ・ストアからスナップショットをジョブに追加することや、クライアント側のデータ・ストアにエクスポートを追加することはできません。

EDQでは、次のタイプのデータ・ストアへのネイティブ接続がサポートされています:

データベース

  • Apache Hive

  • AWS Redshift

  • Cassandra

  • DB2

  • DB2 for i5/OS (詳細は、次を参照)

  • JNDI Datasources

  • Microsoft Access

  • Microsoft SQL Server

  • MySQL

  • Oracle

  • Oracle Autonomous Database (ADWまたはATP)

  • ウォレットがアップロードされたOracle Autonomous Database (ADWまたはATP)

  • PostgreSQL

  • Snowflake

  • Sybase

  • Sybase Adaptive Server Enterprise

  • Sybase IQ

  • Sybase SQL Anywhere

  • Teradata Database

データ・ファイル

  • デリミタ付きテキスト・ファイル

  • 区切り文字テキスト・ファイル・ディレクトリ

  • 固定幅テキスト・ファイル

  • Apache Avroファイル

  • Apache Parquet

  • JSONファイル

  • JSON行ファイル

XMLファイル

  • XMLおよびスタイルシート
  • 単純なXMLファイル

MS Officeファイル

  • Microsoft Access
  • Microsoft Excel

システム情報

  • ケース
  • ユーザー・リスト
  • イベント・ログ

アプリケーション

  • Oracle Service Cloud

Other

  • JDBC接続

  • DBファイル(*.jmp)

ノート:

  • JNDIデータソース・オプションを使用して、WebLogicなどのアプリケーション・サーバー上の構成済の接続に接続します。

  • データをCassandraにエクスポートする際、EDQでは、Cassandraデータベースに新しい表を作成できません。ただし、既存の表にエクスポートすることはできます。

  • Oracle Service Cloudデータ・ストアは、サーバーでのみサポートされます。サービス・クラウド・データ・ストアを初めて登録した後、使用可能な表のリストが新規スナップショット・ウィザードで使用可能になるまで数分かかることがあります。Oracle Service Cloudデータ・ストアでは、データ抽出にのみ適したドライバが使用されるため、このタイプのデータ・ストアのデータをエクスポートすることはできません。アプリケーションのデータの更新は、「外部Webサービスの呼出し」プロセッサを使用して行うことがよくあります。

OracleデータベースへのEDQの接続

デフォルトでは、EDQは直接JDBC接続を使用してOracleデータベースに接続します。アプリケーション・サーバー上で構成されているJNDI接続を介してOracleに接続したり、tnsnames.oraファイルまたはLDAPサーバーで指定された接続文字列を介して接続を使用するようにEDQサーバーを構成することもできます。

この代替方法は、Oracle ExadataなどのRAC対応データベースで論理スキーマに接続する場合に便利です。tnsnamesまたはLDAPを介してOracleに接続できるようにEDQを構成する方法の詳細は、EDQドキュメント・ライブラリの『Oracle Enterprise Data Qualityの管理』ガイドを参照してください。

DB2 for i5/OSへのEDQの接続

DB2 for i5/OSデータベースにEDQを接続するには、DB2 for iSeriesドライバをダウンロードします。

次の手順を実行します。

  1. http://jt400.sourceforge.net/からToolbox for Java/JTOpenをダウンロードします

  2. ダウンロードしたファイルを抽出します。ファイル名はjtopen_N_n.zip形式で、Nとnはバージョン番号の1桁目と2桁目を表します。

  3. oedq_local_home/dbconnectorsディレクトリにdb2i5というフォルダを作成します。

  4. ステップ2で抽出したzipファイルからdb2i5フォルダにjt400.jarファイルをコピーします。

  5. EDQ (Datanomic)アプリケーション・サーバーを再起動します。

TeradataデータベースへのEDQの接続

EDQをTeradataデータベースに接続するには、JDBCドライバjarをダウンロードします。

次の手順を実行します。

  • Teradataからドライバjar terajdbc4.jarおよびtdgssconfig.jarをダウンロードします。

    ノート:

    tdgssconfig.jarは、Teradata Data Connectorバージョン16.20.00.11以降のドライバには含まれていません。ただし、これより前のバージョンには現在も必要です。
  • oedq_local_home/dbconnectorsディレクトリにteradataという名前のディレクトリを作成します。
  • この新規ディレクトリにjarをコピーします。
  • EDQアプリケーション・サーバーを再起動します。

テキスト・ファイル

  • テキスト・ファイル(CSVファイルまたはその他のデリミタ付きテキスト・ファイル)。

  • デリミタ付きテキスト・ファイルのディレクトリ。

  • 固定幅テキスト・ファイル。

  • JSONファイル。

XMLファイル

  • スタイルシート付きXML (XMLファイルをEDQが認識するフォーマットに変換する方法を定義したXSLTスタイルシート・ファイル付きのXMLファイル)

  • 単純なXMLファイル(単純な2レベル構造のXMLファイルで、最上位レベルのタグはエンティティを表し、下位レベルのタグはそのエンティティの属性を表します。Microsoft AccessからエクスポートしたXMLがその一例です。)

Accessデータベースへの接続

EDQは、純粋なJavaソリューションを使用してAccessデータベースに接続し、すべてのプラットフォームで使用可能です。SQLエントリやカスタムWHERE句などの高度な機能はサポートされません。

Excelデータ・ストアへのEDQの接続

Excelデータ・ストアには、サーバーまたはクライアントから接続できます。

EDQをExcelデータ・ストアに接続するには、次の接続の詳細を構成します:

  • サーバー作業領域のファイル - サーバー・ランディング領域で使用可能なファイルと、EDQに接続して処理(読取りまたは書込み)するファイルを指定します。デフォルトの場所は、EDQで処理するファイルが存在するサーバー上の場所です。

    ノート:

    このオプションを使用できるのは、サーバー側の接続のみです。

    クライアント側の接続では、処理(読取りまたは書込み)するファイルをローカル・コンピュータから選択します。選択したファイル・パスは、「ファイル」テキスト・ボックスに表示されます。詳細は、「クライアント側のデータ・ストア」を参照してください。

  • プロジェクト固有のランディング領域を使用 - このチェック・ボックスは、処理したファイルに、前述のデフォルトの場所ではなく、サーバー上のプロジェクト固有のランディング領域を使用する場合に選択します。

    ノート:

    このオプションを使用できるのは、サーバー側の接続のみです。
  • エクスポート時に常にファイル(ストリーム・データ)を上書き - このチェック・ボックスは、エクスポート時に必ず、Excelファイル(ストリーム・データ)を上書きする場合に選択します。ストリーミング・モードでは、はるかに少ないメモリーで大規模なXLSXファイルの書込みを行えますが、ワークシートが保持されず、追加モードもサポートされません。
  • Excelスプレッドシートに属性タイプを設定するには、「ワークシートの構成」をクリックします。これにより、次の属性タイプを設定できます:
    • 文字列
    • 数値
    • 日付
    • 選択したワークシートの最初の行を、EDQに列名を作成するためのヘッダーとして使用する場合は、「1行目はヘッダーです」チェック・ボックスを選択します。

    必要な属性を設定したら、「OK」をクリックします。

  • 「テスト」をクリックして、新しいExcelデータ・ストアへの接続を確認します。
  • 接続のテストに成功したら、「OK」をクリックします。

これで、新しいExcelデータ・ストアが構成され、プロジェクト・ブラウザに表示されます。または、データ・ストアをプロジェクト間で共有する場合、前述と同じ方法でシステム・レベル(特定のプロジェクトの外側)で作成できます。

Other

EDQでは、JDBCなどの標準を使用したその他データ・ストアへの接続がサポートされています。

JDBC URLを使用してデータ・ストアに接続する際に役立つ情報は、OracleのJDBC FAQを参照してください。

データ・ストアへの接続詳細はEDQサーバーに保存されます。このサーバーおよび関連プロジェクトへのアクセス権があるユーザーは、そのデータ・ストアを使用できます。

Oracle Autonomous Database (ADWまたはATP)への接続

Oracle Autonomous Databaseは、完全に管理された事前構成済のデータベース環境で、Autonomous Transaction Processing (ATP)とAutonomous Data Warehouse (ADW)という2つのワークロード・タイプがあります。

ADWまたはATPに接続するには、セキュリティを強化するためのウォレット・ファイルと、接続情報が含まれるtnsnames.oraファイルが必要です。EDQには、ADWまたはATP用のデータ・ストアを作成するオプションが2つあり、必要なファイルの指定に使用するプロセスによって異なります。

Oracle Autonomous Database (ADWまたはATP)

このタイプのデータ・ストアを選択すると、EDQがOCI REST APIを使用して、ウォレット・ファイルとtnsnames.oraファイルが自動的にダウンロードされます。

データ・ストアを構成するには、「サーバー/データベース」カテゴリで「Oracle Autonomous Database (ADWまたはATP)」を選択し、次の情報を入力します:

  1. インスタンスのOCID - データベース・インスタンスのOCID。

    たとえば、

    ocid1.autonomousdatabase.oc1.phx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    ノート:

    Autonomous DatabaseのOCIDは、OCIコンソールからコピーできます。
  2. OCI資格証明 - REST APIに接続してウォレットをダウンロードできるユーザーの格納済資格証明。ユーザーには、ウォレットを取得するための最低限の権限が必要で、データベース上の情報を読み取れる必要があります。これらの権限は、次のOCIポリシー・ステートメントを使用して取得できます:
    Allow group MYGROUP to manage autonomous-databases in compartment MYCOMP where request.operation='GenerateAutonomousDatabaseWallet'
    Allow group MYGROUP to inspect autonomous-databases in compartment MYCOMP

    グループ名とコンパートメントを、ご使用のテナンシの正しい値に置き換えます。

    OCIコンピュート・インスタンスでEDQを実行している場合は、インスタンス自体に必要な権限を付けて構成できます。OCIのドキュメント『インスタンスからのサービスのコール』にリストされている指示に従い、「OCIインスタンス・プリンシパル認証」を資格証明として選択します。インスタンス認証を使用している場合は、格納済資格証明を作成する必要はありません。

    ノート:

    EDQインスタンスをOracle Cloud Marketplaceからプロビジョニングした場合は、前述のポリシー・ステートメントがすでに設定されている可能性があります。これらのステートメントは、Autonomous Databaseを検出し、EDQリポジトリとして設定する際に必要です。
  3. リソース・レベル - データベースに対する接続に使用するリソース・レベル(低、中、高)。EDQの一般的なユース・ケースでは、デフォルトの設定である「低」をお薦めします。
  4. 「DBユーザー」および「DBパスワード」 - データベース・ユーザーの資格証明。
  5. スキーマ - データベース・スキーマ。これを空白のままにすると、ユーザーのデフォルトのスキーマが使用されます。
  6. 「プロキシ・ホスト」および「プロキシ・ポート」 - EDQサーバーが実行されているシステムで、OCIサービスへのアクセスにプロキシ・サーバーが必要な場合は、このフィールドに情報を入力します。EDQが実行されているOCIコンピュート・インスタンスからデータベースに直接アクセスできない場合は、プロキシのかわりに、サービス・ゲートウェイを設定することをお薦めします。詳細は、「Oracle Servicesへのアクセス: サービス・ゲートウェイ」を参照してください。構成が完了したら、「テスト」をクリックして接続を検証します。

    ノート:

    プロキシが必要で、プロキシ情報を入力した場合は、エラーが生成されるまでに長い時間がかかり、極端な場合には、クライアントが切断されることがあります。

ウォレットがアップロードされたOracle Autonomous Database (ADWまたはATP)

このタイプのデータ・ストアを使用するには、ADWまたはATPの管理コンソールからウォレット情報をダウンロードし、ウォレットとtnsnames.oraファイルをEDQランディング領域にアップロードする必要があります。

ウォレット・ファイルをダウンロードするには、次のステップを実行します:

  1. OCIコンソールにログインし、使用しているADWまたはATPインスタンスに移動します。
  2. 「サービス・コンソール」ボタンをクリックし、「管理」を選択します。
  3. 「クライアント資格証明(ウォレット)のダウンロード」をクリックします。
  4. パスワードを入力して確認し、「ダウンロード」をクリックします。ダウンロードが完了したら、パスワードを再度使用することはありません。
  5. 結果のZIPファイルを保存します。

ウォレットのZIPをダウンロードしたら展開し、cwallet.ssoおよびtnsnames.oraファイルを、EDQランディング領域のフォルダにアップロードします。EDQに組み込まれているSFTPサーバーを使用しても、ファイルを直接サーバーにコピーしてもかまいません。ZIP内の他のファイルは不要です。

ノート:

EDQが実行されているサーバーで、データベースへのアクセスにプロキシが必要な場合には、ランディング領域にアップロードする前に、tnsnames.oraファイルを手動で編集し、プロキシを指定する必要があります。プロキシの構成手順は、「HTTPプロキシでのJDBC Thin接続」を参照してください。

データ・ストアを構成するには、「サーバー/データベース」カテゴリで「ウォレットがアップロードされたOracle Autonomous Database (ADWまたはATP)」を選択し、次の情報を入力します:

  1. サービス名 - tnsnames.oraファイルにリストされているデータベース・サービス名。これは、DBNAME_LEVELのようになりますが、DBNAMEはデータベース名で、LEVELはリソース・レベルです。EDQの一般的なユース・ケースでは、レベルを「低」に構成することをお薦めします。
  2. tnsnames.oraを含むランディング領域フォルダ - アップロードされたcwallet.ssoファイルとtnsnames.oraファイルが格納されているランディング領域のフォルダ。ファイルがランディング領域の最上位レベルにある場合、このフィールドは空白のままにします。
  3. 「ユーザー名」および「パスワード」 - データベース・ユーザーの資格証明。
  4. スキーマ - データベース・スキーマ。このフィールドを空白のままにすると、EDQでは、ユーザーのデフォルトのスキーマが使用されます。
構成が完了したら、「テスト」をクリックして接続を検証します。

ノート:

プロキシが必要で、プロキシ情報を入力した場合は、エラーが生成されるまでに長い時間がかかり、極端な場合には、クライアントが切断されることがあります。

AWS RedshiftへのEDQの接続

AWS Redshiftは、高速でシンプルなコスト効率のよいデータ・ウェアハウス・サービスです。EDQはローカル・データベース・コネクタをXMLファイルおよびAWSが使用可能にする標準JDBCドライバとともに使用してAWS Redshiftに接続します。

AWS Redshift接続を有効にするには、次の手順を使用します。

  1. JDBC 4.2 no-sdkドライバをS3からダウンロードします。

    https://docs.aws.amazon.com/redshift/latest/mgmt/configure-jdbc-connection.html

  2. oedq.local.home/dbconnectorsディレクトリに"redshift"という名前のディレクトリを作成し、この新規ディレクトリにjarファイルをコピーします。Redshiftコネクタが使用可能になります。

JSONデータ・ストアへのEDQの接続

EDQは、JSONファイル内のオブジェクトの配列からデータを読み取ることができます。配列は、ファイルの最上位レベルにある場合があります。または、属性パスを介してアクセスできます。

オブジェクトでは文字列、数値、ブール値(trueまたはfalse)およびnull値がサポートされます。ネストされたオブジェクトと配列は無視されます。スナップショット定義の場合、列名は、入力配列内の最初の1000個(またはそれより少ない) JSONオブジェクトで一意の属性名を検索することで決定されます。エクスポートの場合、EDQ日付属性は"2001-10-17T23:00:00.000Z"などのUTCタイム・ゾーンのISO-8601日時文字列に変換されます。

JSONデータ・ストア・タイプは、新規データ・ストア・ウィザードの「テキスト・ファイル」カテゴリにあります。ファイルは、サーバーのランディング領域またはクライアント・コンピュータ上のローカル・ファイルから読み取ることができます。

次のオプションは、EDQをJSONデータ・ストアに接続する場合にのみ使用可能です。

  • 配列へのJSONパス: オブジェクト配列がファイルの最上位レベルにない場合は、配列に到達するために必要な属性を入力する必要があります。属性はドット(.)で区切られます。

    たとえば、次のJSONファイルについて考えます。

    { "item": 
       { "list": [
          { "a" : 1, "b": "string", "c": true},
          { "a" : 1, "b": "string", "c": true}
         ]
       }
    }
    

    この場合、JSONパスはitem.listです。

  • すべての値を文字列として返します: この場合、最初の1000オブジェクトのスキャンで見つかった値に関係なく、すべての列が文字列として定義されます。これは、JSON属性に数値または文字列を含めることができる場合に必要になることがあります。最初の1000オブジェクトに数値のみが含まれていた場合、EDQでは数値列が返されます。ただし、最初の1000個より後のオブジェクトの属性に数値以外の値が含まれていた場合は、nullが返されます。このオプションを設定することは、すべての値が文字列として想定されることを意味します。

JSON行データ・ストアへのEDQの接続

JSON行は、改行区切りのJSONとも呼ばれ、ファイルの各行が1つのJSON配列またはオブジェクトであるJSONのバリアントです。JSON行ファイルは、Google Big Queryなど、クラウド・サービスと相互にデータ転送する際に使用されることが多いです。形式の詳細は、JSON行のドキュメントを参照してください。

EDQでJSON行ファイルを読み取る際、構造は、最初の1000行をスキャンして導出されます。行にJSON配列が含まれる場合、属性にはColumn1、Column2などの名前が付けられます。行にJSONオブジェクトが含まれる場合は、オブジェクトから属性の名前がコピーされます。ファイルに、配列とオブジェクトを混在させることはできません。JSON行ファイルにエクスポートする際は、配列またはオブジェクトの形式を選択する必要があります。

JSON行ファイルからの読取りとJSON行ファイルへの書込みを行うようEDQデータ・ストアを構成するには、「クライアント」または「サーバー・データ・ファイル」カテゴリから「JSON行ファイル」を選択し、次の情報を入力します:

  1. サーバー作業領域のファイル - サーバー側接続の場合は、EDQランディング領域のファイルのパスを入力します。

    または

    ファイル - クライアント側接続の場合は、ローカル・コンピュータのファイルを参照します。

  2. レコードのエクスポート形式 - 「配列」または「オブジェクト」を選択し、JSON行ファイルに書き込む際の各行の形式を定義します。
  3. すべての値を文字列として返します - この場合、最初の1000行のスキャンで見つかった値に関係なく、すべての列が文字列として定義されます。これは、JSON属性に数値または文字列を含めることができる場合に必要になることがあります。最初の1000行に含まれているのが数値のみの場合、EDQでは数値列が返されます。さらに、最初の1000個より後のオブジェクトの属性に数値以外の値が含まれていた場合は、nullが返されます。このオプションを設定することは、すべての値が文字列として想定されることを意味します。
  4. プロジェクト固有のランディング領域を使用 - その他のサーバーベースのファイル・データ・ストアと同様、このオプションは、現在のプロジェクトに固有のランディング領域ディレクトリにファイルがある場合に選択します。

行の形式の例:

  • 配列としてエクスポート -
    [1, "Othello", "Shakespeare"]
    [2, "The Importance of Being Earnest", "Wilde"]
  • オブジェクトとしてエクスポート -
    {"id": 1, "title": "Othello", "author": "Shakespeare"}
    {"id": 2, "title": "The Importance of Being Earnest", "author": "Wilde"}

Kerberos認証を使用したApache HiveへのEDQの接続

  • EDQサーバー構成 -
    EDQをApache Hiveに接続する場合、EDQを実行するサーバーでKerberosがサポートされるように構成する必要があります。これには、Hiveで使用されているレルムを含む、有効なKerberos構成ファイルが必要です。構成ファイルのデフォルトの場所は次のとおりです:
    For Linux: /etc/krb5.conf
    For Solaris: /etc/krb5/krb5.conf
    For Windows: \Windows\krb5.ini

    詳細は、「Kerberos要件」を参照してください。

  • 接続の設定-

    Kerberosを使用してEDQからHiveへの接続を設定するには、次に示す接続の詳細を構成します:

    1. データベース・ホスト - Hiveサーバーのアドレス。例 - hive001.example.com
    2. ポート - Hiveサーバーのリスニング・ポート。
    3. ユーザー名およびパスワード - Hive接続で有効化されていたKerberosユーザー(プリンシパル)のユーザー名とパスワード。
    4. Kerberosサービス - Hiveサーバーに関連付けられているKerberosプリンシパル名。これは通常、hive/hostname@REALMで、Hiveサーバーのhive-site.xml構成ファイルに、hive.server2.authentication.kerberos.principalと定義されています。「Kerberosサービス」フィールドにHiveサービス名を入力します。例: - hive/hive001.example.com@EXAMPLE.COM。この例では、KerberosレルムはEXAMPLE.COMであるとみなされます。
    5. スキーマ - データベースのデータへのアクセスに使用するスキーマを入力します。

      ノート:

      ユーザーのデフォルトのスキーマを使用する場合は、このフィールドを空白のままにしてかまいません。
  • トラブルシューティング -

    次に、Kerberosを使用したHive接続の構成で発生する可能性がある一般的なエラーを示します:

    1. Kerberosデータベースにクライアントが見つからない - ユーザー名またはKerberosサービス名が正しくないことを示しています。Kerberos/Hiveの管理者に、正しい値を確認してください。
    2. チェックサムが失敗する - パスワードが正しくないことを示しています。
    3. 認証前の情報が無効だった: パスワードが正しくないことを示しています(このエラーは、Windows Active Directoryを使用している場合に発生します)。

Apache Avro™データ・ストアへのEDQの接続

Apache Avro™は、データのシリアライズと格納の形式で、多くの場合、ビッグ・データ・システムと組み合せて使用されます。Avroのインポート/エクスポート形式は、Google Big Queryでサポートされています。Avroの各ファイルには、正確なデータ形状を説明するスキーマが埋め込まれています。これは、CSVなどの形式とは異なり、データからデータ型を推測する必要がないということです。

EDQデータ・ストアの実装は、Apache Avro™ 1.10.0仕様に基づいています。形式の詳細は、Apache Avroのドキュメントを参照してください。

EDQでは、Avroの圧縮ファイルがサポートされています。スナップショットについては、EDQでは、次のコーデックがサポートされています:

  • deflate
  • bzip2
  • snappy
  • xz
  • zstandard

エクスポートについては、サポートされているコーデックはdeflateのみです。

サポートされているデータ・ストア

EDQデータ・ストアで使用するAvroファイルのスキーマでは、データをレコード・タイプとして定義する必要があります。レコード・フィールド名は、EDQスナップショットとエクスポートの属性にマップされます。

サポートされるフィールド・タイプは、null、boolean、int、long、float、double、string、enumおよびunionです。

  • boolean値は、値が0または1の数値にマップされます。
  • enum型は文字列にマップされます。
  • union型がサポートされるのは、それぞれの構成型がサポートされていて、各型が同じEDQタイプにマップされている場合です。たとえば、stringlong型が指定されたunionはサポートされていません。
  • timestamp-millistimestamp-micros、local-timestamp-millisまたはlocal-timestamp-microsの論理型が関連付けられたlong型は、EDQで日付値にマップされます。

また、関連付けられている論理decimal型では、bytesおよびfixed型がサポートされています。

Apache Avro™へのエクスポート

Avroレコード・フィールド名で名前に使用できるのは、文字、数字、アンダースコアに制限されています。EDQ属性名は、空白をアンダースコアに置き換え、その他の無効な文字を削除して、Avroフィールド名にマップされます。マッピングが原因で名前が重複する場合は、重複を解決するために数字の接尾辞が追加されます。

たとえば、EDQ名"increase %""increase $"は、"increase_""increase_2"にマップされます。

EDQでは数値のデータ型と日付の型は1つずつですが、Avroでは、それぞれに様々な形式を使用できます。Avroデータ・ストアの定義では、数値に使用する型(int、longまたはdouble)の選択と、日付に使用する型(Timestamps (timestamp-micros論理型が関連付けられているlong)またはStrings (タイムゾーンがUTCのISO-8601形式))の選択が可能です。すべての値は、nullとraw型のオプションがあるAvro union型として保存されます。

また、Avroスキーマ・ファイルを指定して、出力タイプの制御を強化することも可能です。スキーマはJSONファイルに定義され、通常、拡張子は.avscです。たとえば、アイテム・データのシンプルなエクスポート用のスキーマは、次のようになります:

{
  "type": "record",
  "name": "items",
  "fields": [
    { "name": "id",          "type": "int" },
    { "name": "code",        "type": "string" },
    { "name": "description", "type": [ "null", "string" ] },
    { "name": "cost",        "type": "double" },
    { "name": "available",   "type": { "type": "long", "logicalType": "local-timestamp-micros" }},
    { "name": "taxexempt",   "type": "boolean" }
  ]
}

NULL値を含む可能性がある任意の属性は、null、または可能性がある型の1つとしてnullを含むunionとして定義する必要があります。上の例で、フィールドdescriptionを参照してください。nullがサポートされていないフィールドにNULL値がエクスポートされた場合や、nullのみがサポートされているフィールドにNULL以外の値がエクスポートされると、エラーが発生します。

スキーマには定義されているが、エクスポートの対象ではないフィールドでは、nullをサポートする必要があります。

Avroへのエクスポートが追加モードで実行されていて、出力ファイルが存在し、空ではない場合、スキーマはそのファイルから読み取られ、データ・ストアで定義されているスキーマは無視されます。

Apache Avro™データ・ストアの定義

Avroファイルからの読取りとAvroファイルへの書込みを行うようEDQデータ・ストアを構成するには、「クライアント」または「サーバー・データ・ファイル」カテゴリから「Apache Avro」を選択し、次の情報を入力します:

  1. サーバー作業領域のファイル - サーバー側接続の場合は、EDQランディング領域のファイルのパスを入力します。

    または

    ファイル: クライアント側接続の場合は、ローカル・コンピュータのファイルを参照します。

  2. エクスポートするスキーマ・ファイル - EDQでエクスポートに使用されるデフォルト・スキーマをオーバーライドする場合は、使用するAvroスキーマ・ファイルのランディング領域のパス(サーバー)、またはファイル名(クライアント)を入力します。
  3. 数値のエクスポート形式 - 数値をエクスポートする際に使用するAvroの型を選択します。スキーマ・ファイルが定義されている場合や、既存のファイルに追加する場合、EDQでは、ユーザーの選択内容は無視されます。
  4. 日付のエクスポート形式 - 日付のエクスポートに使用する形式を選択します。スキーマ・ファイルが定義されている場合や、既存のファイルに追加する場合、EDQでは、ユーザーの選択内容は無視されます。
  5. エクスポート時に圧縮 - このオプションを有効化すると、deflateコーデックで圧縮されたデータをエクスポートできます。
  6. プロジェクト固有のランディング領域を使用 - その他のサーバーベースのファイル・データ・ストアと同様、このオプションは、現在のプロジェクトに固有のランディング領域ディレクトリにファイルがある場合に選択します。

Apache Parquetデータ・ストアへのEDQの接続

ノート:

この機能が適用されるのは、EDQ 12.2.1.4.3以降のリリースです。

EDQでは、Apache Parquetファイルの読取りが可能なデータ・ストア・タイプがサポートされています。これらのファイルはHiveシステムと関連付けられていることが多く、効率のよい列ベースの入力が可能です。Apache Sparkのようなシステムでは、入力ファイルを処理して、Parquet出力を生成できます。新しいデータ・ストアでは、複数のファイルを1つのソースとして、ランディング領域から読み取れます。

次のことに注意してください:
  • ネストしている列: Parquet列にネスト構造がある場合、データ・ストア属性は、名前がコロンで連結されて形成されます。たとえば、roll_num:minroll_num:maxroll_num:meanroll_num:countのようになります。

    (Parquetの繰返しメカニズムを使用して)複数の値を格納できる列はサポートされていないため、スナップショット定義には表示されません。

  • 圧縮: Parquetファイルの圧縮は、次のスキームでサポートされています:
    • GZIP
    • SNAPPY
    • BROTLI
    • LZ4_RAW

    AWSやGCPなどのクラウド・プロバイダでは、GZIPまたはSNAPPYでParquetファイルを生成できます。

  • 暗号化: Parquetファイルの暗号化はサポートされていません。

Apache Parquetデータ・ストアの定義

Parquetファイルからの読取りとParquetファイルへの書込みを行うようEDQデータ・ストアを構成するには、「クライアント」または「サーバー・データ・ファイル」カテゴリから「Apache Parquet」を選択し、次の情報を入力します:

  1. サーバー作業領域のファイル - サーバー側接続の場合は、EDQランディング領域のファイルのパスを入力します。

    ファイルの場所はランディング領域のディレクトリにすることが可能で、data-*.parquetなどのファイル・パターンを使用できます。一致するファイルは、アルファベット順に読み取られます。スキーマ定義は、すべてのファイル中で一意にする必要があります。

  2. 非UTC日付のタイム・ゾーン - タイム・ゾーンの設定は、ローカル(isAdjustedToUTC = false)とマークされているParquet列に使用されます
  3. プロジェクト固有のランディング領域を使用 - その他のサーバーベースのファイル・データ・ストアと同様、このオプションは、現在のプロジェクトに固有のランディング領域ディレクトリにファイルがある場合に選択します。

SnowflakeへのEDQの接続

ノート:

この機能が適用されるのは、EDQ 12.2.1.4.2以降のリリースです。
  • ドライバのインストール -

    Snowflake JDBCドライバの最新バージョンをダウンロードします。詳細は、https://docs.snowflake.com/en/user-guide/jdbc-download.htmlを参照してください。ダウンロードが完了したら、jarファイルを、EDQのローカルの構成ディレクトリにあるdbconnectors/snowflakeディレクトリにコピーします。存在しない場合は、このフォルダを作成します。EDQサーバーを再起動します。Snowflakeデータ・ストア・タイプを使用できるようになります。

  • 接続の設定-

    EDQからSnowflakeへの接続を設定するには、次に示す接続の詳細を構成します:

    1. アカウント - Snowflakeアカウント(必須)
    2. データベース: データベース名(必須)
    3. ウェアハウス: ウェアハウス名
    4. スキーマ: データベース・スキーマ。スキーマ値を入力すると、スナップショットの構成時に表示される表の数を減らせます。

      ノート:

      ユーザーのデフォルトのスキーマを使用する場合は、このフィールドを空白のままにしてかまいません。
    5. ユーザー名: Snowflakeユーザーのユーザー名。
    6. パスワード: Snowflakeユーザーのパスワード。
    7. 「プロキシ・ホスト」および「プロキシ・ポート」: Snowflakeサーバーへのアクセスにプロキシが必要な場合は、これらのフィールドに詳細を入力します。

      ノート:

      プロキシが必要な場合に、これらのフィールドに詳細を入力しないと、接続の確立を試行する際に、Snowflakeドライバが無期限に待機することになります。