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

Num#() は、テキスト文字列を数値として解釈します。つまり、2 番目のパラメータで指定された形式を使用して、入力文字列を数値に変換します。2 番目のパラメーターを省略すると、データ ロード スクリプトで設定された 10 進数と 1000 進数の区切り文字が使用されます。カスタムの小数点および桁区切り記号は、オプションのパラメータです。

構文:

Num#(text[, format[, dec\_sep [, thou\_sep ] ] ])

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

Num#() 関数は、文字列と数値の両方が指定されたデュアル値を返します。この関数は、入力式のテキスト表現を取得し、数値を生成します。数値の形式は変更されません。出力は入力と同じ方法で形式化されます。

引数

| 引数 | 説明 |
| --- | --- |
| text | 評価対象のテキスト文字列。 |
| format | 最初のパラメータで使用される数値形式を指定する文字列。省略した場合、データ ロード スクリプトで設定されている 10 進数と 1000 進数の区切り文字が使用されます。<br><br>`Num#` 関数は、さまざまな数値構造に対して多くの形式オプションをサポートしています。次に例を示します。<br><br>`#,##0`:​小数点なしで数値を表示します。<br><br>`#,##0.00`:​小数点以下 2 桁の数値を表示します。<br><br>`##0.00%`: 数値を小数点以下 2 桁のパーセンテージとして表示します。<br><br>`​#,##0;(#,##0)`: 負の数値を括弧内に表示されるようにフォーマットします。<br><br>`$#,##0.00`: 数値を $ 記号付きの通貨としてフォーマットします。<br><br>`​0.00E+0`: 数値を科学的記数法で表示します。 |
| dec\_sep | 小数点記号を指定する文字列。省略されている場合は、データ ロード スクリプトで設定された変数 DecimalSep 値が使用されます。<br><br>`Num#` 関数は、次のような多くの小数点区切り形式をサポートしています。<br><br>カンマ​「`,`」: 千ドルは `$1,000,00` など。<br><br>ピリオド 「`.`」: ​`€ 1,000.00` など。<br><br>ハイフン「`-`」: 小数点の記号として従来のピリオドやカンマの代わりに使用すると、`¥1,000-00` のような値が表示されます。<br><br>​詳細については、「[DecimalSep](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/DecimalSep.htm)」を参照してください。 |
| thou\_sep | 3 桁区切りの記号を指定する文字列。省略されている場合は、データ ロード スクリプトで設定された変数 ThousandSep 値が使用されます。<br><br>`Num#` 関数は、3 桁区切りの記号の多くのオプションをサポートしています。<br><br>ピリオド​「`.`」: 3 桁ごとの区切りにピリオドを使用します (一部のヨーロッパ形式で一般的)。小数点の記号のコンマと組み合わせると `$1.000,00` として表示されます。<br><br>スペース​「 」: 一部のヨーロッパ諸国で一般的な、3 桁ごとの区切りにスペースを使用します。`€ 1 000.00` と表示されます。<br><br>アンダースコア​「`_`」:​ 3 桁ごとの区切りとしてアンダースコアを使用します。これは、技術的な形式や特定の地域の形式で使用されることがあります。`$1_000.00` のような値が表示されます。<br><br>​詳細については、「[ThousandSep](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/ThousandSep.htm)」を参照してください。 |

例: チャートの数式

| 例 | 結果 (返される文字列値) |
| --- | --- |
| `Num#( '35,648.31', '#', '.' , ',' )` | `35,648.31` の文字列と `35648.31` の数値を返します。 |
| `Num#( ‘35 648.312’, '#', '.' , ',' )` | `35 648.312` の文字列と `35648.312` の数値を返します。 |
| `Num#( '35.648,3123', '#', '.' , ',' )` | `35.648,3123` の文字列と ` NULL  `(`-`) の数値を返します。 |
| `Num#( '35 648,31234', '#', '.' , ',' )` | `35 648,31234` の文字列と ` NULL  `(`-`) の数値を返します。 |
| `Num#('1,234.56', '#,##0.00')` | `1,234.56` の文字列と `1230.45` の数値を返します。 |
| `Num#('$1,230.45', '$#,##0.00')` | `$1,230.45` の文字列と `1234.56` の数値を返します。 |
| `Num#('20220315', 'YYYYMMDD')` | `20220315` の文字列と `20220315` の数値を返します。 |

