now - スクリプトおよびチャート関数
この関数は、現在の時刻のタイムスタンプを返します。この関数は、TimeStamp システム変数形式の値を返します。既定の timer_mode 値は 1 です。
構文:
now([
timer_mode])
戻り値データ型: dual
now() 関数は、ロード スクリプトまたはチャート オブジェクトのいずれかで使用できます。
引数
timer_mode
|
以下の値を取ることができます。
0 (最後にデータ ロードが終了した時刻) 1 (関数を呼び出した時刻) 2 (アプリを開いた時刻)
情報メモデータ ロード スクリプトでこの関数を使用する場合、timer_mode=0 を指定すると最後にデータ ロードが終了した時刻を取得でき、timer_mode=1 を指定すると現在のデータ ロードで関数を呼び出した時刻を取得できます。
|
ヒント メモnow() 関数はパフォーマンスに大きな影響を与えるため、テーブルの数式でその関数を使用するとスクロールの問題が発生する可能性があります。その関数を使用しなくても問題がない場合は、代わりに today() 関数を使用することを推奨します。レイアウトで now() の使用が必要な場合は、定期的な再計算が必要ないため、可能な限り既定の設定以外の now(0) または now(2) を使用することを推奨します
使用に適しているケース
now() 関数は、数式内のコンポーネントとしてよく使用されます。例えば、製品のライフサイクルで残った時間を計算するのに使用できます。now() 関数は、数式に 1 日の端数を使用する場合に today() 関数の代わりに使用されます。
次のテーブルは、timer_mode 引数に異なる値を与えた場合に、now() 関数が返す結果についての説明を提供しています。
関数の例
0 |
TimeStamp システム変数形式で、最新のデータ リロードの前に成功した前回のデータ リロードのタイムスタンプを返します。 |
TimeStamp システム変数形式で、最新のデータ リロードのタイムスタンプを返します。 |
1
|
TimeStamp システム変数形式で、最新のデータ リロードのタイムスタンプを返します。 |
TimeStamp システム変数形式で、関数呼び出しのタイムスタンプを返します。 |
2
|
TimeStamp システム変数形式で、アプリケーションでユーザーのセッションが開始されたときのタイムスタンプを返します。これは、ユーザーがスクリプトをリロードしない限り構成されます。 |
TimeStamp システム変数形式で、アプリケーションでユーザーのセッションが開始されたときのタイムスタンプを返します。これは、新しいセッションが開始されたり、アプリケーションのデータがリロードされたりすると、更新されます。 |
地域の設定
特に指定のない限り、このトピックの例では次の日付書式を使用しています: MM/DD/YYYY。日付書式は、データ ロード スクリプトの SET DateFormat ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。詳しくは「アプリとスクリプトの地域設定の変更」を参照してください。
アプリの既定地域設定は、ユーザー プロファイルに基づいています。これらの地域の書式設定は、Qlik Cloud ユーザー インターフェースに表示される言語とは関係ありません。Qlik Cloud は使用しているブラウザと同じ言語で表示されます。
アプリの作成者は、作成するアプリの既定の地域を設定できます。詳細については、「Qlik Cloud Analytics でアプリとスクリプトを作成するための優先地域設定の設定」を参照してください。
例 1 – ロード スクリプトを使用したオブジェクトの生成
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
この例では、now() 関数を使用して 3 つの変数を作成しています。各変数は、timer_mode オプションの 1 つを使って効果を示します。
変数が目的を示すためには、スクリプトをリロードしてからしばらくして、2 回目のスクリプトのリロードを行います。これにより、now(0) と now(1) 変数で異なる値が表示されるため、目的が正しく示されます。
ロード スクリプト
LET vPreviousDataLoad = now(0);
LET vCurrentDataLoad = now(1);
LET vApplicationOpened = now(2);
結果
データが 2 回目にロードされたら、次の手順を使用して 3 つのテキストボックスを作成します。
最初に、以前にロードされたデータのテキストボックスを作成します。
次の手順を実行します。
-
[テキストと画像] チャート オブジェクトを使用して、テキストボックスを作成します。
-
次のメジャーをオブジェクトに追加します。
=vPreviousDataLoad
-
[スタイル] で Show titles を選択し、オブジェクトに「前回のリロード時刻」というタイトルを追加します。
次に、現在ロードしているデータのテキストボックスを作成します。
次の手順を実行します。
-
[テキストと画像] チャート オブジェクトを使用して、テキストボックスを作成します。
-
次のメジャーをオブジェクトに追加します。
=vCurrentDataLoad
-
[スタイル] で Show titles を選択し、オブジェクトに「現在のリロード時刻」というタイトルを追加します。
アプリケーションでユーザーのセッションがいつ開始されたかを示す最終的なテキストボックスを作成します。
次の手順を実行します。
-
[テキストと画像] チャート オブジェクトを使用して、テキストボックスを作成します。
-
次のメジャーをオブジェクトに追加します。
=vApplicationOpened
-
[スタイル] で Show titles を選択し、オブジェクトに「ユーザー セッション開始」というタイトルを追加します。
上記の図は、作成された変数それぞれの値の例を示しています。例えば、次のような値が考えられます。
-
前回のリロード時刻: 6/22/2022 8:54:03 AM
-
現在のリロード時刻: 6/22/2022 9:02:08 AM
-
ユーザー セッション開始: 6/22/2022 8:40:40 AM
例 2 – ロード スクリプトを使用しないオブジェクトの生成
概要
この例では、アプリケーションに変数もデータもロードせずに、now() 関数を使用して 3 つのチャート オブジェクトを作成します。各チャート オブジェクトは、timer_mode オプションの 1 つを使って効果を示します。
この例にロード スクリプトはありません。
次の手順を実行します。
-
データ ロード エディタを開きます。
-
既存のロード スクリプトを変更せずに、[データのロード] をクリックします。
-
少し待ってから、2 回目のスクリプトのロードを行います。
結果
データが 2 回目にロードされたら、3 つのテキストボックスを作成します。
まず、最新のデータ リロードのテキストボックスを作成します。
次の手順を実行します。
-
[テキストと画像] チャート オブジェクトを使用して、テキストボックスを作成します。
-
次のメジャーを追加します。
=now(0)
-
[スタイル] で [タイトルを表示] を選択し、オブジェクトに「最新のデータ リロード」というタイトルを追加します。
次に、現行時刻を示すテキストボックスを作成します。
次の手順を実行します。
-
[テキストと画像] チャート オブジェクトを使用して、テキストボックスを作成します。
-
次のメジャーを追加します。
=now(1)
-
[スタイル] で [タイトルを表示] を選択し、オブジェクトに「現在の時刻」というタイトルを追加します。
アプリケーションでユーザーのセッションがいつ開始されたかを示す最終的なテキストボックスを作成します。
次の手順を実行します。
-
[テキストと画像] チャート オブジェクトを使用して、テキストボックスを作成します。
-
次のメジャーを追加します。
=now(2)
-
[スタイル] で [タイトルを表示] を選択し、オブジェクトに「ユーザー セッションを開始」というタイトルを追加します。
上記の図は、作成されたオブジェクトそれぞれの値の例を示しています。例えば、次のような値が考えられます。
-
最新のデータ リロード: 6/22/2022 9:02:08 AM
-
現在の時刻: 6/22/2022 9:25:16 AM
-
ユーザー セッション開始: 6/22/2022 8:40:40 AM
「最新のデータ リロード」チャート オブジェクトは timer_mode 値 0 を使用します。これにより、データのリロードが前回成功したときのタイムスタンプが返されます。
「現在の時刻」チャート オブジェクトは timer_mode 値 1 を使用します。これにより、システム時計に従って現在の時刻が返されます。シートまたはオブジェクトが更新された場合、この値は更新されます。
「ユーザー セッションを開始」チャート オブジェクトは timer_mode 値 2 を使用します。これにより、アプリケーションが開かれ、ユーザーのセッションが開始されたときのタイムスタンプが返されます。
例 3 – シナリオ
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ユーザーは、各マイニング リグが消費電力で今月今までに費やした総費用を、id 別に表示するテーブルを求めています。
この値は、チャート オブジェクトが更新されるたびに更新されます。現在の電気の費用は $0.0678/kWH です。
ロード スクリプト
SET DateFormat='MM/DD/YYYY';
Inventory:
Load
*
Inline
[
id,purchase_date,wph
8188,1/7/2022,1123
8189,1/19/2022,1432
8190,2/28/2022,1227
8191,2/5/2022,1322
8192,3/16/2022,1273
8193,4/1/2022,1123
8194,5/7/2022,1342
8195,5/16/2022,2342
8196,6/15/2022,1231
8197,6/26/2022,1231
8198,7/9/2022,1123
8199,7/22/2022,1212
8200,7/23/2022,1223
8201,7/27/2022,1232
8202,8/2/2022,1232
8203,8/8/2022,1211
8204,8/19/2022,1243
8205,9/26/2022,1322
8206,10/14/2022,1133
8207,10/29/2022,1231
];
結果
データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:id。
次のメジャーを作成します:
=(now(1)-monthstart(now(1)))*24*wph/1000*0.0678
チャート オブジェクトが 6/22/2022 10:39:05 AM に更新された場合、次の結果を返します。
結果テーブル
8188 |
$39.18 |
8189 |
$49.97 |
8190 |
$42.81 |
8191 |
$46.13 |
8192 |
$44.42 |
8193 |
$39.18 |
8194 |
$46.83 |
8195 |
$81.72 |
8196 |
$42.95 |
8197 |
$42.95 |
8198 |
$39.18 |
8199 |
$42.29 |
8200 |
$42.67 |
8201 |
$42.99 |
8202 |
$42.99 |
8203 |
$42.25 |
8204 |
$43.37 |
8205 |
$46.13 |
8206 |
$39.53 |
ユーザーは、オブジェクトが更新されるたびにオブジェクト結果を更新したいと思っています。そのため、数式で now() 関数のインスタンスに対して timer_mode 引数が提供されます。月の始めのタイムスタンプは、now() 関数を monthstart() 関数のタイムスタンプ引数として使用することで特定されるのですが、now() 関数によって特定される現在の時刻から差し引かれます。これにより、今月今までに経過した合計時間 (日) がわかります。
この値は 24 (1 日の時間数) で、次に wph 項目の値によって乗算されます。
ワット数/時からキロワット数/時に変換するには、提供された kWH 率で最後に乗算する前に、結果を 1000 で除算します。