Analytics関数を使って検索とフィルタリングを行う

Analytics 関数を使用して、テーブルのデータに対して、強力で効果的な検索とフィルタリングを実行することができます。

関数を使用して検索またはフィルタリングを実行するためのガイドライン

フィールド名

検索するフィールド名としては、テーブル ビュー内の表示名でなく、テーブル レイアウト内の物理フィールド名を指定する必要があります。

ヒント

物理フィールド名を確認するには、テーブル ビュー内の列ヘッダーを右クリックし、[プロパティ]を選択します。

二重引用符 テキストの検索語は "二重引用符" で囲む必要があります。
バッククオート 日付時刻の検索語は `バッククオート` で囲む必要があります。
日付時刻書式
  • 日付時刻の検索語には YYYYMMDD または YYMMDD の書式を使用する必要があります。
  • 時刻の部分には hhmmss 書式を使用する必要があります。また、その前には 1 つの空白スペース、文字 ‘t’、または文字 ‘T’ を付ける必要があります。 例:`t183000`
  • 日付または時刻の個々の要素の間に、スラッシュ(/)やコロン(:)のような区切り文字をいっさい使用しないでください。
関連付けられたフィールド 関連付けられたフィールドで検索を行うには、フィールドの完全修飾名(つまり、テーブル名.フィールド名)を指定する必要があります。
関数の規則

どの関数にも、サポートされるデータ型や大文字と小文字の区別など、その動作を制御する特定の規則があります。

Analytics の検索関数を制御する規則同士の比較対照表が掲載されていますので、Analytics 検索関数の比較を参照してください。 各関数の詳細については、下記のリンク付き関数名をクリックしてください。

検索のタイプ

関数を使用して、テキスト、数値、日付時刻データを検索またはフィルタリングできます。 ただし、検索またはフィルタリングしているデータ型に合った正しい関数を使用する必要があります。

  • 関数でサポートされるデータ型 関数は特定のデータ型で機能するように設計されています。また、場合によっては、複数のデータ型に対応することもあります。

    たとえば、ISBLANK( ) 関数はテキスト データ(文字データ)で使用できますが、数値または日付時刻データでは使用できません。 MATCH( ) または BETWEEN( ) 関数は、文字、数値、日付時刻データで使用できます。

  • データのデータ型検索またはフィルタリングしているデータのデータ型を認識し、データ型に合った関数を使用する必要があります。 一般的に、数字と日付のデータ型は数値または日付時刻です。 ただし、文字データ型を使用する場合もあります。

メモ

各関数の詳細については、下記の関数名をクリックしてください。

テキスト検索(文字データ型)

単一の検索語を検索する

使用方法: FIND( ) 関数

説明:制限が最も少ない検索関数です。 大文字と小文字を区別しません。 個々のフィールドまたは複数のフィールドに加え、レコード全体を検索することができます。

結果

FIND("United Equipment")

レコード内のどこかに "United Equipment" という名前が入っているすべてのレコードを分離します。

FIND("Equip")

レコード内のどこかに "Equip" という文字列が入っているすべてのレコードを分離します。

FIND("United Equipment", Vendor_Name)

Vendor_Name フィールドに "United Equipment" という名前が入っているすべてのレコードを分離します。

FIND("United Equipment", Vendor.Vendor_Name)

関連する Vendor テーブルの Vendor_Name フィールドに "United Equipment" という名前が含まれるすべてのレコードを分離します。

空白のテキスト値を検索する

使用方法: ISBLANK( ) 関数

説明:文字フィールドで空白値を検索することができます。

結果

ISBLANK(First_Name)

First_Name が空白であるすべてのレコードを分離します。

複数のテキスト語を検索する

使用方法: FINDMULTI( ) 関数

説明:FIND( ) と似ていますが、複数の検索語を指定できる点が異なります。

結果

FINDMULTI(RECORD, "United Equipment", "Muller Corp.")

レコードのどこかに "United Equipment" または "Muller Corp" という名前が入っているすべてのレコードを分離します 。

FINDMULTI(RECORD, "equip", "supp")

“equip” または "supp" という文字列が含まれるすべてのレコードを分離します。

FINDMULTI(RECORD, "United Equipment", "Muller Corp.")

レコードのどこかに "United Equipment" または "Muller Corp" という名前が入っているすべてのレコードを分離します 。

FINDMULTI(RECORD, "United Equipment", "Muller Corp.")

