# 式関数

式を作成する際に行の値を変換したり、欠損データを処理したり、関連する値を取得したりするには、関数を使用します。詳細については、「[式の構築](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Building-expressions.htm)」を参照してください。

以下の関数は、SaaS マネージド ランディング、レイク ランディング、レプリケーション タスクにおける移動タスクの式を説明します。エディターに表示されている関数シグネチャを使用します。シグネチャ内の角括弧はオプションの引数を示します。角括弧は入力しないでください。

CDC ストレージおよびストリーミング変換関数については、「[変換関数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Lakehouse/transformation-functions.htm)」を参照してください。ストレージ、変換、データ マートの式がクラウドデータ プラットフォームで実行される場合は、そのプラットフォームの関数構文を使用します。

## 文字列関数

プレフィックス関数とサフィックス関数は、文字列の先頭または末尾に作用します。文字の置換は、プレフィックスやサフィックス全体を照合するのではなく、個々の文字に対して適用されます。

文字列関数の引数、動作、例

| 関数 | 動作と引数 | 例と結果 |
| --- | --- | --- |
| `$CONCAT(X, Y)` | 2 つの文字列 `X` と `Y` を、この順序で結合します。いずれかの引数が NULL である場合、NULL を返します。2 つ以上の文字列を結合するには、呼び出しをネストします。 | `$CONCAT('My', 'Picture')` は `'MyPicture'` を返します。`$CONCAT('My', NULL)` は NULL を返します。 |
| `$INSTR(string, substring)` | `string` 内での `substring` の最初の出現位置を、1 から数えた位置で返します。部分文字列が見つからない場合、0 を返します。 | `$INSTR('mystring', 'ing')` は `6` を返します。`$INSTR('mystring', 'xyz')` は `0` を返します。 |
| `$LENGTH(string)` | `string` の文字数を返します。バイト単位のサイズではありません。 | `$LENGTH('mystring')` は `8` を返します。 |
| `$LOWER(string)` | `string` の ASCII 文字を小文字に変換したコピーを返します。 | `$LOWER('ABC')` は `'abc'` を返します。 |
| `$LTRIM(string[, characters])` | `string` の先頭から文字を削除します。オプションの `characters` 引数は削除する文字のセットであり、プレフィックスではありません。省略した場合、スペースを削除します。 | `$LTRIM('  orders')` は `'orders'` を返します。`$LTRIM('@@orders', '@')` は `'orders'` を返します。 |
| `$REMOVE_PREFIX(string, prefix)` | `string` のコピーを、指定された先頭の `prefix` を削除して返します。 | `$REMOVE_PREFIX('mystring', 'my')` は `'string'` を返します。 |
| `$REMOVE_SUFFIX(string, suffix)` | 指定された末尾の `suffix` を削除した、`string` のコピーを返します。 | `$REMOVE_SUFFIX('mystring', 'ing')` は `'mystr'` を返します。 |
| `$REPLACE(string, pattern, replacement)` | `string` 内の `pattern` のすべての出現箇所を `replacement` で置き換えます。3 つの引数すべてが必須です。一致するテキストを削除するには、空の置換文字列を使用します。 | `$REPLACE('a-b-c', '-', '_')` は `'a_b_c'` を返します。`$REPLACE('a-b', '-', '')` は `'ab'` を返します。 |
| `$REPLACE_CHARS(string, chars, replacement)` | `chars` にリストされている各文字を、`replacement` の同じ位置にある文字に置き換えます。リストにない文字は変更されません。置換位置が指定されていない場合、最初の置換文字が使用されます。 | `$REPLACE_CHARS('mystring', 's', 'z')` は `'myztring'` を返します。`$REPLACE_CHARS('abcde', 'abcd', '123')` は `'1231e'` を返します。 |
| `$REPLACE_PREFIX(string, prefix, replacement)` | `string` 内の先頭の `prefix` を `replacement` で置き換えます。 | `$REPLACE_PREFIX('mystring', 'my', 'new')` は `'newstring'` を返します。 |
| `$REPLACE_SUFFIX(string, suffix, replacement)` | すべての出現箇所を置き換えるのではなく、`string` 内の末尾の `suffix` を `replacement` に置き換えます。 | `$REPLACE_SUFFIX('mystring', 'ing', 'new')` は `'mystrnew'` を返します。 |
| `$RTRIM(string[, characters])` | `string` の末尾から文字を削除します。オプションの `characters` 引数は、サフィックスではなく、削除する文字のセットです。省略した場合、スペースを削除します。 | `$RTRIM('orders  ')` は `'orders'` を返します。`$RTRIM('orders@@', '@')` は `'orders'` を返します。 |
| `$SUBSTR(string, start[, length])` | `string` から、1 を基点とする位置 `start` からテキストを抽出します。`length` は文字数を指定します。省略した場合、残りの文字を返します。 | `$SUBSTR('abcdef', 2, 3)` は `'bcd'` を返します。 |
| `$TRIM(string[, characters])` | `string` の両端から文字を削除します。オプションの `characters` 引数は、部分文字列ではなく、削除する文字のセットです。省略した場合、スペースを削除します。 | `$TRIM('  orders  ')` は `'orders'` を返します。`$TRIM('@#orders#@', '@#')` は `'orders'` を返します。 |
| `$UNICODE(string)` | `string` の最初の文字の数値 Unicode コード ポイントを返します。引数は文字列である必要があります。 | `$UNICODE('ABC')` は `65` を返します。 |
| `$UPPER(string)` | ASCII 文字を大文字に変換した `string` のコピーを返します。 | `$UPPER('abc')` は `'ABC'` を返します。 |

