前のチュートリアルでシンプルにするために、多数の Analytics 関数の例はリテラル入力値を使用しています。たとえば、"john SMITH"、"VT-123-45" などです。 しかし、Analytics テーブルのフィールドの値の全体セットに関数を適用するにはどうするのでしょうか。
関数をフィールド全体に適用すると、月別のテーブルのレコードのグループ化などのタスクを実行できます。
演算フィールド
フィールドのすべての値に関数を適用する 1 つの方法は、演算フィールドを作成することです。 演算フィールドは一般的に実際の物理フィールドに基づいて作成するフィールドですが、Analytics によって計算される値から構成されます。
関数の出力と同様に、メモリに存在する Analytics によって計算された仮想データと演算フィールドを見なすことができます。 計算すると、この仮想データは後続の処理で使用できます。
演算フィールドを作成し、月別にレコードをグループ化する
MONTH( ) 関数を使用して、請求日フィールドのすべての日付から月の部分を抽出する Month演算フィールドを作成できます。 月別にテーブルのレコードをグループ化できます。
演算フィールドを作成する
- Analytics で Sample Project.ACL を開き、Ap_Trans テーブル (Tables\Accounts_Payable\Ap_Trans) を開きます。
Sample Project.ACL がない場合は、日付フィールドがある他のテーブルを開きます。 この例を操作するときには、フィールドが日付時刻データ型である必要があります。
- Month 演算フィールドを作成するには、次の手順を実行します。
- テーブル ビューの上部にある[テーブル レイアウトの編集
]を選択します。
- [テーブル レイアウト
]ダイアログボックスで[新しい式の追加] をクリックします。
- Name フィールドで Month と入力し、Default Value フィールドでこのバージョンの MONTH( ) 関数をコピーして貼り付けます。
MONTH(Invoice_Date)
Ap_Trans テーブルを使用していない場合は、フィールド名を更新して、データに合わせます。
- [入力を受け入れる
] をクリックし、[テーブル レイアウト]ダイアログ ボックスを終了します。
- テーブル ビューで Invoice Date 列のヘッダーを右クリックし、[使用可能なフィールド]の下で[列の追加]を選択し、[月]をダブルクリックして、[OK]をクリックします。
結果: Month 演算フィールドがビューに追加されます。 Invoice Date 列の各日付の月の部分が含まれ、1 ~ 12 の数値で表示されます。
- [開いているプロジェクトの保存
] をクリックして変更を保存します。
- テーブル ビューの上部にある[テーブル レイアウトの編集
月別のレコードをグループ化する
Month 演算フィールドを作成したので、これを使用して、Ap_Trans テーブルのレコードをグループ化できます。
- メイン メニューから、[分析 > 要約]を選択します。
- [要約日]リストから、Monthフィールドを選択します。
- [小計フィールド]リストで Invoice_Amount を選択します。
- [出力]タブをクリックし、[ファイル]を選択して、Name フィールドに Ap_Trans_grouped と入力して、[OK]をクリックします。
結果: Analytics は新しいテーブルを出力します。これは Ap_Trans テーブルのレコードを月別にグループ化します。 月ごとに請求金額小計があり、月に発生するレコード数のカウントがあります。
Month Invoice Amount Count 1 85,670.22 12 2 4,496.56 6 3 2,941.80 5 4 467.40 1 5 8,272.57 5 6 1,582.86 2 7 3,101.98 4 8 21,146.96 2 9 32,577.32 20 10 41,595.89 19 11 70,779.26 19 12 6,008.51 7
提案される活動:月名の表示
CMOY( ) 関数を使用すると、月の名前を表示する場合に、2 番目の演算フィールドを作成できます。 CMOY は "Character Month of Year" の略語です。
- Ap_Trans テーブルで、Month 演算フィールドを作成したのに使用したのと同じ手順に従い、テーブル ビューに追加します。ただし、こちらの手順では次の点が異なります。
- Name フィールドで「Month_2」と入力します。
- Default Value フィールドでこのバージョンの CMOY( ) 関数をコピーして貼り付けます。
CMOY(Invoice_Date, 9)
結果: Month_2 演算フィールドは各月の名前でビューに追加されます。
- Ap_Trans テーブルから月別にレコードをグループ化するのに使用したのと同じ手順に従います。ただし、こちらの手順では次の点が異なります。
- [その他のフィールド]リストで "Month_2" を選択します。
- [出力]タブで出力ファイル名 Ap_Trans_grouped_2 を指定します。
結果: Analytics は新しいテーブルを出力します。これは Ap_Trans テーブルのレコードを月別にグループ化します。ただし、月名が含まれます。
Month Invoice Amount Count Month_2 1 85,670.22 12 January 2 4,496.56 6 February 3 2,941.80 5 March 4 467.40 1 April 5 8,272.57 5 May 6 1,582.86 2 June 7 3,101.98 4 July 8 21,146.96 2 August 9 32,577.32 20 September 10 41,595.89 19 October 11 70,779.26 19 November 12 6,008.51 7 December
演算フィールドの作成をスキップする
多くの場合、関数を複数の値に適用する方法として演算フィールドを作成することが有効です。 ただし、Analytics で同じ結果を実現し、作業を合理化するには、Analytics コマンド内で直接関数を埋め込みます。
関数を埋め込んで月別にレコードをグループ化する
上記と同じ例を使用しますが、演算フィールドを作成しません。 代わりに、関数を直接要約コマンドに埋め込みます。
- Ap_Trans テーブルを開く。
- メイン メニューから、[分析 > 要約]を選択します。
MONTH( ) 関数を埋め込む
- [要約オン]をクリックし、[Expr]をクリックします。
- 式ビルダーで[関数]リストの "MONTH( date/datetime )" をダブルクリックします。
ヒント
MONTH( ) 関数を見つけやすくするには、関数リストの上部のドロップダウン フィルダーから[日時]を選択します。
- [式]テキストボックスで日付時刻を選択し、使用可能なフィールド リストで Invoice_Date をダブルクリックします。
[式]テキストボックスには MONTH( Invoice_Date ) があります。
メモ
式はよく知っている式のように見えます。 前の例の演算フィールドと同じです。要約コマンドに埋め込まれているだけです。
- [OK]をクリックして、式ビルダーを終了し、[OK]をクリックして、[フィールドの選択]ダイアログボックスを終了します。
CMOY( ) 関数を埋め込む
- [他のフィールド]をクリックし、[Expr]をクリックします。
- 式ビルダーで関数リストの CMOY( date/datetime , length ) をダブルクリックします。
- [式]テキストボックスで、"日付/日付時刻" を "Invoice_Date" に、"長さ" を "9" に置き換えます。
[式]テキストボックスに CMOY( Invoice_Date , 9) が表示されるはずです。
- [OK]をクリックして、式ビルダーを終了し、[OK]をクリックして、[フィールドの選択]ダイアログボックスを終了します。
要約処理の確定
- [小計フィールド]リストで Invoice_Amount を選択します。
- [出力]タブをクリックし、[ファイル]を選択して、Name フィールドに Ap_Trans_grouped_3 と入力して、[OK]をクリックします。
結果: Analytics は新しいテーブルを出力します。これは Ap_Trans テーブルのレコードを月別にグループ化します。 2 つの埋め込まれた関数が表示されます。
MONTH(Invoice_Date) Invoice Amount Count CMOY(Invoice_Date, 9) 1 85,670.22 12 January 2 4,496.56 6 February 3 2,941.80 5 March 4 467.40 1 April 5 8,272.57 5 May 6 1,582.86 2 June 7 3,101.98 4 July 8 21,146.96 2 August 9 32,577.32 20 September 10 41,595.89 19 October 11 70,779.26 19 November 12 6,008.51 7 December
要点
2 つの異なる方法を使用して、まったく同じ結果を実現します。
- 演算フィールド コマンドでフィールドを使用する前に演算フィールドを作成することは、文字通り段階的なアプローチです。 複数の目的で演算フィールドを使用する場合は、適切なアプローチであることがあります。
- 埋め込み関数演算フィールドの作成を回避し、コマンドに関数を埋め込むことは、より合理化されたアプローチです。 スクリプトのコンテキストでは適切なアプローチになることがあり、より効率的なスクリプトを生成します。
提案された活動:曜日別にレコードをグループ化する
関数の使用をさらに練習し、演算フィールドを作成するか、コマンドに関数を埋め込む場合は、上記の活動の一部またはすべてをやり直し、DOW( ) および CDOW( ) 関数を代替します。
DOW( ) および CDOW( ) は MONTH( ) および CMOY( ) に非常に似ています。ただし、年の月ではなく、日付の曜日を抽出します。
ヒント
DOW( ) および CDOW( ) を使用すると、さまざまな曜日で売上値がどのように変化するのかを分析できます。
関数のテストのヒント
コマンドラインで DISPLAY 方法を使用して、演算フィールドを作成するときまたはコマンドに関数を埋め込むときの出力の概要を確認できます。
- Ap_Trans テーブルが開いている状態で、このバージョンの UPPER( ) 関数をコマンドラインに貼り付け、貼り付けられた関数の前に DISPLAY とスペースを入力して、Enter を押します。
UPPER(Vendor.Vendor_Name)
UPPER( ) 関数はすべての入力テキストを大文字に変換します。
Ap_Trans テーブルの最初のレコードが選択される場合、関数出力は MORE POWER INDUSTRIES です。
- テーブルで、レコード番号 6 を選択します。
レコードを番号をクリックし、レコードを選択します。 選択されているレコードの番号が緑色で強調表示されます。
- 関数をコマンドラインに入力するか再読み込みし、Enter を押します。
関数出力は UNITED EQUIPMENT です。
- 1 つまたは 2 つの他のレコードを選択し、処理を繰り返します。
要点:レコード単位で、演算フィールドまたは埋め込み関数が Vendor.Vendor_Name フィールドのすべての値に対して実行する内容が表示されます。
入力用のフィールドを取得する Analytics 関数でこのテスト方法を使用できます。
次の学習ステップ
関数と変数を使用して対話機能を作成する方法を学習する: 関数で変数を使用してユーザー入力を許可する