SAP Data Services を介した SAP システムから Google BigQuery へのデータのエクスポート

ここでは、SAP Data Services(DS)を使用して、SAP アプリケーションまたはその基盤となるデータベースから BigQuery にデータをエクスポートする方法について説明します。

データベースは、SAP HANA データベースなど、SAP でサポートされているデータベースです。

このガイドの例では、SQL Anywhere データベースのテーブルをエクスポートしますが、このテーブルを使用して、SAP アプリケーションとデータベースの両方のレイヤから BigQuery への他の種類のオブジェクトのエクスポートを設定できます。

データ エクスポートを使用して、SAP データをバックアップしたり、SAP システムのデータを BigQuery の他のシステムの消費者データと統合して機械学習から分析情報を導き出したりするなど、ペタバイト規模のデータ分析を行うことができます。

これらの手順は、SAP Basis、SAP DS、Google Cloud の構成に関する基本的な経験がある SAP システム管理者を対象としています。

アーキテクチャ

レプリケーションのフローは SAP アプリケーションまたはデータベースから始まり、SAP Data Services を介して BigQuery に渡されます。

SAP Data Services は、SAP アプリケーションまたは基盤となるデータベースからデータを取得して BigQuery 形式との互換性を保持するようデータを変換し、BigQuery にデータを移動する読み込みジョブを開始します。読み込みジョブが完了すると、BigQuery でデータを分析できるようになります。

エクスポートは、エクスポート時のソースシステム内のデータのスナップショットです。SAP Data Services がいつエクスポートを開始するかは、ユーザーが制御します。ターゲット BigQuery テーブルの既存のデータは、エクスポートされたデータによって上書きされます。エクスポートが完了すると、BigQuery のデータはソースシステムのデータと同期されなくなります。

このシナリオでは、SAP ソースシステム、SAP Data Services は、Google Cloud 内または外で実行していると想定できます。

コア ソリューション コンポーネント

SAP Data Services を使用して SAP アプリケーションまたはデータベースから BigQuery にデータをエクスポートするには、次のコンポーネントが必要です。

コンポーネント 必要なバージョン
SAP アプリケーション サーバー スタック R/3 4.6C 以降の ABAP ベースの SAP システム このガイドでは、アプリケーション サーバーとデータベース サーバーを別々のマシンで実行している場合でも、ソースシステムと総称されます。

適切な権限で RFC ユーザーを定義する

省略可: ロギング テーブル用に個別のテーブル スペースを定義する
Database(DB)システム SAP Product Availability Matrix(PAM)でサポート対象として表示されている DB バージョン。PAM に表示されている SAP NetWeaver スタックの制限が適用されます。
SAP Data Services SAP Data Services 4.2 SP1 以降
BigQuery なし

料金

BigQuery は、Google Cloud の課金対象のコンポーネントです。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを出すことができます。

前提条件

次の手順は、SAP アプリケーション システム、データベース サーバー、SAP Data Services がインストール済みで、通常の操作が行えるよう構成されていることを前提としています。

計画された構成が SAP ライセンス要件を遵守していることを SAP に確認してください。SAP アプリケーション システムからエクスポートするか、基盤となるデータベースからエクスポートするかによって要件が異なる場合があります。

Google Cloud で Google Cloud プロジェクトを設定する

BigQuery を使用するには、Google Cloud プロジェクトが必要です。

Google Cloud プロジェクトを作成する

  1. Google Cloud コンソールに移動し、設定ウィザードの指示に従って登録します。

    Cloud コンソールに移動

  2. 左上隅にある Google Cloud ロゴの横のプルダウンをクリックして、[新しいプロジェクト] を選択します。

  3. プロジェクトに名前を付けて、[作成] をクリックします。

  4. プロジェクトが作成されたら(右上に通知が表示されます)、ページを更新します。

API の有効化

BigQuery API を有効にします。

BigQuery API に移動

サービス アカウントを作成する

