Process Mining
最新
バナーの背景画像
Process Mining
最終更新日 2024年4月17日

Snowflake と SQL Server の SQL の違い

SQL Server と Snowflake

ローカルの開発環境では SQL Server で変換が実行され、Process Mining Automation CloudTMでは Snowflake が使用されます。ほとんどの SQL ステートメントは SQL Server と Snowflake の両方で動作しますが、構文が若干異なる可能性があり、それによって戻り値が異なる場合があります。

両方のデータベース システムで動作する SQL ステートメントを書くには、以下のようにします。

  • フィールド名を二重引用符で囲みます (例: Table."Field")。
  • Snowflake と SQL Server で異なる SQL 関数を使用しないようにします (例:string_agg()listagg())。
    pm_utils パッケージには、両方のデータベースで動作する関数が一式付属しています。詳しくは、「Multiple databases」をご覧ください。たとえば string_agg()listagg() を使用する代わりに pm_utils.string_agg() を使用すれば、両方のデータベースで結果の挙動が同じになります。pm_utils に目的の関数が含まれていない場合は、各データベースで適切な関数が呼び出されるように Jinja ステートメントを作成する必要があります。

文字列の連結

文字列と結合するには、pm_utils.concat() 関数を使用します。この関数を使用すると、SQL Server と Snowflake の両方で同じ結果が生成されます。
例: pm_utils.concat("This is a nice string", null) = "This is a nice string"文字列の連結は、+|| などの演算子で行うべきではありません。これらの演算子は両方のデータベースで異なる (Snowflake では || が使用され、SQL Server では + が使用される) ためです。また、標準の concat() 関数の挙動も両方のシステムで異なります。具体的には以下のような違いがあります。

SQL Server

Snowflake

null 値は無視され、空の文字列として扱われます。
null 値があると、結果全体が null になります。

並べ替え

並べ替えは、Snowflake と SQL Server で異なる方法で処理されます。

例: ... order by "Attribute_1" desc, "Attribute_2" ...

null 値

SQL Server

Snowflake

null は既定で先頭に並べ替えられます (昇順)。
null は既定で末尾に並べ替えられます (昇順)。

大文字の処理

SQL Server

Snowflake

大文字は期待どおりに並べ替えられます (AaBbCc)。

最初に大文字で並べ替えられた後、小文字で並べ替えられます (ABCabc)。

ダッシュ

例: -Accountant-

SQL Server

Snowflake

ダッシュは並べ替え時に無視されます (「-Accountant-」は「Accountant」と同じものとして扱われます)。

ダッシュは先頭に並べ替えられます。

空白文字の処理

値 "A" と " A" をグループ化すると、SQL Server では 1 つの値と見なされますが、Snowflake では 2 つの異なる値として見なされます。したがって、お使いのデータでこの問題が発生する可能性がある場合は、トリミングをお勧めします。

大文字と小文字を区別

既定では、SQL Server では大文字と小文字が区別されません。一方 Snowflake では大文字と小文字が区別されます。つまり、Table."Field" = "Some_value"Table."Field" = "SOME_VALUE" は、SQL Server では同じ結果のセットが返されますが、Snowflake では 2 つの異なる結果のセットが返される可能性があります。

問題が発生しないように、ローカルの SQL Server データベースの挙動を Snowflake の挙動と一致するように変更することをお勧めします。これは、データベースの照合順序を大文字と小文字を区別する値に設定することで達成できます。

Was this page helpful?

サポートを受ける
RPA について学ぶ - オートメーション コース
UiPath コミュニティ フォーラム
UiPath ロゴ (白)
信頼とセキュリティ
© 2005-2024 UiPath. All rights reserved.