バージョン:Rome
ServiceNow へのデータのインポート

データのインポート

記事 (1/21)

データのインポートの目的

このモジュールでは、次のことを学習します。

  • レコードをインポートするためのデータソースを作成する
  • ステージングテーブルにデータをロードする
  • [変換フィールド] マップを作成する
    • 一致フィールドの自動マップ
    • マッピング支援
  • 変換マップスクリプトを使用してフィールド値を変更または設定する
  • 結合して衝突を検出する
  • 変換イベントスクリプトを使用してレコードを更新する (挿入はしない)

記事 (2/21)

この学習モジュールについて

重要:この学習モジュールの内容は、Quebec ServiceNow リリース用に最後に更新されたもので、Rome リリースでは更新されていません。Rome リリースとこの学習モジュールのコンテンツとの間に違いが見られる場合があります。

Employee Special Days アプリケーションは、アプリケーション作成の背後にある概念とプロセスを紹介し、デモンストレーションするために、この学習モジュール全体で使用されます。Employee Special Days アプリケーションは構築しません。

演習では、NeedIt アプリケーションを開発します。

演習は、次の 3 つの方法で示されます。

  • ナビゲーションペインの [演習] アイコン。
  • ページ上部の [演習] アイコンと「演習」という単語。
  • ページタイトルの「演習」または「課題」という単語。

ナビゲーションとページタイトルに、強調表示された演習ページのアイコンと演習プリフィックスが表示された、演習ページの上部。

NeedIt アプリケーションを使用すると、ユーザーは複数の部門からのサービスを要求できます。ソースコントロールを使用して、この学習モジュールに必要なすべての NeedIt アプリケーションファイルから始めます。

演習 (3/21)

演習:「データのインポート」モジュールのためにリポジトリをフォークしてアプリケーションをインポートする

ServiceNow は GitHub を使用して、開発者サイトの学習コンテンツをコピーして使用するアプリケーションリポジトリを提供します。リポジトリには、アプリケーションファイルの固定セットであるタグが含まれているため、部分的に構築されたアプリケーションを使用して作業を開始できます。ServiceNow が提供するリポジトリを個人開発者インスタンス (PDI) にコピーしてインポートすることで、モジュール内の実践的な演習に必要なすべてのファイルを取得できます。

注意:ServiceNow が開発者プログラムの学習コンテンツで GitHub を使用する方法の詳細と、リポジトリをフォークしてアプリケーションをインポートする方法に関するビデオを見るには、『GitHub ガイド』を参照してください。

この演習では、次のことを行います。

  1. ServiceNow リポジトリを GitHub アカウントにフォークします。
  2. リポジトリのフォークから PDI にアプリケーションをインポートします。

重要:リポジトリを既にフォークしてインポートしている場合は、次の演習に進み、タグから分岐を作成して、アプリケーションファイルを PDI にロードできます。モジュールを完了するには、NeedIt アプリケーションファイルが必要です。

リポジトリのフォーク

演習のこのセクションでは、開発者サイトの学習コンテンツで使用するアプリケーションリポジトリのパーソナルフォークを作成します。

  1. Web ブラウザーで、github.com を開きます。

  2. GitHub アカウントをお持ちの場合は、サインインします。お持ちでない場合は、新しいアカウントにサインアップします。

  3. サインインしたら、NeedIt リポジトリを開きます。

  4. [フォーク] ボタン (GitHub の [フォーク] ボタン) をクリックして、GitHub アカウントにリポジトリのコピーを作成します。

  5. 既にリポジトリをフォークしている場合は、ダイアログが表示されます。リポジトリを既にフォークしている場合は、次の演習に進みます。

    リポジトリは以前にフォークされている

  6. GitHub アカウントが複数の組織に属している場合は、GitHub でフォークを作成する場所を指定します。[Fork devtraining-application-release] ダイアログで、<お使いの GitHub ユーザー名> リンクを選択します。リポジトリのプライベートフォークを作成します。GitHub はリポジトリフォークのページを自動的にロードします。

    GitHub ユーザーが複数の組織に属している場合、GitHub はフォーク先を尋ねます。GitHub ユーザー名を選択します。

  7. リポジトリのフォークの URL が次のようになっているかを検証します:<お使いの GitHub ユーザー名>/devtraining-application-release

    フォークしたコピーは自動的にロードされます。

  8. フォークしたリポジトリの URL をコピーします。

    1. [コード] ボタンをクリックします。

    2. URL に ServiceNow ではなく GitHub ユーザー名が含まれていることを確認します。

    3. HTTPS が選択されていることを確認します。選択されていない場合は、[クローン] フライアウトで [HTTPS] タブを選択します。

    4. [クリップボードにコピー] ボタン ([クリップボードにコピー] ボタン) をクリックします。

      フォークしたリポジトリの URL をコピーする

      注意:次のセクションでは、コピーした URL を使用して、フォークしたリポジトリへの接続を設定します。

フォークしたリポジトリからアプリケーションをインポートします。

演習のこのセクションでは、アプリケーションリポジトリを ServiceNow にインポートします。プロセスの一環として、まず GitHub アカウントの資格情報レコードを作成してから、Studio を使用してアプリケーションリポジトリを PDI にインポートします。

  1. 管理者ユーザーとして PDI にログインします。PDI がない場合は、ServiceNow 開発者サイトを開いて Rome PDI を入手してください。

    注意:PDI の入手方法については、『個人開発者インスタンス (PDI) ガイド』を参照してください。

  2. GitHub 接続の資格情報レコードを作成します。

    重要:資格情報レコードを作成する必要があるのは 1 回だけです。別の演習で資格情報レコードを既に作成している場合は、この手順をスキップしてください。

    1. Application Navigator を使用して、[接続および資格情報] > [資格情報] を開きます。

    2. [新規] ボタンをクリックします。

    3. [作成する資格情報のタイプは?] リストで、[基本認証資格情報] リンクをクリックします。

    4. 資格情報レコードを設定します。

        名前 GitHub 資格情報 (GitHub Credentials) - <お使いの github.com ユーザー名>
        ユーザー名 <お使いの github.com ユーザー名>
        パスワード <お使いの github.com 個人アクセストークン>

      基本認証資格情報の新しいレコードフォーム。

      重要:GitHub では、ServiceNow などの他のプラットフォームからリポジトリにアクセスするには、個人アクセストークンが必要です。認証時には、パスワードの代わりに個人用アクセストークンが使用されます。GitHub パーソナルアクセストークンを作成する方法については、『GitHub ガイド』の「GitHub への認証」セクションを参照してください。

    5. [送信] ボタンをクリックします。

  3. Application Navigator を使用して [システムアプリケーション] > [Studio] を開きます。

    Studio アプリケーションを開きます。

  4. 新しいブラウザータブで Studio が開きます。

  5. [アプリケーションを選択] ダイアログで、[ソースコントロールからインポート] ボタンをクリックします。

    [ソースコントロールからインポート] ボタンをクリックします。

  6. [アプリケーションのインポート] ダイアログで、分岐したリポジトリへの接続を設定します。

      URL <リポジトリのフォークドバージョン用にコピーしたURL>
      資格情報 GitHub 資格情報 (GitHub Credentials) - <お使いの github.com ユーザー名>
      分岐 メイン (main)

    注意[分岐] の値を [メイン (main)] に変更すると、「デフォルトの命名規則を使用することを強くお勧めします」という情報メッセージが表示されます。[分岐] フィールドの値はリポジトリに存在する必要があります。開発者サイトのトレーニングリポジトリにはすべて [メイン (main)] 分岐があり、デフォルト値の代わりに使用する必要があります。

    github.com からコピーした URL を使用して、GitHub にフォークしたリポジトリへの接続を構成します。

  7. [インポート] ボタンをクリックします。

  8. アプリケーションのインポートが完了したら、[アプリケーションの選択] ボタンをクリックします。

    有効なリポジトリが存在する必要があります。

    注意:接続に失敗した場合は、フォークしたリポジトリ URL ではなく ServiceNow のリポジトリ URL を [URL] フィールドに入力しているか、あるいは GitHub アカウントで 2 要素認証を有効にしている可能性があります。接続のトラブルシューティング方法については、 「GitHub 問題のトラブルシューティング」を参照してください。

  9. [アプリケーションを選択] ダイアログで、Studio で編集するために、アプリケーションをクリックして開きます。

    重要:タグから分岐を正常に作成しないと、次の演習で Studio にアプリケーションファイルが表示されません。

