米国の電話番号を分割
このテンプレートでは、米国の電話番号をコンポーネントにパースする方法を示します。パーシング ルールに従って [PhoneNumber] フィールド内の各トークンを分割し、それらを [CountryCode]、[AreaCode]、[Exchange]、[Number] の 4 つのフィールドにコピーします。
ビジネス シナリオ
サービス提供エリアを広げつつある、あるワイヤレス サービス プロバイダは、ユーザからかかってくる電話番号データを分析するプロジェクトを発足しました。
以下のデータフローは、このビジネス シナリオの解決策を示しています。
このデータフロー テンプレートは Enterprise Designer で使用できます。[ParseUSPhoneNumbers] を選択します。このデータフローでは、Data Normalization モジュールが必要です。
に移動し、このデータフローでは、データをファイルから読み取り、Open Parser ステージで処理します。入力ファイルの各データ行に以下の操作を行います。
Read from File
このステージでは、パースする電話番号が記録されているファイルの名前、格納場所、およびレイアウトを識別します。
Open Parser
このステージでは、ドメインエディタで作成されたカルチャー固有ドメイン グラマーを使うか、ドメインに依存しないグラマーを使うかを定義します。ドメインエディタで作成したカルチャー固有のパーシング グラマーは、カルチャーとドメインに関連付けられた、検証済みのパーシング グラマーです。Open Parser で作成したカルチャーに依存しないパーシング グラマーは、カルチャーとドメインに関連付けられていない、検証済みのパーシング グラマーです。
このテンプレートでは、パーシング グラマーはドメインに依存しないグラマーとして定義されています。
Open Parser ステージでは、次のようにコマンドと式が定義されたパーシング グラマーを使用します。
%Tokenize
は、None に設定されています。Tokenize
をNone
に設定する場合、パーシング グラマー ルールは、ルール定義内に空白などのトークン区切り文字を含む必要があります。%InputField
は、[PhoneNumber] フィールドから入力データを取得してパースするように設定されています。%OutputFields
は、パースしたデータを [CountryCode]、[AreaCode]、[Exchange]、[Number] の 4 つのフィールドにコピーするように設定されています。<root>
式では、パースするトークンのパターンが定義され、OR 文 (|) が使用されます。以下のような電話番号が有効です。- [CountryCode]、[AreaCode]、[Exchange]、および [Number] または
- [AreaCode]、[Exchange]、および [Number] または
- [Exchange] および [Number]
パーシング グラマーでは、正規表現とリテラル文字を組み合わせて使い、電話番号のパターンを作成します。このパーシング グラマーでは、二重引用符に囲まれた文字は、リテラル文字列または正規表現として扱われます。
<root>
コマンドで使われるプラス記号 (+) は、引用符で囲まれているのでリテラル文字として定義されます。一重引用符または二重引用符は、リテラル文字を示すために使用できます。プラス記号を引用符で囲まずに使うと、その前にある式が 1 回以上繰り返して出現できるという意味になります。
電話番号ドメイン ルールは、以下の文字パターンにマッチするように定義されています。
- "+" 文字の 0 回または 1 回の出現。
- CountryCode ルール。これは 0 ~ 9 の 1 文字を意味します。
- 左丸括弧、ハイフン、またはスペース文字の 0 回または 1 回の出現。これらの文字のいずれかが 2 つ並んで出現すると、非マッチとなります。つまり、無効な電話番号と判定されます。
- AreaCode ルール。これは 0 ~ 9 の数字が 3 つ並ぶことを意味します。
- 左丸括弧、ハイフン、またはスペース文字の 0 回または 1 回の出現。これらの文字のいずれかが 2 つ並んで出現すると、非マッチとなります。つまり、無効な電話番号と判定されます。
- Exchange ルール。これは 0 ~ 9 の数字が 3 つ並ぶことを意味します。
- 左丸括弧、ハイフン、またはスペース文字の 0 回または 1 回の出現。これらの文字のいずれかが 2 つ並んで出現すると、非マッチとなります。つまり、無効な電話番号と判定されます。
- Number ルール。これは 0 ~ 9 の数字が 4 つ並ぶことを意味します。
ドメインを定義するルール変数では、必須の OutputFields
コマンドで定義された出力フィールドと同じ名前を使う必要があります。
パーシング グラマーでは、正規表現と式の数量詞を組み合わせて使い、米国の電話番号のパターンを作成します。パーシング グラマーでは次の特殊な文字を使用します。
- "?" 文字は、その位置に正規表現が 0 回または 1 回出現できることを意味します。
- (|) 文字は、OR 条件を示します。
- ";" 文字は、ルールの終了を意味します。
[コマンド] タブでは、パーシング グラマーで使用できるその他の特殊な記号にマウス ポインターを重ねると、その記号の説明が表示されます。
パーシング グラマーをテストするには、[プレビュー] タブをクリックします。以下に示す電話番号を [PhoneNumber] フィールドに入力し、[プレビュー] をクリックします。
また、他の有効または無効な電話番号を入力して、入力データがどのようにパースされるのかを確認することもできます。
トレース機能を使うと、最終的なパース結果やパーシング過程をグラフィカルな表示で確認できます。[トレース] 列のリンクをクリックして、そのデータ行の [トレース詳細] を表示します。
Write to File
このテンプレートには、1 つの Write to File が含まれます。入力フィールドだけでなく、出力ファイルにも [CountryCode]、[AreaCode]、[Exchange]、[Number] の各フィールドが含まれます。