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

Dual() は、数値と文字列を組み合わせて 1 つのレコードにし、そのレコードの数値表現をソートや計算に使用できるようする一方で、文字列値を表示に使用できるようにします。

[Dual Function](https://play.vidyard.com/vNa9jcN6DizzYQ1hDZ5VAr)

構文:

Dual(text, number)

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

情報メモデュアルの戻り値はすべて右揃えです。

引数

| 引数 | 説明 |
| --- | --- |
| text | 数値引数と組み合わせて使用される文字列値。 |
| number | 文字列引数の文字列と組み合わせて使用される数値。 |

Qlik Sense では、すべての項目値がデュアル値になる可能性があります。つまり、項目値には、数値とテキスト値の両方を含むことができることを意味します。この一例となるのが日付で、数値の 40908 とテキスト表記の '2011-12-31' の両方が可能です。

情報メモ1 つの項目に読み込まれている複数のデータ アイテムで、文字列表現が異なっていても同じ有効な数値が表現があるなら、それらはすべて最初に出現した文字列表現を共有します。

ヒント メモdual 関数は、一般的にスクリプトの早い段階、関係する項目に他のデータが読み取られる前に使用され、フィルター パネルなどで表示される最初の文字列表現を作成します。

例: チャートの数式

| 例 | 説明 |
| --- | --- |
| `Dual(IF(DayOfWeek = 0, 'Monday',`<br>`IF(DayOfWeek = 1, 'Tuesday',`<br>`If(DayOfWeek = 2 ,'Wednesday',`<br>`If(DayOfWeek = 3 ,'Thursday',		If(DayOfWeek = 4 ,'Friday',		If(DayOfWeek = 5 ,'Saturday',		 If(DayOfWeek = 6 ,'Sunday'`<br>`))))))), DayOfWeek)` | 項目 `DayOfWeek` は、ビジュアライゼーションで軸として使用できます。テーブルでは、曜日はアルファベット順ではなく、正しい番号順に自動的に並べ替えられます。 |
| `Dual(Pick( Priority , 'Low','Medium','High'), Priority)` | 項目 `Priority` は、ビジュアライゼーションで軸として使用できます。テーブルでは、項目 `Priority` はアルファベット順ではなく、正しい番号順に自動的に並べ替えられます。 |
| `Dual('Q' & Ceil(Month(Date)/3), Ceil(Month(Date)/3))` | 項目 `Date` は、ビジュアライゼーションで軸として使用できます。テキスト値 `Q1` 〜 `Q4` が作成され、数値 `1` 〜 `4` が割り当てられます。 |
| `Dual(WeekYear(Date) & '-W' & Week(Date), WeekStart(Date))` | 項目 `Date` は、ビジュアライゼーションで軸として使用できます。この例では、`'2012-W22'` 形式のテキスト値を作成し、同時に、週の最初の日の日付番号に対応する数値 (例: `41057`) を割り当てます。 |

例: ロード スクリプト

| 例 | 説明 |
| --- | --- |
| スクリプトに次の例を追加して実行します。<br><br>`Load dual ( NameDay,NumDay ) as DayOfWeek inline` `[ NameDay,NumDay` `Monday,0` `Tuesday,1` `Wednesday,2` `Thursday,3` `Friday,4` `Saturday,5` `Sunday,6 ];` | 項目 `DayOfWeek` は、たとえばビジュアライゼーションで軸として使用できます。テーブルでは、曜日はアルファベット順ではなく、正しい番号順に自動的に並べ替えられます。 |
| `Load<br>Dual('Q' & Ceil(Month(Now())/3), Ceil(Month(Now())/3)) as Quarter<br>AutoGenerate 1;` | この例では、現在の四半期を取得します。Now 関数が年の最初の 3 か月で実行される場合、`Q1` と表示され、年の 2 番目の 3 か月で実行される場合、`Q2` と表示され、以下同様に表示されます。ただし、ソートで使用する場合、`Quarter` は数値 1 ～ 4 として動作します。 |
| `Dual('Q' & Ceil(Month(Date)/3), Ceil(Month(Date)/3)) as Quarter` | 上の例に示されているように、項目 `Quarter` はテキスト値 `Q1` ～ `Q4` を用いて作成され、数値 `1` ～ `4` が割り当てられます。これをスクリプトで使用するには、`Date` の値をロードする必要があります。 |
| `Dual(WeekYear(Date) & '-W' & Week(Date), WeekStart(Date)) as YearWeek` | この例では、項目 `YearWeek` (`2012-W22` 形式のテキスト値 を持つ) を作成し、同時にその週の最初の日の日付値に対応する数値を割り当てます (例:`41057`。これをスクリプトで使用するには、`Date` の値をロードする必要があります。 |

## 例 - Dual の基本

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/FormattingFunctions/Dual.htm)

#### チャートの数式

概要

データセットには顧客サービス データが含まれています。曜日別の通話回数を確認しようとしています。

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

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

* 「`Example`」というデータ テーブルにロードされるデータセット。

* データ テーブル内の次の項目:

  * `DayOfWeek`
  * `NoOfCalls`

ロード スクリプト

```
Example:
Load * inline [
DayOfWeek, NoOfCalls
0, 25000
1, 30000
2, 27500
3, 32000
4, 23250
5, 28950
6, 32350
];
```

結果

データをロードしてシートを開きます。新しい棒グラフを作成し、次のいずれかの方法で軸を追加します。

1. 軸の数式に、次を追加します。

   ```
   =Dual(IF(DayOfWeek = 0, 'Monday',
   IF(DayOfWeek = 1, 'Tuesday',
   If(DayOfWeek = 2 ,'Wednesday',
   If(DayOfWeek = 3 ,'Thursday',
   If(DayOfWeek = 4 ,'Friday',
   If(DayOfWeek = 5 ,'Saturday',
   If(DayOfWeek = 6 ,'Sunday'
   ))))))), DayOfWeek) 
   ```

2. この方法はより効率的です。軸の数式に、次を追加します。

   ```
   =Dual(pick( DayOfWeek +1 , 'Monday','Tuesday','Wednesday', 'Thursday','Friday', 'Saturday','Sunday' ), DayOfWeek)
   ```

次のメジャーを作成します:

* `=Sum(NoOfCalls)`、通話回数を計算します。

結果: 曜日別の通話回数を示す棒グラフ

結果: 曜日別の通話回数を示す棒グラフ

結果: 曜日別の通話回数を示す棒グラフ ![軸の数式の Dual 関数を使用して作成された軸を持つ棒グラフ](https://help.qlik.com/ja-JP/sense/May2026/Subsystems/Hub/Content/Resources/Images/dual-barchart.png)

棒グラフは曜日別の通話回数を示しています。曜日を正しい順序で自動的に並べ替えます。

## 例 - Dual のシナリオ

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/FormattingFunctions/Dual.htm)

#### チャートの数式

概要

データセットにはカスタマー サポートのフィードバックが含まれています。フィードバックを並べ替えて表示し、最初に否定的な回答、次に肯定的な回答の順で表示します。

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

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

* 「Example」というデータ テーブルにロードされるデータセット。

* データ テーブル内の次の項目:

  * ResponseType
  * NoOfResponses

ロード スクリプト

```
Example:
Load * inline [
ResponseType, NoOfResponses
1, 350
2, 560
3, 4350
4, 2350
5, 5350
];
```

結果

データをロードしてシートを開きます。新しい棒グラフを作成し、次の数式を軸に追加します。

* =Dual(pick( ResponseType , 'Very Bad','Bad','Average', 'Good','Very Good'), ResponseType)

次のメジャーを作成します:

* =Sum(NoOfResponses)、回答数を計算します。

結果: 回答タイプ別の回答数を示す棒グラフ

結果: 回答タイプ別の回答数を示す棒グラフ

結果: 回答タイプ別の回答数を示す棒グラフ ![軸の数式の Dual 関数を使用して作成された軸を持つ棒グラフ](https://help.qlik.com/ja-JP/sense/May2026/Subsystems/Hub/Content/Resources/Images/dual-barchart2.png)

棒グラフには、回答タイプ別の回答数が表示されます。棒は自動的に負の値から正の値へと並べ替えられることに注意してください。数値である回答タイプには、文字による説明が割り当てられています。