## 数値関数

現在の行の数値を計算するには、これらの関数を使用します。`$MAX` と `$MIN` は、行内の引数を比較し、行をまたいだ値は比較しません。

数値関数の引数、動作、例

| 関数 | 動作と引数 | 例と結果 |
| --- | --- | --- |
| `$ABS(X)` | 数値の引数 `X` の絶対値を返します。 | `$ABS(-20)` は `20` を返します。 |
| `$MAX(arg1, arg2, ...)` | 指定された数値引数の中で最大の値を返します。少なくとも 2 つの引数を指定してください。 | `$MAX(10, 4, 20, 9)` は `20` を返します。 |
| `$MIN(arg1, arg2, ...)` | 指定された数値引数の中で最小の値を返します。少なくとも 2 つの引数を指定してください。 | `$MIN(10, 4, 20, 9)` は `4` を返します。 |
| `$RANDOM()` | 擬似乱数の符号付き整数を返します。引数を取りません。 | `$RANDOM()` は、負、ゼロ、または正の整数を返します。その値は呼び出しごとに異なります。 |
| `$ROUND(value[, digits])` | `value` を小数点以下 `digits` 桁に丸め、浮動小数点値を返します。`digits` が省略された場合、小数点以下 0 桁に丸められます。 | `$ROUND(3.141592, 3)` は `3.142` を返します。 |

## LOB 関数

これらの関数はバイナリ ラージ オブジェクト (BLOB) を扱います。サイズ引数 `N` はバイト単位で指定され、文字単位ではありません。

バイナリ値関数

| 関数 | 動作と引数 | 例と結果 |
| --- | --- | --- |
| `$HEX(blob)` | `blob` のバイトを表す大文字の 16 進数テキストを返します。数値入力はまずテキストに変換されます。結果は、その数値の機械表記ではありません。 | `$HEX(X'4142')` は `'4142'` を返します。 |
| `$RANDOM_BLOB(N)` | `N` 擬似乱数バイトを返します。`N` が 1 未満の場合、1 バイトを返します。この関数を暗号論的ランダム性の保証として使用しないでください。 | `$RANDOM_BLOB(4)` は 4 バイトの BLOB を返します。その値は呼び出しごとに異なります。 |
| `$ZERO_BLOB(N)` | `N` ゼロ バイトを含む BLOB を返します。 | `$HEX($ZERO_BLOB(3))` は `'000000'` を返します。 |