演習 (4/21)

演習:データをインポートするための分岐を作成する

この演習では、モジュールで使用するアプリケーションファイルを含むデータのインポートモジュールのために、NeedIt アプリケーションの分岐を作成します。

注意:この演習を開始する前に、「演習:データのインポートモジュールのためにリポジトリをフォークしてアプリケーションをインポートする」で説明したように、NeedIt リポジトリをフォークしてインポートしておく必要があります。

  1. 前回の演習で NeedIt アプリケーションを Studio で開いていない場合は、ここで開きます。

    1. ServiceNow ブラウザーのメインウィンドウで、Application Navigator を使用して [システムアプリケーション] > [Studio] を開きます。
    2. [アプリケーションを選択] ダイアログで、NeedIt アプリケーションをクリックします。
  2. Studio で、[ソースコントロール] メニューを開き、[分岐を作成] メニューアイテムを選択します。

    [ソースコントロール] メニューおよび [分岐を作成 (Create Branch)] メニューアイテムを開きます。

  3. 分岐を構成します。

      分岐名 ImportData
      タグから作成 LoadForImportDataModule
  4. [分岐を作成] ボタンをクリックします。

  5. [閉じる] ボタンをクリックします。

  6. タグに含まれているアプリケーションファイルをロードするには、(Studio ではなく) ServiceNow ブラウザーのメインタブに戻り、ブラウザーの再ロードボタンをクリックしてページを更新します。

    注意:分岐の作成に失敗した場合は、フォークしたリポジトリ URL ではなく ServiceNow のリポジトリ URL を [URL] フィールドに入力しているか、あるいは GitHub アカウントで 2 要素認証を有効にしている可能性があります。GitHub 接続問題のトラブルシューティング方法については、『GitHub ガイド』の「GitHub 問題のトラブルシューティング」セクションを参照してください。

記事 (5/21)

インポートするデータの準備

ServiceNow にデータをインポートする前に、次の作業を実行することをお勧めします。

  • 取り込むデータを把握する
  • 不完全または誤ったデータの取り扱いを決定する
  • ソースファイルの列をターゲットテーブルの列にマッピングする計画を作成する

データを調べる

不要なデータを削除することは、事前に計画を立てることよりもはるかに困難です。

この例では、従業員の誕生日と就業日がスプレッドシートでトラッキングされています。比較的新しい従業員の場合、特別な機会は Employee Special Days アプリケーションで追跡されます。データ用に 2 つの場所を維持する代わりに、履歴データを Employee Special Days アプリケーションにインポートして、データを一か所に保存します。重複レコードと不完全なレコードが検出され、ソースファイルから削除されてから、インポートが行われます。

NeedIt テーブルの履歴データ

データをマッピングする

ソースファイルの列をターゲットテーブルの列にマッピングする計画を作成します。この例では、スプレッドシートの列を [機会] テーブルのフィールドにマッピングします。フォームフィールドの吹き出しは、スプレッドシートの列を指します。たとえば、スプレッドシートの列 B は、ターゲットテーブルの [特別行事 (Special occasion)] フィールドにマッピングされます。

この画像は、スプレッドシート列 (従業員、日タイプ、日付) と [機会] テーブルフォーム ([番号]、[従業員]、[特別な機会 (Special occasion)]、および [機会の日付 (Occasion date)]) を示しています。マッピングは、従業員から従業員、日タイプから特別な機会、および日付から機会の日付に対して行われています。

記事 (6/21)

データソース

データソースは、インポートするデータを定義するものです。データソースを作成できるのは管理者ユーザーのみです。このモジュールでは、データソースは Microsoft Excel スプレッドシートです。その他のデータソースとしては、次のようなものが考えられます。

  • CSV
  • JDBC
  • FTP
  • HTTP
  • XML

Studio で、スコープ対象のアプリケーションのデータソースを作成します。データソース構成の例を見るには、ServiceNow ブラウザーのメインウィンドウで Application Navigator を使用して、[システムインポートセット] > [管理] > [データソース] を開きます。MySQL データベースにデータ連携するための JDBC データソースの例は、次のようになります。

MySQL に連携する JDBC データソースの例

データソースの構成フィールドは、データソースのタイプによって異なります。JDBC を 使用して MySQL データベースに接続するには、[データベース名][ユーザー名][パスワード][サーバー][データベースポート][クエリ]、および [テーブル名] が必要です。[クエリ] フィールドの値が SQL ステートメントの場合、SQL フィールドが表示されるため、有効な SQL ステートメントを指定する必要があります。

記事 (7/21)

データインポートのプロセス

データは、データソースからターゲットテーブルに直接インポートされません。データをインポートする手順は次のとおりです。

  1. ステージングテーブルにデータをロードする。
  2. 変換マップを作成する
  3. 変換を実行して、ステージングテーブルからターゲットテーブルにデータを移動する。
  4. データの完全性を検証する。
    データインポートのプロセス

Studio を使用して、データソースと変換マップを作成します。他のデータインポート操作はすべて ServiceNow ブラウザーのメインウィンドウで行われ、スコープ対象のアプリケーションの一部としてキャプチャされることはありません。

記事 (8/21)

データをロードする

ステージングテーブルにデータソースからデータをロードするには、ServiceNow ブラウザーのメインウィンドウで、Application Navigator を使用して [システムインポートセット] > [データのロード] を開きます。設定オプションは、データソースによって異なります。この例では、データソースは Excel ファイルです。ステージングテーブル x_snc_employee_spe_occasions_staging は動的に作成されます。

