スクリプトでの決定
実行することにはすべて決定があり、スクリプトも同じです。場合によっては、一部の他の条件が真である場合にのみコマンドを実行したいことがあります。また、含まれるデータによってテーブルの一部のレコードを処理する場合があります。ACLScript はスクリプトでの複数の決定方法を提供し、すべては条件式を使用します。
条件式とは何か
条件式は真または偽に評価される式です。条件式はスクリプトで実行される処理を支持し、スクリプト作成者によって指定されます。
これはかなり技術的な定義ですが、簡単な実際の例を使用すると、その意味がわかりやすくなります。
例
通りを歩き、知っている人にあったとします。この人に挨拶することは礼儀正しいのですが、会ったときに「おはようございます」というのか、「こんにちは」というのでしょうか。
答えは簡単な条件によって決まります。12:00 PM を過ぎているかどうかです。答えがはいの場合、「こんにちは」、そうでない場合は「おはようございます」と言います。
この例では、条件式は、真(はい)と評価されるかどうかによって、実行するアクション(使用する挨拶)を決定します。
前の例の式は ACLScript で次のように翻訳できます。
COMMENT 現在時刻が 12:00 PM を過ぎているかどうかを確認する
NOW() >= `t120000`
次の行をコピーして Analytics のコマンドラインに貼り付けると、この例を実行できます。これを実行する時刻によって、式が真または偽に評価されます。
DISPLAY NOW() >= `t120000`
ヒント
コマンド ラインが表示されていない場合は、[ウィンドウ > コマンド ライン]の順にクリックします。
例を実行すると、式でリテラル時刻値の 12:00 PM を変更し、反対に評価されるようにすることができます。
コマンドが実行されるかどうかを決定する
Analytics は IF コマンドを提供し、コマンドを実行するかどうかを決定できるようにします。コマンドには 2 つの入力が必要です。
- 条件式
- 式が真の場合に実行するコマンド
条件式が偽と評価された場合、コマンドは実行されません。
"こんにちは" と言う
上記の例を続け、次のコードをコマンドラインに貼り付けます。
IF NOW() >= `t120000` DISPLAY "こんにちは"
時刻が 12:00 PM を過ぎている場合は、DISPLAY コマンドが出力タブに "こんにちは" を出力します。一方、ローカル時刻がまだ午前中の場合は、何も出力されません。スクリプトは DISPLAY コマンドを実行しません。
"おはようございます" と言う
式が偽と評価された場合に、コマンドに "おはようございます" と出力させる方法は何でしょうか。一部のスクリプト言語は "else" 構文を提供し、真と偽の両方を処理しますが、ACLScript では提供されていません。代わりに、2 番目の IF コマンドを反対の式で使用します。
この式をコマンドラインに貼り付けます。
IF NOW() < `t120000` DISPLAY "おはようございます"
この例は前のように動作します。ただし、時刻が 12:00 PM より前の場合、DISPLAY コマンドが "おはようございます" を出力します。
スクリプトの内容
これまでは、例がコマンドラインからのみ使用できる DISPLAY コマンドに制限されています。しかし、スクリプトでは、同じ原理が適用されます。挨拶を表示タブに出力する代わりに、この例ではスクリプトが挨拶を変数 v_greeting に格納します。
COMMENT 時間によって正しい挨拶を保存する
IF NOW() >= `t120000` ASSIGN v_greeting = "こんにちは"
IF NOW() < `t120000` ASSIGN v_greeting = "おはようございます"
このスクリプトが 12:00 PM より前に実行される場合、変数に格納された値は "おはようございます" です。12:00 PM 以降に実行される場合は、変数に格納された値は "こんにちは" です。これをスクリプト エディターに貼り付け、実行します。実行した後に変数タブで変数の値を確認できます。
処理するレコードを決定する
上記のようにスクリプトがコマンドを実行するかどうかを決定するときがありますが、テーブルの特定のレコードにのみコマンドを実行するときもあります。これは別の決定シナリオですが、IF コマンドを使用する場合とは異なります。
選択したレコードを処理する状況では、ACLScript はさまざまなコマンドで IF パラメーターを提供します。このアプローチを使用するときには、コマンドは入力として条件式を指定する必要があります。式はテーブルの各レコードに対してテストされ、真と評価されるときには、レコードが処理されます。
COMMENT Quantity が 5 より大きいレコードの Amount フィールドを合計する
TOTAL Amount IF Quantity > 5
午後に発生する取引を計算する
同じ条件式 NOW( ) >= `t120000` を使用して、午後に発生したテーブルのすべての取引の合計を計算できます。取引データの次のテーブルを考慮します。
| Transaction_Amount | Unit_Cost | Product_No | Transaction_Date | Quantity |
|---|---|---|---|---|
| 618.3 | 6.87 | 070104397 | 2000-11-17 12:00 | 90 |
| 6705.12 | 6.87 | 070104677 | 2000-11-17 9:30 | 976 |
| 7955.46 | 6.87 | 070104657 | 2000-11-17 14:45 | 1158 |
| 4870.83 | 6.87 | 070104327 | 2000-11-17 15:00 | 709 |
| 10531.71 | 6.87 | 070104377 | 2000-11-17 9:57 | 1533 |
| 5734 | 47 | 030414313 | 2000-10-30 1:00 | 122 |
| 2196 | 18 | 030414283 | 2000-10-30 18:25 | 122 |
Transaction_Amount フィールドの合計を計算するには、TOTAL コマンドを使用します。
COMMENT Transaction_Amount フィールドを合計
TOTAL Transaction_Amount
このコマンドは、テーブルのすべてのレコードを処理し、すべての取引の合計である合計 38,611.42 を計算します。
決定をコマンドに追加し、12:00 PM 以降に発生した取引のみを処理するには、IF パラメーターを TOTAL に追加します。最初に例の同じ条件式を使用しますが、NOW( ) を取引日の時刻部分で置換します。
COMMENT 午後に発生したすべての取引の Transaction_Amount フィールドを合計
COMMENT 関数を使用して Transaction_Date フィールドの時刻部分を抽出
TOTAL Transaction_Amount IF CTOT(TIME(Transaction_Date)) >= `t120000`
コマンドでは、関数を使用して、取引日の時刻部分を分離する必要がありますが、一度実行すると、最初の例と同じ条件式(12:00 PM 以降か?)が決定になります。答えがはいの場合、金額が合計に含まれます。
このコマンドは、テーブルのすべての午後の取引の合計である合計 15,640.59 を計算します。