レコードのどこかに "United Equipment" または "Muller Corp" という名前が入っているすべてのレコードを分離します 。

使用方法: MATCH( ) 関数

説明:多目的に使える検索関数です。1 つのフィールドで同時に複数の検索語を探したり、複数のフィールドで同じ検索語を探したりすることができます。 また、2 つのフィールドで一致する値を検索することもできます。

結果

MATCH(Vendor_City, "Phoenix", "Austin", "Los Angeles")

Vendor_City フィールド内の値が "Phoenix"、"Austin"、または "Los Angeles" と正確に一致するか、またはこれらの文字列で始まるすべてのレコードを分離します。

NOT MATCH(Vendor_City, "Phoenix", "Austin", "Los Angeles")

Vendor_City フィールド内の値が "Phoenix"、"Austin"、または "Los Angeles" と正確に一致しないか、またはこれらの文字列で始まらないすべてのレコードを分離します。

MATCH(Product_Code, "A", "D", "F")

Product_Code フィールド内の製品コードが "A"、"D"、または "F" であるか、もしくは "A"、"D"、"F" で始まるすべてのレコードを分離します。

MATCH(Product_Code, "A", "D", "F")

Product_Code フィールド内の製品コードが 1 文字の "A"、"D"、または "F" であるすべてのレコードを分離します。

正確な文字比較を行う]オプションをオンにする必要があります。

メモ

MATCH( ) に関する例では、特に指定のない限り、[正確な文字比較を行う]オプションはオフになっているものとします。

大文字と小文字の区別があるテキスト語を検索する

使用方法: MATCH( ) 関数

説明:多目的に使える検索関数です。1 つのフィールドで同時に複数の検索語を探したり、複数のフィールドで同じ検索語を探したりすることができます。 また、2 つのフィールドで一致する値を検索することもできます。

結果

MATCH(Last_Name, "SMITH")
Last_Name フィールドの値が "SMITH"(すべて大文字)になっているすべてのレコードを分離します。
MATCH(Last_Name, "smith")
Last_Name フィールドの値が "smith"(すべて小文字)になっているすべてのレコードを分離します。
MATCH(Last_Name, "Smith")
Last_Name フィールドの値が "Smith"(単語の先頭文字が大文字)になっているすべてのレコードを分離します。

複数のフィールドでテキスト語を検索する

使用方法: MATCH( ) 関数

説明:多目的に使える検索関数です。1 つのフィールドで同時に複数の検索語を探したり、複数のフィールドで同じ検索語を探したりすることができます。 また、2 つのフィールドで一致する値を検索することもできます。

結果

MATCH("Phoenix", Vendor_City, City, City_2)

Vendor_City、City、または City_2 フィールドの値のうち少なくとも 1 つが "Phoenix" と正確に一致するか、またはこの文字列で始まるすべてのレコードを分離します。

複数のテキスト語に一致させる検索を行う

使用方法: MATCH( ) 関数

説明:多目的に使える検索関数です。1 つのフィールドで同時に複数の検索語を探したり、複数のフィールドで同じ検索語を探したりすることができます。 また、2 つのフィールドで一致する値を検索することもできます。

結果

MATCH(Vendor_Address, Employee_Address)

業者と従業員の住所がまったく同じであるすべてのレコードを分離します。

業者と従業員の住所の形式を統一する必要がある場合は、その他の関数を使用します。

特定の文字または部分文字列の 1 つまたは複数の出現を検索する

使用方法: OCCURS( ) 関数

説明:文字フィールドにおける、部分文字列の 1 つまたは複数の出現を検索することができます。

結果

OCCURS(Invoice_Number, "-") > 1

請求書番号にハイフンが 2 つ以上入っているすべてのレコードを分離します。

OCCURS(Full_Name, ALLTRIM(Last_Name))=1

Last_Name フィールドの値が Full_Name フィールドに現れるすべてのレコードを分離します。

式に ALLTRIM( ) 関数を含めると、Last_Name フィールドの先頭と末尾のスペースがすべて取り除かれ、テキスト値のみが比較されるようになります。

OCCURS(Vendor_Name, "UNITED EQUIPMENT") > 0

Vendor_Name フィールドに "UNITED EQUIPMENT" という名前が大文字で入っているすべてのレコードを分離します。

FIND( ) 関数とは異なり、OCCURS( ) 関数は大文字と小文字を区別します。

特定のバイト位置で始まる部分文字列を検索します。