## NULL チェック関数

関数引数の NULL チェック、動作、例

| 関数 | 動作と引数 | 例と結果 |
| --- | --- | --- |
| `$COALESCE(X, Y, ...)` | 引数順で、最初の NULL 以外の引数を返します。少なくとも 2 つの引数を指定してください。すべての引数が NULL の場合、結果は NULL です。空の文字列は NULL ではありません。 | `$COALESCE(NULL, 'Unknown')` は `'Unknown'` を返します。`$COALESCE('', 'Unknown')` は空の文字列を返します。 |
| `$IFNULL(X, Y)` | NULL でない場合は `X` を返します。そうでない場合は `Y` を返します。両方の引数が NULL の場合、NULL を返します。引数をちょうど 2 つ指定してください。 | `$IFNULL(NULL, 'Unknown')` は `'Unknown'` を返します。`$IFNULL('Known', 'Unknown')` は `'Known'` を返します。 |
| `$NULLIF(X, Y)` | `X` と `Y` が等しい場合は NULL を返します。それ以外の場合は、`X` を返します。引数をちょうど 2 つ指定してください。 | `$NULLIF('Unknown', 'Unknown')` は NULL を返します。`$NULLIF('Known', 'Unknown')` は `'Known'` を返します。 |

## 日付および時刻関数

日付、時刻、または日時文字列を指定してください。例: `'2026-10-08'`、`'12:34:56'`、または`'2026-10-08 12:34:56'`。ハイフンが減算として解釈されないように、日付定数を引用符で囲んでください。

日付の計算と書式設定

| 関数 | 動作と引数 | 例と結果 |
| --- | --- | --- |
| `$DATE(date_string)` | `date_string` から、日付を `YYYY-MM-DD` 形式のテキストとして返します。 | `$DATE('2026-10-08')` は `'2026-10-08'` を返します。 |
| `$DATETIME(datetime_string)` | `datetime_string` から、日付と時刻を `YYYY-MM-DD HH:MM:SS` 形式のテキストとして返します。 | `$DATETIME('2026-10-08 12:34:56')` は `'2026-10-08 12:34:56'` を返します。 |
| `$JULIANDAY(datetime_string)` | 紀元前 4714 年 11 月 24 日のグリニッジ正午からの経過日数を、端数を含めて返します。2 つのユリウス日を減算して、経過日数を算出します。 | `$JULIANDAY('2000-01-01 12:00:00')` は `2451545.0` を返します。`$JULIANDAY('2026-10-09') - $JULIANDAY('2026-10-08')` は `1.0` を返します。 |
| `$STRFTIME(format, datetime_string)` | `format` を使用してフォーマットされたテキストを返します。日付や日時の入力よりも前に、フォーマットが指定されます。 | `$STRFTIME('%Y-%m', '2026-10-08')` は `'2026-10'` を返します。 |
| `$TIME(time_string)` | `time_string` からの時刻を、`HH:MM:SS` フォーマットのテキストとして返します。 | `$TIME('12:34:56')` は `'12:34:56'` を返します。 |

### フォーマットの置換

次の置換を、リテラル区切り文字と組み合わせて `$STRFTIME` に指定します。たとえば、`'%Y-%m-%d %H:%M:%S'` は日付と時刻の両方をフォーマットします。サポートされていない置換は NULL を返します。

日付と時刻のフォーマットの置換