Excel スプレッドシートからステージングテーブル構成へのインポート

[送信] ボタンをクリックして、Excel ファイルからステージングテーブルにデータをロードします。

レコードがステージングテーブルにインポートされると、[進行状況] ページが表示されます。

データがステージングテーブルにロードされました

データがロードされたら、[次のステップ...] セクションの [変換マップを作成] リンクをクリックして、ステージングテーブルからターゲットテーブルにデータをマッピングします。

記事 (9/21)

変換マップを作成する

変換マップは、ステージングテーブルの列をターゲットテーブルの列と照合します。すべてのインポート操作には、少なくとも 1 つの変換が必要です。

テーブル変換マップを設定します。

変換マップを設定します。

  • 名前:変換マップを識別するための分かりやすいラベルを入力します。
  • ソーステーブル:未処理のインポートセットデータを含むインポートテーブルを選択します。選択できるのは、現在選択されているアプリケーションスコープ内のテーブルのみです。
  • アクティブ:選択すると変換マップが使用可能になります。
  • ビジネスルールの実行:変換によるターゲットテーブルへのデータの挿入や更新の際に、ビジネスルール、ワークフロー、承認エンジン、監査、およびフィールド正規化を実行する場合に選択します。
  • 必須項目を強制:ターゲットテーブルに必須項目を強制するかどうかを選択します。
  • 空のフィールドをコピー:受信フィールドに空の値が含まれている場合に既存の値を持つフィールドをクリアするにはここをオンにします。
  • 空の結合フィールドに新規レコードを作成:すべての結合フィールドが空の場合に、レコードを無視したり既存レコードを上書きしたりせずにレコードを作成するには、ここをオンにします。
  • アプリケーション:変換マップが含まれているアプリケーション。
  • 作成日:変換マップの作成日を表示します。このフィールドは、自動的に入力されます。
  • ターゲットテーブル:変換したデータを配置するテーブルを選択します。選択できるテーブルは、現在選択されているアプリケーションのスコープ内にあるもの、グローバルスコープ内にあるもの、または他のアプリケーションに書き込みアクセスを許可しているものです。
  • 順序:複数のマップが条件と一致する場合に変換マップを適用する順序を入力します。変換マップは順序の値が小さい方から大きい方へ実行されます。
  • スクリプトを実行[スクリプト] フィールドを表示する場合はここをオンにします。
  • スクリプト:ソーステーブルのフィールド値をターゲットテーブルに変換するために使用する変換マップスクリプトを入力します。ServiceNow では、フィールドマップに追加する形で変換マップスクリプトを実行します。

一致フィールドの自動マップ

ServiceNow の [一致フィールドの自動マップ] 関連リンクをクリックして、ステージングテーブルの列を、列名に基づいてターゲットテーブルの列と照合します。自動マッピングされたフィールドが [フィールドマップ] セクション (タブ) に表示されます。

自動マッピングされたフィールド

マッピング支援

ステージングテーブルからターゲットテーブルへのフィールドへの自動マッピングが常に可能であるとは限りません。フィールドを手動でマッピングするには、[マッピング支援] 関連リンクをクリックします。

ステージングテーブルとターゲットテーブルのフィールドをマップに追加する

ステージングテーブルのフィールドをマップに追加し、ターゲットテーブルのフィールドとペアリングします。マップでフィールドを追加または削除するには、フィールドをクリックして強調表示し、[追加] または [削除] ボタンをクリックします。マップ内でフィールドを移動するには、クリックしたままドラッグします。

[データビューアー] セクションまでスクロールして、マップが適用されたときにステージングテーブルのレコードがどのように表示されるかを確認します。マッピングされたステージングテーブルのレコードをターゲットテーブルのレコードと比較して、フィールド値と書式設定が正しいかどうかを確認します。

マッピングされたステージングテーブルのレコードをターゲットテーブルのレコードと比較します。

すべてのフィールドをマッピングする必要はありません。ターゲットテーブルにインポートしないフィールドがソースデータに含まれている可能性があります。この例では、ソースデータの [日付] フィールドがまだマッピングされていません。

マッピングが完了したら、[保存] ボタンをクリックします。

記事 (10/21)

変換マップを実行する

変換マップを実行すると、ステージングテーブルからターゲットテーブルにデータが移動します。変換マップを実行するには、テーブル変換マップレコードの [変換] 関連リンクをクリックします。

変換を実行する

[インポートセットと変換マップを指定] フォームで、実行する変換マップが [選択したマップ、順番に実行] スラッシュバケットにあることを確認します。[変換] ボタンをクリックします。

実行する変換マップを指定します

[進行状況] ページに、変換の [ステータス][完了コード] が表示されます。[完了コード] の値が [成功] でも、レコードが正しくインポートされたという意味ではありません。[完了コード] は、変換が正常に実行されかどうかを示すものであり、レコードのデータの完全性を示すものではありません。

変換の進行状況

[インポートログ] リンクをクリックして、データにエラーがあったかどうかを確認します。この例では、変換とインポートが成功しました。8 つのレコードが変換され、挿入されました。

成功

この例では、変換は正常に完了しましたが、インポートでエラーが発生しました。レコードが挿入されませんでした。

変換は成功する可能性がありますが、インポートが失敗する可能性があります

記事 (11/21)

データの完全性を検証する

データのインポートの最後のステップは、予想されるデータが予想される形式でレコードに含まれていることを確認することです。最初に確認するのはインポートセットです。[次のステップ...] で、[ISET001XXXX] リンクをクリックします。

変換の進行状況

[インポートセット] レコードで、[インポートセット実行] セクション (タブ) までスクロールします。予想される数のレコードが挿入されたことを確認します。レコードが無視またはスキップされた場合、その理由を特定するための調査が必要となります。

[インポートセット実行] セクション

[インポートセット行] セクション (タブ) に切り替えます。[プレビュー] アイコン ([プレビュー] アイコン) にカーソルを合わせると、インポートされたデータが表示されます。[プレビュー] アイコンには完全なレコードは表示されません。インポートされたデータのみが表示されます。レコード全体を表示するには、[レコードを開く] ボタンをクリックします。

[レコードを開く] ボタンは、[プレビュー] フライアウトの中にあります。

インポートされた [機会] レコードでは、必須の [行事の日付 (Occasion date)] フィールドにデータがありません。ユーザーがフォームでレコードを開く際に、必須フィールドに値を入力してからレコードを保存する必要があります。インポート時に必須フィールドの値を必須にするには、変換マップの設定時に [必須項目を強制] の値を [すべてのフィールド] または [マッピングされたフィールドのみ] に設定します。

インポート時に必須フィールドの値を必須にする

演習 (12/21)

演習:NeedIt の履歴データをインポートする

このモジュールでは、NeedItImportData.csv ファイルからレコードと次の 4 つのフィールドをインポートします。

  • 要求元
  • 要求タイプ
  • 必要なもの (What needed)
  • 簡単な説明

