# maketime スクリプトおよびチャート関数

この関数は、時間 hh、分 mm、秒 ss から算出された時間を返します。

構文:

MakeTime(hh [ , mm [ , ss ] ])

戻り値データ型： デュアル

引数

| 引数 | 説明 |
| --- | --- |
| hh | 時間 (整数)。 |
| mm | 分 (整数)。<br><br>分が指定されていない場合は、00 として処理されます。 |
| ss | 秒 (整数)。<br><br>秒が指定されていない場合は、00 として処理されます。 |

## maketime の使用目的

`maketime()` 関数は、時刻項目を生成するために、データ生成用のスクリプトで一般的に使用されます。時刻項目が入力テキストから派生する場合、そのコンポーネントを用いて時刻を構築するためにこの関数を使用できます。

これらの例は、時刻形式 `h:mm:ss` を使用しています。時刻書式は、データ ロード スクリプト上部の `SET TimeFormat` ステートメントで指定されています。必要に応じて、例の書式を変更してください。

関数の例

| 例 | 結果 |
| --- | --- |
| `maketime(22)` | 22:00:00 を返します。 |
| `maketime(22, 17)` | 22:17:00 を返します。 |
| `maketime(22,17,52 )` | 22:17:52 を返します。 |

## リージョンの設定

特に指定のない限り、このトピックの例では MM/DD/YYYY の日付書式を使用しています。 日付書式は、データ ロード スクリプトの `SET DateFormat` ステートメントで指定されています。既定の日付書式は、リージョンの設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。詳しくは「[アプリケーションとスクリプトの地域設定の変更](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm)」を参照してください。

アプリケーションの既定のリージョン設定は、ユーザー プロファイルに基づいています。これらのリージョンの書式設定は、Qlik Cloud ユーザー インターフェースに表示される言語とは関係ありません。Qlik Cloud は使用しているブラウザと同じ言語で表示されます。

アプリケーションの作成者は、作成するアプリケーションの既定のリージョンを設定できます。詳細については、「[Qlik Cloud Analytics でアプリとスクリプトを作成するための優先地域設定の設定](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting)」を参照してください。

## 例 1 – maketime()

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/maketime.htm)

#### ロード スクリプトと結果

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* `Transactions` というテーブルにロードされる、一連のトランザクションを含むデータセット。

* 3 つの項目 `hours`、`minutes` および `seconds` に提供されたトランザクション時刻。

* `TimeFormat` システム変数の形式で時刻を返す、項目 `transaction_time` の作成。

ロード スクリプト

```
SET TimeFormat='h:mm:ss TT';

Transactions:
    Load
        *,
        maketime(transaction_hour, transaction_minute, transaction_second) as transaction_time
        ; 
Load * Inline [
transaction_id, transaction_hour, transaction_minute, transaction_second, transaction_amount, transaction_quantity, customer_id
3750, 18, 43, 30, 12423.56, 23, 2038593
3751, 6, 32, 07, 5356.31, 6, 203521
3752, 12, 09, 16, 15.75, 1, 5646471
3753, 21, 43, 41, 7, 3036491
3754, 17, 55, 22, 21484.21, 1356, 049681
3756, 2, 52, 22, -59.18, 2, 2038593
3757, 9, 25, 23, 3177.4, 21, 203521
];
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `transaction_hour`

* `transaction_minute`

* `transaction_second`

* `transaction_time`

結果テーブル

| transaction\_hour | transaction\_minute | transaction\_second | transaction\_time |
| --- | --- | --- | --- |
| 2 | 52 | 22 | 2:52:22 AM |
| 6 | 32 | 07 | 6:32:07 AM |
| 9 | 25 | 23 | 9:25:23 AM |
| 12 | 09 | 16 | 12:09:16 PM |
| 17 | 55 | 22 | 5:55:22 PM |
| 18 | 43 | 30 | 6:43:30 PM |
| 21 | 43 | 41 | 9:43:41 PM |

`transaction_time` 項目は、`maketime()` 関数を使用して、関数の引数として時間、分、秒の項目を渡すことにより、先行する LOAD ステートメントで作成されます。

次に関数はこれらの値を組み合わせて時刻項目に変換し、`TimeFormat` システム変数の時刻形式で結果を返します。

## 例 2 – time() 関数

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/maketime.htm)

#### ロード スクリプトと結果

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* 最初の例と同じデータセットとシナリオ。

* 項目 `transaction_time` の作成。これにより、`TimeFormat` システム変数を変更せずに、24 時間の時刻形式で結果を表示できます。

ロード スクリプト

```
SET TimeFormat='h:mm:ss TT';

Transactions:
    Load
        *,
        time(maketime(transaction_hour, transaction_minute, transaction_second),'h:mm:ss') as transaction_time
        ; 
Load * Inline [
transaction_id, transaction_hour, transaction_minute, transaction_second, transaction_amount, transaction_quantity, customer_id
3750, 18, 43, 30, 12423.56, 23, 2038593
3751, 6, 32, 07, 5356.31, 6, 203521
3752, 12, 09, 16, 15.75, 1, 5646471
3753, 21, 43, 41, 7, 3036491
3754, 17, 55, 22, 21484.21, 1356, 049681
3756, 2, 52, 22, -59.18, 2, 2038593
3757, 9, 25, 23, 3177.4, 21, 203521
];
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `transaction_hour`

* `transaction_minute`

* `transaction_second`

* `transaction_time`

結果テーブル

| transaction\_hour | transaction\_minute | transaction\_second | transaction\_time |
| --- | --- | --- | --- |
| 2 | 52 | 22 | 2:52:22 |
| 6 | 32 | 07 | 6:32:07 |
| 9 | 25 | 23 | 9:25:23 |
| 12 | 09 | 16 | 12:09:16 |
| 17 | 55 | 22 | 17:55:22 |
| 18 | 43 | 30 | 18:43:30 |
| 21 | 43 | 41 | 21:43:41 |