| 置換 | 意味 |
| --- | --- |
| `%d` | 月の日、01 ～ 31。 |
| `%H` | 時間、00 ～ 24。 |
| `%f` | 小数部を含む秒、SS.SSS。 |
| `%j` | 年の日、001 ～ 366。 |
| `%J` | ユリウス日。 |
| `%m` | 月、01 ～ 12。 |
| `%M` | 分、00 ～ 59。 |
| `%s` | 1970 年 1 月 1 日 00:00:00 UTC 以降の秒数。 |
| `%S` | 秒、00 ～ 59。 |
| `%w` | 曜日、0 ～ 6、日曜日が 0 です。 |
| `%W` | 年の週、00 ～ 53。週は月曜日から始まります。 |
| `%Y` | 年、0000 ～ 9999。 |
| `%%` | リテラルなパーセント記号。 |

## データエンリッチメント関数

ルックアップを使用して、ソースまたはターゲットのエンドポイントにあるテーブルから部署名などの関連する値を追加します。

データエンリッチメント関数の引数、動作、例

| 関数 | 動作と引数 | 例と結果 |
| --- | --- | --- |
| `$SOURCE_LOOKUP(time_to_live, schema, table, expression, condition, condition_params)` | `condition` に一致するレコードについて、ソース エンドポイントの `table` から `schema` で `expression` の値を取得します。条件パラメーターは、そのプレースホルダーに順番に値を供給します。 | `$SOURCE_LOOKUP(60, 'HR', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=:1', $DEPARTMENT_ID)` は、ソースから一致する部署名を取得します。 |
| `$TARGET_LOOKUP(time_to_live, schema, table, expression, condition, condition_params)` | `condition` に一致するレコードに対して、ターゲット エンドポイントの `schema` における `table` から、`expression` の値を取得します。条件パラメーターは、そのプレースホルダーに順番に値を供給します。 | `$TARGET_LOOKUP(60, 'dbo', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=?', $DEPARTMENT_ID)` は、ターゲットから一致する部署名を取得します。 |

`condition_params` は、単一の配列引数ではなく、コンマ区切りの引数リストを表します。両方の関数は次のパラメーターを使用します。

Lookup パラメーターとその関係

| パラメータ | 意味 |
| --- | --- |
| `time_to_live` | 必須キャッシュの有効期間、デフォルト値なし。キャッシュの有効期間を秒単位で指定します。`'NO_CACHING'` を指定してキャッシュを無効にするか、`'NO_EXPIRATION'` を指定してキャッシュされた結果を期限なしで保持します。<br><br>有効期間が短いと、頻繁に変更されるデータが更新されます。有効期間を長くすると、エンドポイントへのクエリは減少しますが、ルックアップ データが変更された後でもキャッシュされた値が返される可能性があります。変更されないデータにのみ、有効期限なしを使用してください。 |
| `schema` | ルックアップ テーブルを含むスキーマ。テキストとして提供されます。 |
| `table` | テキストとして提供される、そのスキーマ内でクエリを実行するテーブル |
| `expression` | 1 つの列の値を選択する SQL 式。例: `'DEPARTMENT_NAME'` または `'PRICE * 1.2'`。アクセスするエンドポイントの SQL 方言を使用し、外側の式の関数構文は使用しないでください。 |
| `condition` | ルックアップ レコードを特定する SQL 条件。アクセスされたエンドポイントの方言とプレースホルダー構文を使用します。例: `:1` および `:2` (Oracleの場合)、または`?` (Microsoft SQL Server の場合)。 |
| `condition_params` | 条件プレースホルダーにバインドされた値 (順序通り)。列パラメーター (例: `$COMPANY_ID` および `$DEPARTMENT_ID`) は、現在の行から値を供給します。 |

クエリ コストを削減するために、ルックアップ フィールドにインデックスを作成してください。目的のレコードを識別する条件を選択し、追加された列のデータ型を選択された値と一致するように設定します。

