データを同時にクリーニングしてフィルタリングする
2 つの前のチュートリアルでは、関数を使用してデータをフィルタリングし、データをクリーニングする方法を説明しました。ここでは、関数をネストして、両方のタスクを同時に実行する方法を説明します。
入れ子になった関数
別の関数内に関数をネストし、片方の関数だけでは得られない結果を得ることができます。
基本構造
1 レベルのネストでネストされた関数の基本構造を示します。
FUNCTION_2(FUNCTION_1(function_1 <入力>), function_2 <入力>)
FUNCTION_1( ) は完全に FUNCTION_2( ) 内に含まれていることがわかります。
評価の順序
ネストされた関数は最も内側の関数から最も外側の関数に向かって評価されます。このため、上記の一般的な例では次のようになります。
- FUNCTION_1(function_1 input) が最初に評価されます。
- FUNCTION_1( ) の出力は FUNCTION_2( ) の入力のいずれかになります。
- FUNCTION_2( ) は 2 番目に評価されます。
入力と出力について考える
一般的に、別の関数内で任意の Analytics 関数をネストし、必要な場合は複数のネスト レベルを作成できます。
ただし、関数の出力はそれを含む関数の入力要件を満たす必要があります。たとえば、関数にデータ入力が必要な場合、それを含む関数を日付時刻データ型の値を出力する必要があります。
要点
関数のネストは強力で柔軟な機能であり、有益なさまざまな結果を達成できます。データをコマンドに入力する準備で、ソース データの複数の変換を同時に実行できます。
大文字と小文字の標準化、複数の値でのフィルタリング
前のチュートリアルでは、MATCH( ) を使用して、複数の値をフィルタリングしました。MATCH( ) は大文字と小文字を区別します。このため、入力値の大文字と小文字が異なる場合、フィルターは不正確な結果を生成します。
正確な結果を得るには、UPPER( ) 関数を MATCH( ) 関数内でネストします。
例
Vendor_City フィールドを使用して、テーブルのレコードをフィルタリングしますが、都市名の入力が一貫していません。一部は先頭のみが大文字("Austin")で、一部はすべて大文字("AUSTIN")です。
UPPER( ) 関数を MATCH( ) 関数内にネストして、次のことができます。
- Vendor_City フィールドのすべての値を大文字に変換する
- 都市でレコードをフィルタリングする
フィルター条件をすべて大文字に調整し、UPPER() 関数による大文字値の出力と一致させる必要があります。
MATCH( UPPER(Vendor_City) , "AUSTIN", "CHICAGO")
以下のテーブルは、MATCH( ) 関数のみの使用と、ネストされた関数の使用との違いを示します。
MATCH( ) だけでは、フィルターが厳しすぎ、含まれるべきレコードが除外されます。
| 関数: | 関数: |
|---|---|
| MATCH(Vendor_City, "Austin", "Chicago") | MATCH( UPPER(Vendor_City), "AUSTIN", "CHICAGO") |
| Austin | Austin |
| Chicago | Chicago |
| AUSTIN | |
| CHICAGO |
ヒント
ネストされた関数を使用する代わりに、フィルター条件に変数を追加できます。MATCH(Vendor_City, "Austin", "AUSTIN", "Chicago", "CHICAGO").ただし、追加のフィルター条件では、このアプローチは作業が多くなり、"AUstin" などの入力ミスがある値を取り込めません。UPPER( ) のネストが適切な方法です。
メモ
MATCH( ) または UPPER( ) 関数を Vendor_City フィールドに適用するには、関数を使用する演算フィールドを作成します。演算フィールドは後続のチュートリアルで検討します。
大文字と小文字の標準化、先頭のスペースの削除、複数の値でのフィルタリング
1 レベルのネストにのみ制限されていません。要件に応じて、複数レベルのネストを作成できます。
注意:
- ネストされた関数は、最も内側から最も外側の関数へと評価されます。
- 関数の出力は、それを含む関数の入力要件を満たす必要があります。
例
2 番目の例では、Vendor_City フィールドのデータはさらに一貫性がありません。最初の文字が一致していないだけではなく、一部の値には 1 つ以上の先頭スペースがあり、スペースがないものもあります。
UPPER( ) 関数を ALLTRIM( ) 関数内で、ALLTRIM( ) 関数を MATCH( ) 関数内でネストすると、次のことができます。
- Vendor_City フィールドのすべての値を大文字に変換する
- すべての先頭空白スペースの削除
- 都市でレコードをフィルタリングする
MATCH( ALLTRIM( UPPER(Vendor_City) ) , "AUSTIN", "CHICAGO")
ヒント
ネストされた関数を作成するときには、先頭括弧と閉じ括弧の数が合わなくなることが多くあります。括弧がない場合や一致しないことは、関数エラーの一般的な原因です。
先頭括弧 ( の数は常に後の括弧 ) の数と一致する必要があります。上記の例では、3 つの先頭括弧と 3 つの閉じ括弧があります。
以下のテーブルは、MATCH( ) 関数のみの使用と、ネストされた関数の使用との違いを示します。
MATCH( ) だけでは、フィルターが厳しすぎ、含まれるべきレコードが除外されます。
| 関数: | 関数: |
|---|---|
| MATCH(Vendor_City, "Austin", "Chicago") | MATCH(ALLTRIM( UPPER(Vendor_City) ), "AUSTIN", "CHICAGO") |
| Austin | Austin |
| Chicago | Chicago |
| AUSTIN | |
| CHICAGO | |
| [ ] Austin | |
| [ ] [ ] [ ] Chicago | |
| [ ] [ ] AUSTIN | |
| [ ] CHICAGO | |
| [ ] = 空白 |
次の学習ステップ
関数を使用する方法のすべてのチュートリアルを修了したら、高度な関数の使用に進むことができます。
高度なチュートリアルでは、Analytics の主要機能での関数の使用方法を説明します。