準備

  1. NeedItImportData.csv ファイルをダウンロードします。

  2. 任意のテキストエディターまたはスプレッドシートソフトウェアを使用して、表示するファイルを開きます。

  3. 列名、レコード数、およびデータ形式を調べます。

データをロードする

  1. ServiceNow ブラウザーのメインウィンドウで、Application Navigator を使用して [システムインポートセット] > [データのロード] を開きます。

  2. インポートセットテーブルの設定:

      テーブルの作成 選択済み
      ラベル NeedIt の履歴データ (Historic NeedIt Data)
  3. インポートのソースの設定:

      ファイル 選択済み
      シート番号 1
      ヘッダー行 1
  4. [ファイルを選択] ボタンをクリックします。

  5. ファイルブラウザーで、NeedItImportData.csv ファイルをダウンロードした場所に移動します。NeedItImportData.csv ファイルを選択して [開く] ボタンをクリックします。

  6. [送信] ボタンをクリックして、ファイルからステージングテーブルにデータをロードします。

  7. [進行状況] ページに、次のように表示されます。

    正常なインポート

  8. [次のステップ...] セクションで、[変換マップを作成] リンクをクリックします。

変換マップを作成する

  1. 変換マップを設定します。

      名前 NeedIt の履歴データをインポートする (Import Historic NeedIt Data)
      ソーステーブル 過去の NeedIt データ [x_58872_needit_historic_needit_data]
      ビジネスルールを実行 選択済み (オン)
      必須項目を強制 なし
      ターゲットテーブル NeedIt [x_58872_needit_needit]
  2. [一致フィールドの自動マップ] 関連リンクをクリックします。

  3. マッピングが完了したら、[フィールドマップ] 関連リストまでスクロールします。4 つのフィールドがマッピングされているはずです。インスタンスではフィールドの順序が異なる場合があります。

    [要求元]、[要求タイプ]、[必要なもの]、および [簡単な説明] フィールドがマッピングされます。

変換を実行する

  1. [関連リンク] で [変換] をクリックします。

  2. [インポートセットと変換マップを指定] ページで、[NeedIt の履歴データをインポートする (Import Historic NeedIt Data)] マップが [選択したマップ、順番に実行] スラッシュバケットにあることを確認します。

    変換が実行対象として選択されています。

  3. [変換] ボタンをクリックします。

変換とインポートが機能したかどうかを確認する

  1. [進行状況] ページで、変換が正常に行われたことを確認します。

    変換成功

  2. [次のステップ...] セクションで、[変換履歴] リンクをクリックします。

  3. [変換履歴] のステータスが [完了 (エラーあり)] になっていることを確認します。

    変換にエラーがある

  4. [タイムスタンプ] リンクをクリックして、エラーのリストを開きます。

  5. [インポートセット行エラー] 関連リストまでスクロールします。

  6. いずれかのレコードの [プレビュー] アイコン (レコードを表示) にカーソルを合わせます。エラーを確認します。

  7. 別のレコードの [プレビュー] アイコン (レコードを表示) にカーソルを合わせます。エラーを確認します。エラーは、インポートしようとしたそれぞれのレコードについて同じである必要があります。

    ビジネスルールに起因するエラー

インポートエラーの処理

インポート中のエラーは、[NeedIt 必要な場合フィールドの日付] ビジネスルールが原因で発生します。このビジネスルールでは、過去または当日の [必要な場合 (When needed)] フィールド値を使用して NeedIt 要求を送信できません。しかし、日付フィールドをマップしておらず、フィールドに値がないためにエラーが発生しています。インポートを処理するには、ビジネスルールを一時的に非アクティブにします。これを行うと過去および当日の NeedIt 要求を送信できますが、これは望ましい動作ではありません。代わりに、[変換マップ] の設定を変更してください。

  1. 変換マップを編集します。

    1. ServiceNow ブラウザーのメインウィンドウで、Application Navigator を使用して [システムインポートセット] > [管理] > [変換マップ] を開きます。
    2. [NeedIt の履歴データをインポートする] 変換マップを開きます。
    3. [ビジネスルールを実行] オプションの選択を解除 (オフ) します。
      [ビジネスルールを実行] の選択を解除します
    4. [更新] ボタンをクリックします。
  2. needitimportdata.csv ファイルのデータをステージングテーブルにロードします。

    1. ServiceNow ブラウザーのメインウィンドウで、Application Navigator を使用して [システムインポートセット] > [管理] > [データソース] を開きます。
    2. needitimportdata.csv (アップロード済み) のレコードを編集用に開きます。
    3. [関連リンク] までスクロールし、[すべてのレコードをロード] リンクをクリックします。
  3. [進行状況] ページの [次のステップ...] セクションで、[変換の実行] リンクをクリックします。

  4. [インポートセットと変換マップを指定] ページで、[NeedIt の履歴データをインポートする (Import Historic NeedIt Data)] マップが [選択したマップ、順番に実行] スラッシュバケットにあることを確認します。

    変換が実行対象として選択されています。

  5. [変換] ボタンをクリックします。

    質問:もう一度テストするためにステージングテーブルにデータをロードする必要があるのはなぜですか?
    回答:変換マップが実行されると、ステージングテーブルの行は処理済みとしてマークされ、再度変換に使用することはできません。ステージングテーブルにデータをロードしてから、変換マップを実行してください。

今回の変換とインポートが機能したかどうかを確認する

  1. [進行状況] ページで、変換が正常に行われたことを確認します。

    変換成功

  2. [次のステップ...] セクションで、[変換履歴] リンクをクリックします。

  3. [変換履歴] のステータスが [完了] になっていることを確認します。

    変換にエラーがない

  4. タイムスタンプをクリックして、エラーがあるかどうかを確認します。

  5. [インポートセット行エラー] セクション (タブ) を確認します。エラーはないはずです。

  6. Application Navigator で、[NeedIt] > [すべて] を開きます。インポートされた 5 つのレコードが表示されます。テーブル内のレコードの [番号] は、スクリーンショット内の [番号] とは異なる場合があります。

    インポートされたレコード

記事 (13/21)

日付フィールドのインポート

日付を含むフィールドでは、データソースの日付形式と ServiceNow が想定する日付形式の形式が一致しないため、インポート時にエラーが発生することがよくあります。

2 つの日付の形式はこのように異なります。3/20/68 と 1968-03-20

形式の不一致を修正するには、編集のため変換マップを開きます。[フィールドマップ] 関連リストまでスクロールし、[ソースフィールド] 列で日付フィールドのリンクをクリックします。

フィールドマップを編集する

[日付形式] フィールドを使用して、ステージングテーブルのデータのフィールドの日付と時刻の形式を指定します。ServiceNow で、日付がターゲットフィールドが想定する形式に変換されます。

[日付形式] フィールド

[更新] ボタンをクリックしてフィールドマップを保存し、データ変換を実行します。

記事 (14/21)

必須項目を強制する