サービス アカウント(特にそのキーファイル)は、SAP DS を BigQuery に対して認証するために使用されます。キーファイルは、後でターゲット データストアを作成するときに使用します。

  1. Google Cloud コンソールで、[サービス アカウント] ページに移動します。

    [サービス アカウント] に移動

  2. Google Cloud プロジェクトを選択します。

  3. [サービス アカウントを作成] をクリックします。

  4. サービス アカウント名を入力します。

  5. [作成して続行] をクリックします。

  6. [ロールを選択] リストで、[BigQuery] > [BigQuery データ編集者] の順に選択します。

  7. [別のロールを追加] をクリックします。

  8. [ロールを選択] リストで、[BigQuery] > [BigQuery ジョブユーザー] の順に選択します。

  9. [続行] をクリックします。

  10. 必要に応じて、他のユーザーにサービス アカウントへのアクセス権を付与します。

  11. [完了] をクリックします。

  12. Google Cloud コンソールの [サービス アカウント] ページで、作成したサービス アカウントのメールアドレスをクリックします。

  13. サービス アカウント名で [キー] タブをクリックします。

  14. [鍵を追加] プルダウン メニューをクリックして、[新しい鍵を作成] を選択します。

  15. キーのタイプとして [JSON] を指定します。

  16. [作成] をクリックします。

  17. 自動的にダウンロードされたキーファイルを安全な場所に保存します。

SAP システムから BigQuery へのエクスポートの構成

このソリューションの構成には、大きく分けて次の手順が含まれます。

  • SAP Data Services の構成
  • SAP Data Services と BigQuery 間のデータフローの作成

SAP Data Services の構成

データサービス プロジェクトを作成する

  1. SAP Data Services Designer アプリケーションを開きます。
  2. [Project] > [New] > [Project] の順に移動します。
  3. [Project name] フィールドに名前を指定します。
  4. [Create] をクリックします。左側の Project Explorer にプロジェクトが表示されます。

ソース データストアを作成する

SAP Data Services のソース データストアとして、SAP アプリケーション システムまたはその基盤となるデータベースを使用できます。エクスポートできるデータ オブジェクトのタイプは、データストアとして SAP アプリケーション システムとデータベースのどちらを使用するかに依存します。

SAP アプリケーション システムをデータストアとして使用する場合は、以下のオブジェクトをエクスポートできます。

  • テーブル
  • ビュー
  • 階層
  • ODP
  • BAPI(関数)
  • IDoc

レプリケーションのフローは SAP アプリケーションまたはデータベースから始まり、SAP Data Services を介して BigQuery に渡されます。

基盤となるデータベースをデータストア接続として使用する場合は、以下のようなオブジェクトをエクスポートできます。

  • テーブル
  • ビュー
  • ストアド プロシージャ
  • その他のデータ オブジェクト

レプリケーションのフローは SAP アプリケーションまたはデータベースから始まり、SAP Data Services を介して BigQuery に渡されます。

SAP アプリケーション システムとデータベースのデータストア構成については、以下のセクションで説明します。データストア接続やデータ オブジェクトのタイプに関係なく、SAP Data Services データフローでオブジェクトをインポートして使用する手順はほぼ同じです。

SAP アプリケーション レイヤへの接続の構成

次の手順では、SAP アプリケーションへの接続を作成し、Designer オブジェクト ライブラリの該当するデータストア ノードにデータ オブジェクトを追加します。

  1. SAP Data Services Designer アプリケーションを開きます。
  2. Project Explorer で SAP Data Services プロジェクトを開きます。
  3. [Project] > [New] > [Datastore] の順に移動します。
  4. [Datastore Name] に入力します。たとえば、「ECC_DS」と入力します。
  5. [Datastore type] フィールドで、[SAP Applications] を選択します。
  6. [Application server name] フィールドに、SAP アプリケーション サーバーのインスタンス名を入力します。
  7. SAP アプリケーション サーバーのアクセス認証情報を指定します。
  8. [OK] をクリックします。

SAP データベース レイヤへの接続の構成

SAP HANA

次の手順では、SAP HANA データベースへの接続を作成し、Designer オブジェクト ライブラリの該当するデータストア ノードにデータテーブルを追加します。

  1. SAP Data Services Designer アプリケーションを開きます。
  2. Project Explorer で SAP Data Services プロジェクトを開きます。
  3. [Project] > [New] > [Datastore] の順に移動します。
  4. [Datastore Name] に入力します。たとえば、「HANA_DS」と入力します。
  5. [Datastore type] フィールドで、[Database] オプションを選択します。
  6. [Database type] フィールドで、[SAP HANA] オプションを選択します。
  7. [Database version] フィールドで、データベースのバージョンを選択します。
  8. データベース サーバーの名前、ポート番号、アクセス認証情報を入力します。
  9. [OK] をクリックします。
サポートされている他のデータベース

次の手順では、SQL Anywhere への接続を作成し、Designer オブジェクト ライブラリの該当するデータストア ノードにデータテーブルを追加します。