情報メモ`$SOURCE_LOOKUP` および `$TARGET_LOOKUP` への呼び出しのテストはサポートされていません。「[式のテスト](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Building-expressions.htm#Testing)」を参照してください。

### ソース ルックアップの例

Oracle ソースの場合、次の式は `HR.DEPARTMENTS` から `DEPARTMENT_NAME` を取得し、結果を 60 秒間キャッシュします。

```
$SOURCE_LOOKUP(60, 'HR', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=:1', $DEPARTMENT_ID)
```

現在の行に `DEPARTMENT_ID` 10 があり、対応するルックアップ レコードに `'Sales'` が含まれている場合、結果は `'Sales'` です。

Microsoft SQL Server ソースの場合、その条件プレースホルダー構文を使用します。この例では、会社と部署の値をその順序でバインドします。

```
$SOURCE_LOOKUP(60, 'dbo', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'COMPANY_ID=? AND DEPARTMENT_ID=?', $COMPANY_ID, $DEPARTMENT_ID)
```

### ターゲット ルックアップの例

Microsoft SQL Server ターゲットの場合、その SQL 方言を使用してターゲット テーブルをクエリします。

```
$TARGET_LOOKUP(60, 'dbo', 'DEPARTMENTS', 'DEPARTMENT_NAME', 'DEPARTMENT_ID=?', $DEPARTMENT_ID)
```

部門 10 のターゲット ルックアップ レコードに `'Sales'` が含まれる場合、入力値 10 の結果は `'Sales'` です。

## 操作関数

操作関数の引数、動作、例

| 関数 | 動作と引数 | 例と結果 |
| --- | --- | --- |
| `$OPERATION_INDICATOR(value_on_delete, value_on_update, value_on_insert)` | 各ソース操作ごとに、指定したフラグを返します。引数の順序は削除、更新、その後に挿入です。フラグを格納する専用の列を使用し、そのデータ型に一致するフラグ値を指定します。 | `$OPERATION_INDICATOR('Deleted', 'Updated', 'Inserted')` は更新のために `'Updated'` を返します。 |

Qlik Replicate では、この関数は削除処理も変更します。対応するターゲット レコードを保持し、`value_on_delete` としてフラグを付けます。この削除処理の動作は、Qlik Talend Cloud Data Integration の場合、確認が必要です。

## 論理関数

条件付き値の選択

| 関数 | 動作と引数 | 例と結果 |
| --- | --- | --- |
| `$IFF(boolean_expression, true_value, false_value)` | `boolean_expression` が true と評価される場合、`true_value` を返します。それ以外の場合は、`false_value` を返します。最初に条件を指定し、その後に 2 つの結果値を指定します。 | `$IFF(10 > 5, 'High', 'Low')` は `'High'` を返します。`$IFF(3 > 5, 'High', 'Low')` は `'Low'` を返します。 |

## その他の関数

パターン マッチングと値型

| 関数 | 動作と引数 | 例と結果 |
| --- | --- | --- |
| `$LIKE(pattern, string[, escape_character])` | 一致した場合は 1 を、一致しなかった場合は 0 を返します。NULL 入力は NULL を生成します。`%` は 0 個以上の文字に一致します。`_` は 1 つの文字に一致します。デフォルトでは、マッチングで ASCII の大文字と小文字が無視されます。オプションのエスケープは 1 文字です。`LIKE` 演算子とは異なり、パターンが先になります。 | `$LIKE('A%', 'Alice')` は `1` を返します。`$LIKE('10!%', '10%', '!')` `1` を返します。 |
| `$TYPEOF(expression)` | 値のストレージ クラスを返します: `'null'`、`'integer'`、`'real'`、`'text'`、または `'blob'`。これは、設定されている出力列の型ではありません。 | `$TYPEOF(12.5)` は `'real'` を返します。 |

## ハッシュ関数

ハッシュ関数の引数、動作、例

| 関数 | 動作と引数 | 例と結果 |
| --- | --- | --- |
| `$SHA256(string)` | 入力文字列の 16 進数の SHA-256 ハッシュを返します。 | `$SHA256('abc')` は `ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad` を返します。 |

ハッシュは暗号化ではありません。予測可能な入力値は、ハッシュを比較することで引き続き特定できます。