ServiceNow では、インポートセットによってテーブルのすべての必須項目に値を入力しなければならないわけではありません。変換マップの [必須項目を強制] オプションで、データをインポートするときに必須項目に値を入力する必要があるかどうかを決定します。

[必須項目を強制] のオプション

  • [いいえ (No)]:インポート時に、ターゲットテーブルの必須項目に値の入力を要求されません。
  • マッピングしたフィールドのみ:ターゲットテーブルの必須項目にマッピングされたステージングテーブルの項目に値が必要となります。
  • すべてのフィールド:ターゲットテーブルのすべての必須項目に値が必要となります。

スプレッドシートから Employee Special Days アプリケーションにレコードをインポートする直前に、アプリケーション開発者が必須項目の [従業員メール][機会] フォームに追加しました。このスプレッドシートのデータをインポートしても、必須項目には値が表示されません。

インポート後は必須項目に値がありません

ソースデータには、[従業員メール] フィールドにマッピングできる列がありません。ひとつの解決策として、アプリケーションのすべての必須項目に列が存在するようにソースデータを変更することがあります。レコードが多数あると、ソースの変更に時間がかかり、作業が煩雑になる可能性があります。もうひとつの解決策は、ターゲットフィールドの値を設定するスクリプトを作成することです。

変換マップを開き、[スクリプトを実行] 設定オプションを選択します。[従業員メール] フィールドに入力するサーバーのスクリプトを記述します。

この例では、会社のメールアドレスの形式は firstname.lastname@example.com です。ステージングテーブルの [従業員] 列の値を使用して、スクリプトが [従業員メール] のターゲットフィールドのメールアドレスを作成します。

source オブジェクトは自動的にインスタンス化されます。source オブジェクトのプロパティはステージングテーブルのフィールドです。source のプロパティ値はソースデータの値です。

target オブジェクトは自動的にインスタンス化されます。target オブジェクトのプロパティはターゲットテーブルのフィールドです。target のプロパティ値は、スクリプトの値と [フィールドマップ] の値です。

ソースデータからメールアドレスを作成するスクリプト

開発者向けのヒント:[フィールドマップ] は [変換マップ] のスクリプトよりも優先されます。


開発者向けのヒント:ソースデータやスクリプトでは文字列「NULL」を使用しないでください。「NULL」は予約語です。「Null」と「null」は使用できますが、「NULL」は使用できません。

記事 (15/21)

結合

データをインポートする前に、ソースデータとターゲットテーブルの間の衝突をどのように処理するかを計画します。

  • ターゲットテーブルに既にあるレコードを保持するか?
  • ターゲットテーブルのレコードをソースデータで上書きするか?
  • 重複レコードを作成するか?

[変換マップ] の [フィールドマップ] にある [結合] オプションを使用して、ステージングテーブルの行がターゲットテーブルのレコードと一致するかどうかを判断します。[結合] オプションを使用すると、フィールドがレコードの一意のキーになります。衝突のチェックにフィールドを使用するには [結合] の値を [true] に設定します。

衝突のチェックにフィールドを使用するには [結合] の値を [true] に設定します。

結合は、レコードを一意に識別できるよう、十分な数のフィールドで行います。この例では、1 人の従業員に複数の [機会] レコード ([誕生日][勤続記念日 (Work Anniversary)]) がある可能性があるため、[u_employee] フィールドでの結合だけではレコードを一意に識別するには不十分です。複数のフィールドで結合する際、衝突が発生するためにはすべての結合フィールドが一致する必要があります。一部の結合フィールドが一致するがすべてが一致しない場合、一致は発生しません。

  • 結合フィールドを使用して一致が検出された場合、ターゲットレコードはステージングテーブルからインポートされた情報で更新されます。
  • 一致するものが見つからない場合は、新しいレコードがデータベースに挿入されます。
  • 結合フィールドのフィールドがない場合、インポート時に毎回レコードが挿入されます。

記事 (16/21)

変換イベントスクリプト

変換イベントは、インポートセットテーブルをターゲットテーブルに変換するプロセス中に発生します。変換イベントスクリプトは、変換プロセスのさまざまなポイントで変換動作を変更します。

変換イベントスクリプトを作成するには、変換マップの [変換スクリプト] 関連リストに切り替えて、[新規] ボタンをクリックします。

変換マップレコードの [変換スクリプト] セクション

変換スクリプトのトリガーの [時期] オプションでは、変換プロセスのどのタイミングでスクリプトを実行するかを指定します。

変換スクリプトのトリガー

[時期] フィールドの選択肢は次のとおりです。

  • onStart:インポートの開始時に行が読み取られる前に実行します。
  • onAfter:行変換の最後と、ソース行がターゲット行に変換されて保存された後に実行します。
  • onBefore:行変換の開始時と、行がターゲット行に変換される前に実行します。
  • onChoiceCreate:新しい選択値が作成される前、選択肢の値の作成の開始時に実行します。
  • onComplete:すべての行が読み取られて変換された後、インポートの最後に実行します。
  • onForeignInsert:レコードが作成される前、関連する参照レコードの作成開始時に実行します。
  • onReject:外部レコードまたは選択肢の作成中、外部レコードまたは選択肢が拒否された場合に実行します。変換行全体は保存されません。

たとえば、結合の際に、一致するレコードのみを更新して新しいレコードを挿入しないという要件が考えられます。レコードのみを更新するという要件を満たすには、onBefore の変換スクリプトが必要です。onBefore スクリプトは、ServiceNow がターゲットテーブルに一致するレコードがあるかどうかを判断した後、挿入が行われる前に実行されます。

挿入を防止するスクリプト

action の文字列変数が自動的に作成されます。考えられる値は insertupdate の 2 つです。結合によって一致する (update) か一致しない (insert) かが判断された後に、アクションの変数が設定されます。

ignore の Boolean 変数が自動的に作成されます。true の場合、ignore 変数によってソースデータ行の変換プロセスが停止されます。

ServiceNow のサイト docs.servicenow.com に、変換スクリプトの全変数のリストが記載されています。変換イベントスクリプトの変数 (Transformation Event Scripts Variables)

演習 (17/21)

演習:インポート日、強制必須、および結合

このモジュールでは、NeedItImportData.csv ファイルの変換マップを変更します。手順は次のとおりです。

  • [必須 (Must have by)] ソース列をターゲットテーブルの [必要な場合] フィールドにマッピングする。
  • すべての [フィールドマップ] フィールドで結合する。
  • すべてのフィールドに対して必須項目を強制する。
  • スクリプトを使用して、ターゲットテーブルの [要求先メールアドレス (Requested for email)] の値を設定する。