他のサポートされているデータベースへの接続を作成する手順は、これとほとんど同じです。

  1. SAP Data Services Designer アプリケーションを開きます。
  2. Project Explorer で SAP Data Services プロジェクトを開きます。
  3. [Project] > [New] > [Datastore] の順に移動します。
  4. 名前を入力します。たとえば、「SQL_ANYWHERE_DS」と入力します。
  5. [Datastore type] フィールドで、[Database] オプションを選択します。
  6. [Database type] フィールドで、[SQL Anywhere] オプションを選択します。
  7. [Database version] フィールドで、データベースのバージョンを選択します。
  8. データベース サーバーの名前、データベース名、アクセス認証情報を入力します。
  9. [OK] をクリックします。

新しいデータストアが、Designer のローカル オブジェクト ライブラリの [Datastore] タブに表示されます。

ターゲット データストアを作成する

次の手順により、サービス アカウントの作成セクションで以前に作成したサービス アカウントを使用する BigQuery データストアを作成します。サービス アカウントにより、SAP Data Services は BigQuery に安全にアクセスできるようになります。

詳細については、SAP Data Services ドキュメントの Obtain your Google service account email および Obtain a Google service account private key file をご覧ください。

  1. SAP Data Services Designer アプリケーションを開きます。
  2. Project Explorer で SAP Data Services プロジェクトを開きます。
  3. [Project] > [New] > [Datastore] の順に移動します。
  4. [Name] フィールドに入力します。たとえば、「BQ_DS」と入力します。
  5. [Datastore type] フィールドで、[Google BigQuery] を選択します。
  6. [Web Service URL] オプションが表示されます。ソフトウェアは、デフォルトの BigQuery ウェブサービス URL を使用してオプションを自動的に補完します。
  7. [Advanced] を選択します。
  8. SAP Data Services ドキュメントにある BigQuery の Datastore option descriptions に基づいて、詳細オプションを完了します。
  9. [OK] をクリックします。

新しいデータストアが、Designer のローカル オブジェクト ライブラリの [Datastore] タブに表示されます。

SAP Data Services と BigQuery 間のデータフローを設定する

データフローを設定するには、バッチジョブを作成し、BigQuery ローダーのデータフローを作成して、外部メタデータとしてソーステーブルと BigQuery テーブルを SAP Data Services にインポートする必要があります。

バッチジョブを作成する

  1. SAP Data Services Designer アプリケーションを開きます。
  2. Project Explorer で SAP Data Services プロジェクトを開きます。
  3. [Project] > [New] > [Batch Job] の順に移動します。
  4. [Name] フィールドに入力します。たとえば、「JOB_SQL_ANYWHERE_BQ」と入力します。
  5. [OK] をクリックします。

データフロー ロジックを作成する

ソーステーブルをインポートする

次の手順により、ソース データストアからデータベース テーブルをインポートし、SAP Data Services で使用できるようにします。

  1. SAP Data Services Designer アプリケーションを開きます。
  2. Project Explorer でソース データストアを展開します。
  3. 右パネルの上にある [External Metadata] オプションを選択します。使用可能なテーブルなど、オブジェクトを含むノードのリストが表示されます。
  4. インポートするテーブルをリストから選択します。
  5. 右クリックして、[Import] オプションを選択します。
  6. これで、インポートされたテーブルがソース データストア ノードのオブジェクト ライブラリで使用できるようになります。
データフローを作成する
  1. Project Explorer でバッチジョブを選択します。
  2. 右側のパネルで空のワークスペースを右クリックし、[Add New] > [Dataflow] オプションを選択します。
  3. [dataflow] アイコンを右クリックして、[Rename] を選択します。
  4. 名前を「DF_SQL_ANYWHERE_BQ」に変更します。
  5. [dataflow] アイコンをダブルクリックして、データフロー ワークスペースを開きます。

    [dataflow] アイコンの画面キャプチャ。