使用方法: AT( ) 関数

説明:文字フィールドで、続いて現れる部分文字列を検索して、目的の部分文字列の開始バイト位置を特定することができます。

結果

AT(2, "-", Invoice_Number) > 10

請求書番号に 2 つ以上のハイフンが入っており、2 つ目のハイフンが、文字列内の 10 番目の文字より後に現れるすべてのレコードを分離します。

範囲のテキストの検索

使用方法: BETWEEN( ) 関数

説明:範囲内に入っているテキスト値を検索することができます。

結果

BETWEEN(Last_Name, "C", "K")

Last_Name フィールドの値が、"C" から "K" まで(これらの値も含む)の文字で始まるすべてのレコードを分離します。

正確な文字比較を行う]オプションをオフにする必要があります。

ほぼ同じテキスト値(あいまい重複)を検索する

使用方法: ISFUZZYDUP( ) 関数

説明:同じ値だけでなく、ほぼ同じ値(あいまい重複)を検索することができます。 大文字と小文字を区別しません。

使用方法: LEVDIST( ) 関数

説明:ISFUZZYDUP( ) と似ていますが、デフォルトで大文字と小文字が区別される点が異なります。

結果

ISFUZZYDUP(Last_Name, "Braun", 2)

Last_Name フィールドに "Braun" という名前か、または "Braun" のあいまい重複が入っているすべてのレコードを分離します。

この例では、レーベンシュタイン距離(あいまいさの度合い)を 2 に設定していますが、この値は増減できます。

LEVDIST(TRIM(Last_Name), "Braun") < 3

Last_Name フィールドに "Braun" という名前か、または "Braun" のあいまい重複が入っているすべてのレコードを分離します。

この例では、レーベンシュタイン距離(あいまいさの度合い)を < 3 に設定していますが、この値は増減できます。

式に TRIM( ) 関数を含めると、Last_Name フィールドから先頭のスペースがすべて取り除かれ、テキスト値のみが比較されるようになります。

基本的なパターンを検索する

使用方法: MAP( ) 関数

説明:ワイルドカード文字、リテラル文字、またはその両方の組み合わせを使って検索を行うことができます。

結果

MAP(Invoice_Number, "XX99999")

請求書番号が、2 つの文字の後に 5 つの数字が続く構成であるか、またはこの構成で始まるすべてのレコードを分離します。

MAP(Invoice_Number, "AB12345")

請求書番号が "AB12345" であるか、または "AB12345" で始まるすべてのレコードを分離します。

MAP(Invoice_Number, "AB99999")

請求書番号が、"AB" の後に 5 つの数字が続く構成であるか、またはこの構成で始まるすべてのレコードを分離します。

NOT MAP(SSN, "999-99-9999")

SSN フィールドの値が社会保障番号の標準形式と一致しないすべてのレコードを分離します。

複雑なパターンを検索する

使用方法: REGEXFIND( ) 関数

説明:最も強力で柔軟性のある検索関数です。 リテラル文字とメタ文字を組み合わせた正規表現を使用して検索することができます。 他の検索関数を使用するより複雑になることがあります。

結果

REGEXFIND(Vendor_City, "Phoenix|Austin|Los Angeles")

Vendor_City フィールドの値に "Phoenix"、"Austin"、または "Los Angeles" を含んでいるすべてのレコードを分離します。

REGEXFIND(Product_Code, "\b\d{3}-[a-zA-Z]{6}\b")

製品コードが、3 つの数字で始まり、その後に 1 つのハイフンと 6 つの文字が続くすべてのレコードを分離します。

REGEXFIND(Product_Code, "\b\d{3,}-[a-zA-Z]{6}")

製品コードが、3 つ以上の数字で始まり、その後に 1 つのハイフンと 6 つ以上の文字が続くすべてのレコードを分離します。

数値検索

数値を検索する

使用方法: MATCH( ) 関数

説明:多目的に使える検索関数です。1 つのフィールドで同時に複数の検索語を探したり、複数のフィールドで同じ検索語を探したりすることができます。 また、2 つのフィールドで一致する値を検索することもできます。

結果

MATCH(Invoice_Amount,154.00)
$154.00 の請求金額が含まれるすべてのレコードを分離します。
MATCH(Invoice_Amount,154.00, 522.00)
$154.00 または $522.00 の請求金額が含まれるすべてのレコードを分離します。
NOT MATCH(Inventory_Value_at_Cost, Cost_x_Quantity)