[必須 (Must have by)] 列をマッピングする。

  1. [NeedIt の履歴データをインポートする] 変換マップを編集します。

    1. ServiceNow ブラウザーのメインウィンドウで、Application Navigator を使用して [システムインポートセット] > [管理] > [変換マップ] を開きます。
    2. [NeedIt の履歴データをインポートする (Import Historic NeedIt Data)] リンクをクリックして、変換マップを編集用に開きます。
  2. [関連リンク] までスクロールし、[マッピング支援] リンクをクリックします。

  3. [必須 (Must have by)] 列を [フィールドマップ] に追加します。

    1. [ソース:NeedIt の履歴データ] リストで、[必須 (Must have by)] 列をクリックして選択します。
    2. [追加] ボタン ([追加] ボタン) をクリックして、列を [フィールドマップ] に移動します。
  4. [必要な場合 (When needed)] フィールドを [フィールドマップ] に追加します。

    1. [ターゲット:NeedIt] リストで、[必要な場合 (When needed)] フィールドをクリックして選択します。
    2. [追加] ボタン ([追加] ボタン) をクリックして、フィールドを [フィールドマップ] に移動します。
      [必須 (Must have by)] および [必要な場合] をフィールドマップに追加します。
  5. [保存] ボタンをクリックして、[フィールドマップ] の変更を保存します。

  6. [u_must_have_by] フィールドマップの日付形式を設定します。

    1. [変換マップ] で、[フィールドマップ] 関連リストまでスクロールします。
    2. [フィールドマップ] の [ソースフィールド] 列にある [u_must_have_by] リンクをクリックします。
    3. [日付] 形式を [MM/dd/yy] に変更します。
    4. [更新] ボタンをクリックします。

すべてのフィールドに対して必須項目を強制する。

  1. ServiceNow ブラウザーのメインウィンドウの Application Navigator を使用して、[NeedIt] > [すべて] を開きます。

  2. 任意の NeedIt レコードを編集用に開きます。

  3. NeedIt フォームを調べて、どのフィールドが必須かを確認します (ヒント:*を探します)。変換マップにマッピングされていない必須の NeedIt フォームフィールドはありますか?

  4. 変換マップを編集します。

    1. ServiceNow ブラウザーのメインウィンドウで、Application Navigator を使用して [システムインポートセット] > [管理] > [変換マップ] を開きます。
    2. [NeedIt の履歴データをインポートする (Import Historic NeedIt Data)] リンクをクリックして、変換マップを編集用に開きます。
    3. [必須項目を強制] の値を [すべてのフィールド] に設定します。
  5. ターゲットレコードの [要求先メールアドレス (Requested for email)] フィールドに入力するスクリプトを作成します。

    1. [スクリプトを実行] オプションを選択 (チェック) します。
    2. 次のスクリプトをコピーします。
    // If the source data does not have a u_requested_for_email field, // create the target email address from the Requested for value. Email addresses // have the format firstname.lastname@example.com. Convert the u_requested_for // value to lowercase. Replace the space with a . and concatenate with // @example.com if(!("u_requested_for_email" in source)){ var name = source.u_requested_for.toLowerCase(); target.u_requested_for_email = name.replace(" ", ".") + "@example.com"; }
    1. スクリプトを [スクリプト] フィールドの transformRow 関数に貼り付けます。
  6. [更新] ボタンをクリックします。

日付フィールドをテストして必須項目を強制する

  1. 前回の演習でインポートした NeedIt レコードを削除します。

    1. ServiceNow ブラウザーのメインウィンドウの Application Navigator を使用して、[NeedIt] > [すべて] を開きます。
    2. 左端の列の選択ボックスをクリックして、インポートされたレコードをそれぞれ選択します。レコードの [番号] は、スクリーンショット内の [番号] とは異なる場合があります。[簡単な説明] フィールドを使用して、インポートされたレコードを特定します。
      インポートされたレコードを選択する
    3. [リスト選択] アクションメニュー ([リスト選択] アクションメニュー) をクリックし、[削除] メニューアイテムを選択します。
    4. [確認] ダイアログで、[削除] ボタンをクリックします。
  2. needitimportdata.csv ファイルのデータをステージングテーブルにロードします。

    1. ServiceNow ブラウザーのメインウィンドウで、Application Navigator を使用して [システムインポートセット] > [管理] > [データソース] を開きます。
    2. needitimportdata.csv (アップロード済み) のレコードを編集用に開きます。
    3. [関連リンク] までスクロールし、[すべてのレコードをロード] リンクをクリックします。
  3. [進行状況] ページの [次のステップ...] セクションで、[変換の実行] リンクをクリックします。

  4. [インポートセットと変換マップを指定] ページで、[NeedIt の履歴データをインポートする (Import Historic NeedIt Data)] マップが [選択したマップ、順番に実行] スラッシュバケットにあることを確認します。

    変換が実行対象として選択されています。

  5. [変換] ボタンをクリックします。

  6. [進行状況] ページで、変換が正常に行われたことを確認します。

    変換成功

  7. [次のステップ...] セクションで、[変換履歴] リンクをクリックします。

  8. [変換履歴] のステータスが [完了] になっていることを確認します。

  9. Application Navigator で、[NeedIt] > [すべて] を開きます。インポートされた 5 つのレコードが表示されます。テーブル内のレコードの [番号] は、スクリーンショット内の [番号] とは異なる場合があります。

    インポートされたレコード

  10. インポートされたレコードを編集用に開きます。

  11. [メールアドレスを要求 (Requested for email)] フィールドに値があることを確認します。この値が期待する値かどうか確認します。そうでない場合は、デバッグして再テストします。

  12. [必要な場合 (When needed)] フィールドに値があることを確認します。この値が正しい形式かどうか確認します。そうでない場合は、デバッグして再テストします。

質問[必要な場合 (When needed)] フィールドのタイムスタンプが 00:00:00 であるのはなぜですか?
ソリューション:ソースデータには日付値がありますが、時刻値はありません。[必要な場合 (When needed)] フィールドは、日付/時刻データタイプを使用します。時刻が指定されていない場合、ServiceNow の時間はデフォルトで 00:00:00 に設定されます。

結合

  1. [簡単な説明] を除くすべてのマッピングされたフィールドで結合するように、[変換マップ] を編集します。

  2. ServiceNow ブラウザーのメインウィンドウで、Application Navigator を使用して [システムインポートセット] > [管理] > [変換マップ] を開きます。

  3. [NeedIt の履歴データをインポートする (Import Historic NeedIt Data)] リンクをクリックして、変換マップを編集用に開きます。

  4. [フィールドマップ] 関連リストまでスクロールします。

  5. 4 つのフィールドマップの [結合] の値を true に設定します。

    1. [u_short_description] を除くフィールドマップの各行で、[結合] 列の値をダブルクリックします。
      リスト内のフィールド値をダブルクリックして編集します。
    2. [結合] の値をデフォルト値の false から true に変更します。
    3. [値を保存 (Save value)] ボタン ([リスト保存] ボタン)をクリックします。
    4. 結合インデックスに関するメッセージが表示された場合は、メッセージ内の指示に従って、新しいインデックスを作成する必要があるかどうかを確認してください。新しいインデックスは必要ないはずです。
  6. 既存のレコードを更新するが、新しいレコードは挿入しないように、変換スクリプトを作成します。

    1. [変換スクリプト] 関連リストに切り替えます。
    2. [新規] ボタンをクリックします。
    3. [時期] の値を [onBefore] に設定します。
    4. 次のスクリプトをコピーして runTransformScript 関数に貼り付けます。
    // If the coalesce field(s) determine there is no match between the // source data row and the target table, do not create a record in // the target table. if (action == 'insert') { ignore = true; }
  7. [送信] ボタンをクリックして、onBefore 変換スクリプトを保存します。