この場合、`maketime()` 関数は `time()` 関数内にネストされています。`time()` 関数の第 2 引数は、`maketime()` 関数の結果を必要な `h:mm:ss` として設定します。

## 例 3 – チャート オブジェクトの例

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/maketime.htm)

#### ロード スクリプトとチャートの数式

概要

データ ロード エディターを開き、以下のロード スクリプトを新しいセクションに追加します。

ロード スクリプトには次が含まれています:

* `Transactions` というテーブルにロードされる、一連のトランザクションを含むデータセット。

* 2 つの項目 `hours` と `minutes` に提供されたトランザクション時刻。

* `TimeFormat` システム変数の形式で時刻を返す、項目 `transaction_time` の作成。

`h:mm:ss TT` 形式で時刻を返す、チャート オブジェクト メジャー `transaction_time`。

ロード スクリプト

```
SET TimeFormat='h:mm:ss TT';

Transactions:
Load * Inline [
transaction_id, transaction_hour, transaction_minute, transaction_amount, transaction_quantity, customer_id
3750, 18, 43, 12423.56, 23, 2038593
3751, 6, 32, 5356.31, 6, 203521
3752, 12, 09, 15.75, 1, 5646471
3753, 21, 43, 7, 3036491
3754, 17, 55, 21484.21, 1356, 049681
3756, 2, 52, -59.18, 2, 2038593
3757, 9, 25, 3177.4, 21, 203521
];
```

結果

データをロードしてシートを開きます。新しいテーブルを作成し、これらの項目を軸として追加します:

* `transaction_hour`

* `transaction_minute`

`transaction_time` を計算するには、次のメジャーを作成します:

`=maketime(transaction_hour,transaction_minute)`

結果テーブル

| transaction\_hour | transaction\_minute | =maketime(transaction\_hour, transaction\_minute) |
| --- | --- | --- |
| 2 | 52 | 2:52:00 AM |
| 6 | 32 | 6:32:00 AM |
| 9 | 25 | 9:25:00 AM |
| 12 | 09 | 12:09:00 PM |
| 17 | 55 | 5:55:00 PM |
| 18 | 43 | 6:43:00 PM |
| 21 | 43 | 9:43:00 PM |

`transaction_time` メジャーは、`maketime()` 関数を使用し、関数の引数として時間と分項目を渡すことにより、チャート オブジェクトで作成されます。

関数は次にこれらの値を組み合わせ、秒は 00 と推測されます。次にこれらの値が組み合わされて時刻項目に変換され、`TimeFormat` システム変数の形式で結果を返します。

## 例 4 – シナリオ

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/maketime.htm)

#### ロード スクリプトとチャートの数式

概要

8 時間増分に分割された、2022 年 1 月のカレンダー データセットを作成します。

ロード スクリプト

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';

tmpCalendar:
	load 
		*
    where year(date)=2022;
load
	date(recno()+makedate(2021,12,31)) as date
AutoGenerate 31;

Left join(tmpCalendar)
load
	maketime((recno()-1)*8,00,00) as time
autogenerate 3;

Calendar:
load
	timestamp(date + time) as timestamp
resident tmpCalendar;

drop table tmpCalendar;
```

結果

結果テーブル

| タイムスタンプ |
| --- |
| 1/1/2022 12:00:00 AM |
| 1/1/2022 8:00:00 AM |
| 1/1/2022 4:00:00 PM |
| 1/2/2022 12:00:00 AM |
| 1/2/2022 8:00:00 AM |
| 1/2/2022 4:00:00 PM |
| 1/3/2022 12:00:00 AM |
| 1/3/2022 8:00:00 AM |
| 1/3/2022 4:00:00 PM |
| 1/4/2022 12:00:00 AM |
| 1/4/2022 8:00:00 AM |
| 1/4/2022 4:00:00 PM |
| 1/5/2022 12:00:00 AM |
| 1/5/2022 8:00:00 AM |
| 1/5/2022 4:00:00 PM |
| 1/6/2022 12:00:00 AM |
| 1/6/2022 8:00:00 AM |
| 1/6/2022 4:00:00 PM |
| 1/7/2022 12:00:00 AM |
| 1/7/2022 8:00:00 AM |
| 1/7/2022 4:00:00 PM |
| 1/8/2022 12:00:00 AM |
| 1/8/2022 8:00:00 AM |
| 1/8/2022 4:00:00 PM |
| 1/9/2022 12:00:00 AM |
| さらに 68 行以上 |

開始時の autogenerate 関数は、tmpCalendar と呼ばれるテーブルに 1 月の日付をすべて含むカレンダーを作成します。

3 つのレコードを含む 2 番目のテーブルが作成されます。各レコードについて、recno() – 1 (値 0、1、2) が取得され、結果が 8 で乗算されます。その結果、これは値 0、8、16 を生成します。これらの値は maketime() 関数で分と秒の値を 0 とする時刻パラメータとして使用されます。その結果、テーブルには 3 つの時刻項目 (12:00:00 AM、8:00:00 AM、および 4:00:00 PM) が含まれます。

このテーブルは、tmpCalendar テーブルと結合されます。2 つのテーブル間で結合するために一致する項目がないため、時刻行は各日付行に追加されます。その結果、各日付行が各時刻値ごとに 3 回繰り返されるようになります。

最後に、カレンダー テーブルが tmpCalendar テーブルの resident load から作成されます。日付と時刻項目は、timestamp() 関数で連結されて囲まれ、タイムスタンプ項目が作成されます。

次に、tmpCalendar テーブルが削除されます。