Inventory_Value_at_Cost フィールドの金額と演算フィールド Cost_x_Quantity の金額が異なるすべてのレコードを分離します。

範囲の数字の検索

使用方法: BETWEEN( ) 関数

説明:範囲内に入っている数値を検索することができます。

結果

BETWEEN(Invoice_Amount, 1000, 5000)

請求金額が 1000 ドルから 5000 ドルまで(これらの値も含む)であるすべてのレコードを分離します。

テーブル全体からの数字の検索

使用方法: FIND( ) 関数

説明:個々のフィールドまたは複数のフィールドに加え、レコード全体を検索することができます。

使用方法: FINDMULTI( ) 関数

説明:FIND( ) と似ていますが、複数の検索語を指定できる点が異なります。

メモ

FIND( ) や FINDMULTI( ) 関数を使って数値や日付時刻値を検索する際には、注意が必要です。 これらの関数はソース データ ファイル(.fil)内の厳密に一致する文字を検索しますが、このような文字はテーブル ビューでは様々な外観で表示されます。

検索結果に一貫性がないように思われる場合は、[テーブル レイアウト]ダイアログ ボックスでソース データを調べてください。

結果

FIND("154.00")

ソース データ ファイルから、154.00 という文字がこのまま含まれるすべてのレコードを分離します。

日付時刻検索

日付時刻値を検索する

使用方法: MATCH( ) 関数

説明:多目的に使える検索関数です。1 つのフィールドで同時に複数の検索語を探したり、複数のフィールドで同じ検索語を探したりすることができます。 また、2 つのフィールドで一致する値を検索することもできます。

結果

MATCH(Invoice_Date, `20170731`)

請求日が 2017 年 7 月 31 日であるすべてのレコードを分離します。

MATCH(Invoice_Date, `20170731`, `20170831`, `20170930`)

第 3 四半期の各月末の日付が入った請求書が含まれるすべてのレコードを分離します。

空白または無効な日付値の検索

使用方法: VERIFY( ) 関数

説明:日付フィールドで空白値または無効な値を検索することができます。

結果

NOT VERIFY(Invoice_Date)

Invoice_Date フィールドの日付が空白か無効であるすべてのレコードを分離します。

範囲の日付時刻値の検索

使用方法: BETWEEN( ) 関数

説明:範囲内に入っている日付時刻値を検索することができます。

結果

BETWEEN(Invoice_Date, `20140930`, `20141030`)

請求日が 2014 年 9 月 30 日から 2014 年 10 月 30 日まで(これらの日付も含む)であるすべてのレコードを分離します。

NOT BETWEEN(Invoice_Date, `20140930`, `20141030`)

請求日が 2014 年 9 月 30 日から 2014 年 10 月 30 日まで(これらの日付も含む)の範囲内でないすべてのレコードを分離します。

テーブル全体からの日付時刻値の検索

使用方法: FIND( ) 関数

説明:個々のフィールドまたは複数のフィールドに加え、レコード全体を検索することができます。

使用方法: FINDMULTI( ) 関数

説明:FIND( ) と似ていますが、複数の検索語を指定できる点が異なります。

メモ

FIND( ) や FINDMULTI( ) 関数を使って日付時刻値を検索する際には、注意が必要です。 これらの関数はソース データ ファイル(.fil)内の厳密に一致する文字を検索しますが、このような文字はテーブル ビューでは様々な外観で表示されます。

検索結果に一貫性がないように思われる場合は、[テーブル レイアウト]ダイアログ ボックスでソース データを調べてください。

結果

FINDMULTI(RECORD, "31/07/2017", "31/08/2017")

ソース データ ファイルから、31/07/2017 または 31/08/2017 という文字がこのまま含まれるすべてのレコードを分離します。

日付時刻書式(YYYYMMDD、YYMMDD、hhmmss、hhmm)に関する一般的な制限は、FIND( ) oや FINDMULTI( ) を使って日付時刻値を検索する際には適用されません。

Analytics 検索関数の比較

次の表に、Analytics 検索関数同士での主要機能の比較対照表を示します。 各関数を制御する特定の規則がどのような点で異なっているかを知ると、Analytics 内で検索表現を作成する際に役立ちます。

検索時のデータ型

検索する場所(フィールド、レコード)

先頭スペースの検索

大文字と小文字の区別

部分一致

複数の検索語

[正確な文字比較を行う]オプション(SET EXACT ON/OFF)による影響