データフローをインポートして、ソース データストア オブジェクトに接続する
  1. Project Explorer でソース データストアを展開します。
  2. データストアから、ソーステーブルをデータフロー ワークスペースにドラッグ&ドロップします(テーブルをワークスペースにドラッグするときに [Make Source] オプションを選択します)。この手順では、データストアの名前は「SQL_ANYWHERE_DS」です。データストアの名前は異なる場合があります。
  3. オブジェクト ライブラリの [Transforms] タブの [Platform] ノードから Query トランスフォームをデータフローにドラッグします。
  4. ワークスペース内のソーステーブルを Query トランスフォームに接続します。
  5. Query トランスフォームをダブルクリックします。
  6. 左側の [Schema In] の下にあるすべてのテーブル フィールドを選択し、右側の [Schema Out] にドラッグします。

    • 右の [Schema Out] リストで [datetime] フィールドを選択します。
    • スキーマリストの下の [Mapping] タブを選択します。
    • フィールド名を次の関数に置き換えます。

      to_date(to_char(FIELDNAME,'yyyy-mm-dd hh24:mi:ss'), 'yyyy-mm-dd
      hh24:mi:ss')

      ここで、「FIELDNAME」は、選択したフィールドの名前です。

    フィールドの日時データ型変換を示す SAP Data Services Designer の画面キャプチャ。

  7. アプリケーション ツールバーにある [Back] アイコンをクリックして、Dataflow Editor に戻ります。

  8. オブジェクト ライブラリの [Transforms] タブの [Platform] ノードから XML_Map トランスフォームをデータフローにドラッグします。

  9. ダイアログで [Batch mode] を選択します。

  10. Query トランスフォームを XML_Map トランスフォームに接続します。

    Query トランスフォーム > XML map のフローを表すアイコンの画面キャプチャ。" class="l10n-absolute-url-src screenshot" l10n-attrs-original-order="src,alt,class" src="https://cloud.google.com/static/solutions/sap/docs/images/bigquery/bq-export-dataflow-to-xml-map.png" />

スキーマ ファイルを作成する

次の手順により、ソーステーブルの構造を反映するスキーマ ファイルが生成されます。その後、スキーマ ファイルを使用して BigQuery テーブルを作成します。

このスキーマにより、BigQuery ローダーのデータフローが新しい BigQuery テーブルに入力されます。

  1. XML_Map トランスフォームを開き、BigQuery テーブルに含まれているデータに基づいて入力スキーマと出力スキーマのセクションを完成させます。
  2. [Schema Out] 列の [XML_Map] ノードを右クリックし、プルダウン メニューから [Generate Google BigQuery Schema] を選択します。
  3. スキーマの名前と場所を入力します。
  4. [Save] をクリックします。

SAP Data Services は、.json ファイル拡張子を持つスキーマ ファイルを生成します。

Google BigQuery スキーマを生成するプルダウン メニューを示す SAP Data Services Designer の画面キャプチャ。

BigQuery テーブルを作成する

データ読み込み用に、Google Cloud 上の BigQuery データセットにテーブルを作成する必要があります。SAP Data Services で作成したスキーマを使用して、テーブルを作成します。

テーブルは、前の手順で生成したスキーマに基づいています。

  1. Google Cloud コンソールで、Google Cloud プロジェクトにアクセスします。
  2. [BigQuery] を選択します。
  3. 該当するデータセットをクリックします。
  4. [テーブルを作成] をクリックします。
  5. テーブルの名前を入力します。例: BQ_DATA_LOAD
  6. [スキーマ] で設定を切り替え、[テキストとして編集] モードを有効にします。
  7. スキーマ ファイルを作成するで作成したスキーマ ファイルの内容をコピーして貼り付けることにより、BigQuery で新しいテーブルのスキーマを設定します。
  8. [テーブルを作成] をクリックします。
BigQuery テーブルをインポートする

次の手順により、前の手順で作成した BigQuery テーブルをインポートし、SAP Data Services で使用できるようにします。

  1. SAP Data Services Designer オブジェクト ライブラリで、BigQuery データストアを右クリックし、[Refresh Object Library] オプションを選択します。これにより、データフローで使用できるデータソース テーブルのリストが更新されます。
  2. BigQuery データストアを開きます。
  3. 右パネルの上にある、[External Metadata] を選択します。作成した BigQuery テーブルが表示されます。
  4. 該当する BigQuery のテーブル名を右クリックして、[Import] を選択します。
  5. 選択したテーブルの SAP Data Services へのインポートが開始されます。これで、テーブルがターゲット データストア ノードのオブジェクト ライブラリで使用できるようになります。
データフローをインポートして、ターゲット データストア オブジェクトに接続する
  1. オブジェクト ライブラリのデータストアから、インポートした BigQuery テーブルをデータフローにドラッグします。この手順では、データストアの名前は BQ_DS です。データストアの名前は異なる場合があります。
  2. XML_Map トランスフォームをインポートされた BigQuery テーブルに接続します。

    Query トランスフォーム > XML map > BigQuery テーブルのフローを表すアイコンの画面キャプチャ。" class="l10n-absolute-url-src screenshot" l10n-attrs-original-order="src,alt,class" src="https://cloud.google.com/static/solutions/sap/docs/images/bigquery/bq-export-dataflow-complete.png" />

  3. XML_Map トランスフォームを開き、BigQuery テーブルに含まれているデータに基づいて入力スキーマと出力スキーマのセクションを完成させます。

  4. ワークスペースで BigQuery テーブルをダブルクリックして開き、次の表に示すように [Target] タブのオプションを完了します。

    オプション 説明
    ポートの作成 [No] を指定します。これはデフォルトです。

    [Yes] を指定すると、ソースファイルまたはターゲット ファイルが埋め込みデータフロー ポートになります。
    モード 初期ロードに [Truncate] を指定します。これにより、BigQuery テーブル内の既存のレコードが SAP Data Services によってロードされたデータに置き換えられます。デフォルトは [Truncate] です。
    ローダー数 正の整数を指定して、処理に使用するローダー(スレッド)の数を設定します。デフォルトは 4 です。

    各ローダーは、BigQuery で再開可能な読み込みジョブを 1 つ開始します。任意のローダー数を指定できます。
    適切なローダー数を判断するには、以下を含む SAP のドキュメントをご覧ください。
    1 回のローダーで失敗できる記録の最大数 0 または正の整数を指定して、BigQuery が記録の読み込みを停止するまでに、1 回の読み込みジョブで失敗できる記録の最大数を設定します。デフォルトはゼロ(0)です。
  5. 上のツールバーにある [Validate] アイコンをクリックします。

  6. アプリケーション ツールバーにある [Back] アイコンをクリックして、Dataflow Editor を終了します。

BigQuery へのデータの読み込み

次の手順により、レプリケーション ジョブを開始し、SAP Data Services でデータフローを実行してソースシステムから BigQuery にデータをロードします。

ロードを実行すると、ソース データセット内のすべてのデータが、ロード データフローに接続されているターゲット BigQuery テーブルに複製されます。ターゲット テーブルのデータはすべて上書きされます。

  1. SAP Data Services Designer で、Project Explorer を開きます。
  2. レプリケーション ジョブ名を右クリックして、[Execute] を選択します。
  3. [OK] をクリックします。
  4. 読み込みプロセスが開始し、SAP Data Services ログにデバッグ メッセージが表示され始めます。データは、初期ロードのために BigQuery で作成したテーブルに読み込まれます。この手順では、ロードテーブルの名前は BQ_DATA_LOAD です。テーブルの名前は異なる場合があります。
  5. 読み込みが完了したかどうかを確認するには、Google Cloud コンソールに移動して、テーブルを含む BigQuery データセットを開きます。データがまだ読み込み中の場合、テーブル名の横に「読み込み中」と表示されます。

読み込み後、データは BigQuery で処理できる状態になります。

負荷のスケジューリング

SAP Data Services Management Console を使用して、読み込みジョブを定期的に実行するようにスケジュールできます。

  1. SAP Data Services Management Console アプリケーションを開きます。
  2. [Administrator] をクリックします。
  3. 左側のメニューツリーで [Batch] ノードを展開します。
  4. SAP Data Services リポジトリの名前をクリックします。
  5. [Batch Job Configuration] タブをクリックします。
  6. [Add Schedule] をクリックします。
  7. [Schedule name] に入力します。
  8. [Active] にチェックを入れます。
  9. [Select scheduled time for executing the jobs] セクションで、デルタロードの実行頻度を指定します。
    1. 重要: Google Cloud では、1 日に実行できる BigQuery 読み込みジョブの数に上限があります。スケジュールが上限を超えないようにしてください。上限を引き上げることはできません。BigQuery の読み込みジョブ制限の詳細については、BigQuery ドキュメントの割り当てと上限をご覧ください。
  10. [Apply] をクリックします。

    SAP Data Services Management Console の [Schedule Batch Job] タブの画面キャプチャ。

次のステップ

BigQuery で複製されたデータをクエリおよび分析します。クエリの詳細については、以下をご覧ください。

SAP Landscape Transformation Replication Server と SAP Data Services を使用して SAP アプリケーションから BigQuery にデータをほぼリアルタイムで複製するソリューションを設定する方法の詳細については、以下をご覧ください。

Cloud アーキテクチャ センターで、リファレンス アーキテクチャ、図、ベスト プラクティスを確認する。