結合をテストしてスクリプトを変換する

  1. 前回の演習でインポートした 3 つの NeedIt レコードを削除します。

    1. ServiceNow ブラウザーのメインウィンドウの Application Navigator を使用して、[NeedIt] > [すべて] を開きます。
    2. 左端の列の選択ボックスをクリックして、インポートされた 3 つのレコードを選択します。
    3. [コンテキスト] メニュー ([コンテキスト] メニュー) をクリックし、[削除] メニューアイテムを選択します。
    4. [確認] ダイアログで、[削除] ボタンをクリックします。
  2. 残り 2 つのインポートされたレコードの [簡単な説明] フィールドの値を「このレコードはインポートによって挿入されます」に変更します。

    編集された [簡単な説明] フィールド

  3. needitimportdata.csv ファイルのデータをステージングテーブルにロードします。

    1. ServiceNow ブラウザーのメインウィンドウで、Application Navigator を使用して [システムインポートセット] > [管理] > [データソース] を開きます。
    2. needitimportdata.csv (アップロード済み) のレコードを編集用に開きます。
    3. [関連リンク] までスクロールし、[すべてのレコードをロード] リンクをクリックします。
  4. [進行状況] ページの [次のステップ...] セクションで、[変換の実行] リンクをクリックします。

  5. [インポートセットと変換マップを指定] ページで、[NeedIt の履歴データをインポートする (Import Historic NeedIt Data)] マップが [選択したマップ、順番に実行] スラッシュバケットにあることを確認します。

    変換が実行対象として選択されています。

  6. [変換] ボタンをクリックします。

  7. [進行状況] ページで、変換が正常に行われたことを確認します。

    変換成功

  8. [次のステップ...] セクションで、[変換履歴] リンクをクリックします。

  9. [変換履歴] のステータス[完了] になっていることを確認します。

  10. Application Navigator で、[NeedIt] > [すべて] を開きます。レコードが挿入されていないことを確認します。2 つのレコードで [簡単な説明] の値が更新されていることを確認します。ここで更新されたレコードは、スクリーンショットに示されている 2 つのレコードと異なる場合があります。表示されるレコードは、削除しなかった 2 つのレコードです。

    前にインポートした 2 つのレコードの説明が更新されていることを確認します。

質問:2 つのレコードの [簡単な説明] フィールドの値が変更されたのはなぜですか?
回答:変換マップは、[簡単な説明] を除くインポートフィールドで結合されます。データが変換されたときに、ServiceNow がデータソース (.csv ファイル) の 2 つの行を NeedIt テーブルの 2 つのレコードと照合してレコードを更新しました。

演習 (18/21)

演習:データのインポート作業を保存する (オプション)

開発者は、GitHub のようなソースコントロールアプリケーションを使用して、個人開発者インスタンス (PDI) の外部で変更をコミット (完了した作業を保存) できます。アプリケーションに対する変更内容をコミットして、作業をソースコントロールに保存します。

この演習では、このモジュールで完了した作業を GitHub リポジトリに保存します。

注意:ServiceNow が開発者プログラムの学習コンテンツで GitHub を使用する方法の詳細と、作業を保存する方法に関するビデオを見るには、『GitHub ガイド』を参照してください。

変更をコミット (Commit Changes)

  1. NeedIt アプリケーションが Studio で開かれていない場合は、ここで開きます。

    1. ServiceNow ブラウザーのメインウィンドウで、Application Navigator を使用して [システムアプリケーション] > [Studio] を開きます。

    2. [アプリケーションを選択] ダイアログで、このアプリケーションをクリックします。

  2. [ソースコントロール] メニューを開き、[変更をコミット] メニューアイテムを選択します。

    [変更をコミット (Commit Changes)] メニューアイテムを選択

  3. コミットする更新を選択します。

    1. [<アプリケーション> のソースコントロールにコミットするファイルを選択] ダイアログで、[すべての Update Sets] を選択します。
    2. コミットするアプリケーションファイルを確認します。
    3. [続行] ボタンをクリックします。

    ソースコントロールにコミットするファイルを選択する

  4. [NeedIt のソースコントロールにコミットするファイルを確認] ダイアログで、「完了したデータのインポートモジュール」などの [コミットのコメント] を入力します。

  5. [コミットファイル] ボタンをクリックします。

    コミットメッセージを入力

  6. [変更をコミット] ダイアログが成功を報告したら、[閉じる] ボタンをクリックします。

    変更が正常にコミットされました

    注意:変更のコミットに失敗した場合は、フォークしたリポジトリ URL ではなく ServiceNow のリポジトリ URL を [URL] フィールドに入力している可能性があります。GitHub 接続問題のトラブルシューティング方法については、『GitHub ガイド』の 「GitHub 問題のトラブルシューティング」を参照してください。

記事 (19/21)

データナレッジのインポートをテストする

ServiceNow へのデータのインポートに関する理解を確認したいときがあるかもしれません。自分の進行状況を評価するには、次の質問が役立ちます。質問ごとに回答を決定し、質問の任意の場所をクリックして回答を表示します。

質問:ServiceNow にデータをインポートする前にすべきことは、次のうちのどれですか?複数の回答が正解の場合があります。

  1. インポートする予定のデータを理解する
  2. 飼い犬と持ってこい遊びをする
  3. 不完全または誤ったデータの取り扱いを決定する
  4. どのソースデータをどのターゲットフィールドにマッピングするかを決定する
  5. 競合を避けるため、ターゲットテーブルの既存のレコードをすべて削除する


回答正解は 134 です。データをインポートする前にインポートの戦略を定義しておくと、時間と労力を節約できます。インポート後に不要なレコードを削除したり修正したりすると、手間と時間がかかる場合があります。飼い犬と遊ぶ時間を取ることはお勧めしますが、データのインポートの戦略を計画するために時間をかける必要はありません。


質問:正誤問題?データをインポートする際に重複したレコードを作成したくない場合は、インポートする前にすべての重複レコードをインポートソースから削除する必要がある。


回答誤りです。インポートデータセットに正確な情報が入っているのは良いことですが、重複レコードを取り扱う計画がある場合は、データセットから重複レコードを削除しなくてはならないわけではありません。たとえば、結合したり、変換スクリプトを使用して重複レコードの取り扱いを決めたりすることも可能です。


質問:ServiceNow にデータをインポートする際に使用できるデータソースは、次のうちのどれですか?複数の回答が正解の場合があります。

  1. CSV
  2. TXT
  3. JDBC
  4. XML
  5. HTTP