## 例 - Num# の基本

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

#### ロード スクリプト

概要

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

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

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

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

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

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

  * `ProductID`

  * `ProductName`

  * `SalesAmount`

* この例を説明するための `ThousandSep` と `DecimalSep` の標準設定。

* `Num#` 関数を使用する先行ロード。実行すると、`FormattedSalesAmount` という追加項目が作成されます。

ロード スクリプト

```
SET ThousandSep=',';
SET DecimalSep='.';
Example:
LOAD
ProductID,
ProductName,
SalesAmount,
Num#(SalesAmount, '#.##0,00',',','.') AS FormattedSalesAmount
INLINE [
ProductID, ProductName, SalesAmount
1, Product A, '1.234,56'
2, Product B, '2.456,78'
3, Product C, '345,67'
4, Product D, '987,12'
5, Product E, '1.200,45'
];
```

結果

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

* ` ProductID
                                       `

* `ProductName`

* `SalesAmount`

* `FormattedSalesAmount`

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

* `=Num(FormattedSalesAmount)`、数値形式のシステム設定に従って項目の数値を表示します。

Results table

| ProductID | ProductName | SalesAmount | FormattedSalesAmount | Num(FormattedSalesAmount) |
| --- | --- | --- | --- | --- |
| 1 | Product A | 1.234,56 | 1.234,56 | 1234.56 |
| 2 | Product B | 2.456,78 | 2.456,78 | 2456.78 |
| 3 | Product C | 345,67 | 345,67 | 345.67 |
| 4 | Product D | 987,12 | 987,12 | 987.12 |
| 5 | Product E | 1.200,45 | 1.200,45 | 1200.45 |

この例では、`Num#` 関数が、`SalesAmount` データを元のテキスト形式から数値に変換する様子を確認できます。

## 例 - Num# のシナリオ

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

#### ロード スクリプト

概要

データセットには、さまざまなテキスト形式で複数の国からの販売データが含まれています。データを標準化し、テーブルに表示しようとしています。

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

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

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

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

  * `Country`

  * `Product`

  * `Amount`

* `Num#` 関数を使用して `Amount` 項目の値を変換する先行ロード。

ロード スクリプト

```
Example:
LOAD
Country,
Product,
IF(Country = 'Germany', Num#(Amount, '#.##0,00', ',', '.'), Num#(Amount, '#,##0.00')) AS Amount
INLINE [
Country, Product, Amount
Germany, Product A, '1.234,56'
USA, Product B, '2,345.78'
Germany, Product C, '987,12'
USA, Product D, '1,200.45'
Germany, Product E, '345,67'
];
```

結果

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

* ` Product
                                       `

* ` Country
                                       `

* `Amount`

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

* `Num(Amount)`、数値形式のシステム設定で設定された `Amount` 項目の数値を表示します。

Results table

| Product | Country | Amount | Num(Amount) |
| --- | --- | --- | --- |
| Customer A | Germany | 1.234,56 | 1234.56 |
| Customer B | USA | 2,345.78 | 2345.78 |
| Customer C | Germany | 987,12 | 987.12 |
| Customer D | USA | 1,200.45 | 1200.45 |
| Customer E | Germany | 345,67 | 345.67 |

`Amount` 列と `Num(Amount)` 列を比較すると、`  Num# ` 関数を使用して提示されたデータは基になる数値を変更していますが、文字列形式はそのまま維持されていることがわかります。たとえば、`Amount` 列の `Germany` のすべての値では小数点記号としてカンマが使用されていますが、`Num(Amount)` の基になる形式ではすべての値にピリオドが使用されます。