回答正解は 1345 です。TXT (テキスト) ファイルは、データソースとして使用できるファイルタイプではありません。


質問:データインポートのプロセスについて最も的確に説明しているのは次のうちのどれですか?

  1. 変換マップを使用して、データソースからステージングテーブルにデータを移動します。データの完全性を確認してから、レコードをターゲットテーブルに移動します。
  2. 変換マップを使用してデータソースからターゲットテーブルにレコードをロードし、データの完全性を検証します。
  3. データソースレコードをステージングテーブルにコピーします。フィールド名が 2 つのテーブル間で異なる場合にのみ、変換マップを使用してステージングテーブルからターゲットテーブルにレコードをコピーします。データの完全性を検証します。
  4. データソースからステージングテーブルにデータをロードします。変換マップを使用してステージングテーブルのフィールドからターゲットテーブルのフィールドにデータを移動し、データの整合性を検証します。
  5. 変換マップを使用してデータソースからステージングテーブルにレコードをロードし、データの完全性を検証します。


回答回答 4 が正解です。インポートプロセスのステップをスキップしたり、ステップの順序を変更したりすることはできません。


質問:変換マップについて最も的確に説明しているのは次のうちのどれですか?

  1. データソースの列をターゲットテーブルの列と照合する
  2. インポートのために重要なデータソース列を決定する
  3. 形式が一致しない場合に日付フィールドをインポートする
  4. スクリプトを使用して、誤ってインポートされたレコードを削除または修正する
  5. ステージングテーブルの列をターゲットテーブルの列と照合する


回答:回答 5 が正解です。変換マップは、ステージングテーブルの列をターゲットテーブルの列にマッピングします。変換マップはデータソースとはやり取りしません。変換マップで日付形式の問題を修正することはできますが、それが主な目的ではありません。


質問:必須のターゲットテーブルのフィールドの列や値がデータソースにない場合に当てはまるものは、次のうちのどれですか?複数の回答が正解の場合があります。

  1. レコードがターゲットテーブルにインポートされる
  2. レコードはターゲットテーブルにインポートできない
  3. 必須フィールドがマッピングされていなければ、レコードをインポートできる
  4. 必須フィールドがマッピングされていれば、レコードをインポートできる
  5. すべての必須フィールドがマッピングされていれば、レコードがインポートされる


回答すべての回答が正解です。必須フィールドに値がない場合にインポート中に何が起こるかは、変換マップの [必須項目を強制] 設定オプションによって異なります。レコードは、[必須項目を強制] オプションの条件が満たされるとインポートされます。その条件とは、必須フィールドの値が要求されない、マッピングされたフィールド値が必須である、すべての必須フィールドに値が必要であるのいずれかです。[必須項目を強制] オプションの条件が満たされていない場合、レコードはインポートされません。


質問:ServiceNow へのデータのインポートについて正しいのは、次のうちのどれですか?

  1. すべての変換マップに最低 1 つの結合フィールドが必要である

  2. すべてのインポートに最低 1 つの変換マップが必要である

  3. すべてのステージングテーブルは一度だけ使用できる

  4. すべてのアプリケーションにステージングテーブルが 1 つある

  5. すべての日付フィールドをマッピングする必要がある


回答回答 2 が正解です。重複レコードがターゲットテーブルに挿入される可能性があり、重複が望ましくないインポートの場合は、変換前に結合することをお勧めします。結合は絶対に必要なわけではありません。ステージングテーブルは再利用が可能です。すべてのアプリケーションにインポートされたデータがあるわけではないため、一部のアプリケーションにはステージングテーブルがない場合があります。日付フィールドと他のすべてのデータタイプのフィールドをマッピングする必要はありません。 開発者はステージングテーブルからすべての列をインポートする必要はありません。


質問:ステージングテーブルのレコードとターゲットテーブルのレコードの一致が結合によって検出された場合、考えられる結論は次のうちのどれですか?

  1. 重複レコードを作成する
  2. インポートを一時停止し、ユーザーに判断を仰ぐ
  3. ターゲットテーブルに既にあるレコードを保持する
  4. ターゲットテーブルのレコードをソースデータで上書きする
  5. インポートを停止し、以前にインポートしたレコードを削除する


回答正解は 34 です。変換マップの実行が開始されると、すべてのステージングテーブルレコードがターゲットテーブルで挿入、更新、無視、またはスキップされるまで、インポートの実行が継続されます。インポートの途中で停止してユーザーに操作を要求したり、以前にインポートしたレコードを削除したりすることはありません。


質問:変換イベントスクリプトでは、サーバー側のスクリプトを使用して変換の動作を変更します。変換イベントスクリプトのロジックはいつ実行されますか?複数の回答が正解の場合があります。

  1. データソースからステージングテーブルにデータがロードされるとき
  2. ユーザーが変換を実行したとき
  3. 変換マップが保存されたとき
  4. インポートが開始されて、ステージングテーブルのレコードがインポートされる前
  5. レコードが変換されようとするとき


回答回答 45 が正解です。実行される可能性のある変換イベントスクリプトのタイプは、onStartonAfteronBeforeonChoiceCreateonCompleteonForeignInsert、および onReject です。


記事 (20/21)

データモジュールのインポートのまとめ

コアコンセプト:

  • データソースはデータの送信元を定義するものである。

  • 変換フィールドマップはデータソースの列とターゲットテーブルの次のフィールドを照合する。

    • [一致フィールドの自動マップ] は、名前に基づいて列とフィールドを照合する。
    • [マッピング支援] は、選択した列とフィールドをペアリングする。
    • 変換マップスクリプトでソースオブジェクトとターゲットオブジェクトを使用し、サーバー側のスクリプトロジックを使用して列とフィールド値を設定する。
  • 結合による衝突の検出

    • 衝突が検出されると、ターゲットレコードが更新される。
    • 衝突が検出されない場合、レコードが挿入される。
    • 衝突動作を変更するには変換イベントスクリプトを使用する。
  • 変換が実行されると、ステージングテーブルに変換可能なデータが存在しなくなる。変換マップを再度テストするには、データソースからレコードを再ロードする。

  • 変換を計画するときは、次のことを行うかどうかを決定する。

    • ビジネスルールの実行
    • 必須項目を強制
    • 空の値のコピー

記事 (20/21)

データのインポートを完了した後の参考資料

「データのインポート」モジュールの完了おめでとうございます。データのインポートへの関心に基づいて、さらに次のことも学んでいただけます。

  • 送信 REST データ連携:この開発者サイト学習モジュールでは、REST APIs を使用して ServiceNow にデータをインポートする方法を学習します。
  • IntegrationHub の REST:この開発者サイト学習モジュールでは、REST を使用して Flow Designer を拡張し、外部プラットフォームとデータ連携する方法を学習します。
  • データのインポートに関するドキュメント:ServiceNow のドキュメントサイトには、Now Platform のリファレンスマニュアルに関する完全な参照資料一式があります。