Snowflake - 行のレプリケートアクション
このアクションは、Snowflakeインスタンス内の選択したテーブルを更新します。 リストデータピルを入力として受け取り、それらを行として挿入または更新します。
Workatoはまず、入力データとSnowflakeテーブルのスキーマを検出して比較します。 一致しない場合、このアクションはSnowflakeテーブルに新しいカラムを作成します。 これにより、入力スキーマに更新があった場合でも、入力からのすべてのデータがSnowflakeに自動的に同期されます。
スキーマ検出は、Batch入力データ内の各フィールド値を内部検査し、適切なカラムタイプにマッピングすることで機能します。 複数のタイプが見つかった場合、精度の損失を避けるために最も広いカラムタイプが推定されます。 作成されるカラムタイプを指定する場合は、スキーマのレプリケートアクションの使用を検討してください。
宛先テーブルが存在しない場合は、作成されます。
ソースデータに特定のカラムのデータが含まれなくなった場合でも、このアクションが宛先テーブルの既存のカラムを削除することはありません。
このアクションは既存のカラムのデータ型を変更しません。
入力
| 入力 | タイプ | 説明 |
|---|---|---|
| テーブル名 | 必須 | 行を挿入するテーブルを選択するか、完全なテーブル名を入力します。 スキーマプレフィックスは不要です。 テーブル名では大文字と小文字が区別されます。 テーブル名には大文字を使用することをお勧めします。 理由。 |
| 一意キー | 必須 | 行を一意として識別するカラムを指定します。 宛先に行が存在する場合は、更新されます。 それ以外の場合は、新しい行として挿入されます。 |
| 行 | 必須 | リストデータピルを入力として使用します。 |
| カラムのフラット化 | optional | 入力データがオブジェクトとしてフォーマットされている場合、このトグルを使用してオブジェクトを個別のキー値ペアにフラット化します。 以下の例を参照してください。 |
| カラムの大文字と小文字 | optional | レプリケーション時にカラム名の大文字と小文字を保持するかどうかを決定します。 大文字と小文字を区別しないSQLクエリが可能になるため、デフォルトオプション(Upcase)をお勧めします。 理由 |
| 除外するカラム | optional | レプリケーションから除外するカラムを指定します。 すべてのカラムをレプリケートするには空白のままにします。 |
テーブル名のベストプラクティス
テーブル名をテキストで入力する場合、大文字と小文字が区別されることに注意してください。また、名前は大文字で記述することをお勧めします。
テーブル名は二重引用符で囲まれるため、大文字と小文字が区別されます(double-quoted identifiersを参照)。 これにより、必要に応じてテーブル名に特殊文字を使用できる柔軟性が得られます。
クエリを簡単に行えるように、テーブル名を大文字にすることをお勧めします。Snowflakeユーザーは、大文字と小文字を区別しない引用符なし識別子を使用してクエリを記述できるためです。 これは、Snowflakeが識別子を大文字で保存し、解決するために機能します。
| テーブル名 | SnowflakeのSQLクエリ |
|---|---|
| MyTable | select * from MyTable; // will not work select * from "MyTable"; // OK |
| MYTABLE | select * from MyTable; // OK select * from "MYTABLE"; // OK |
flattenを使用するタイミング
オブジェクトとしてフォーマットされたデータがある場合、ネストされたデータ(たとえば、JSONオブジェクト内でネストされたデータ)に直接アクセスできないことがあります。
このトグルを使用してオブジェクトをフラット化し、個別のキー値ペアを一意のカラムとして扱います。
デフォルトでは、このアクションはネストされたデータの1レベルのみをフラット化します。 フラット化するレベル数は、最大50まで設定できます。
データソースの例を次に示します。
{
"id": 1,
"name": "John Doe",
"handles": {
"github": "johndoe",
"slack": "john"
}
}フラット化されていない行は次のようになります。
| ID | NAME | HANDLES |
|---|---|---|
| 1 | John Doe | {"github": "johndoe", "slack": "john"} |
フラット化された行は次のようになります。
| ID | NAME | HANDLES_GITHUB | HANDLES_SLACK |
|---|---|---|---|
| 1 | John Doe | johndoe | john |
カラムの大文字と小文字オプション
大文字(推奨)
列名を大文字にすることをお勧めします。これにより、Snowflakeユーザーは列の大文字と小文字を気にせずにクエリを記述でき、データのクエリ操作が向上します。 これは、Snowflakeが識別子を大文字で保存し、解決するために機能します。
このアクションは、非標準文字(特殊文字、空白、ASCIIなど)を含むフィールド名を忠実に複製できるように、double-quoted identifiersを使用して列を作成します。
元の状態を保持
Preserve originalに設定した場合、SQLクエリでは正確な大文字と小文字を使用してカラムを参照する必要があります(以下の例を参照)。
例
# Given that source data has a key "AccountId"
# When Column_Case is "Upcase" or blank
SELECT AccountId FROM mytable; // OK
SELECT accountid FROM mytable; // OK
SELECT "ACCOUNTID" FROM mytable; // OK
# When Column_Case is "Preserve original"
SELECT AccountId FROM mytable; // will fail
SELECT accountid FROM mytable; // will fail
SELECT "AccountId" FROM mytable; // OK出力
このアクションの出力は、upsertされた行数のカウントです。
Workatoスキーママッパー
各データソース(API、データベース、ファイル)には、それぞれ独自のスキーマがあります。 一貫性を維持するために、このアクションはソースの各データ型をSnowflakeテーブルスキーマにマッピングします。 このマッピングは、Snowflakeテーブルを作成または更新する前に実行されます。
入力データは、以下で定義されているマッピングに基づいてSnowflakeデータ型に変換されます。
| Workatoタイプ | Snowflakeタイプ |
|---|---|
| string | varchar デフォルトは最大長です。 |
| string(binary) | binary |
| date | date |
| date_time timestamp | timestamp Workatoは、コネクション設定で定義されたタイムゾーンを使用するか、デフォルトのSnowflakeユーザーアカウントのタイムゾーンを使用します。 |
| integer | number 精度とスケールのデフォルトは(38, 0)です。 |
| number | double |
| boolean | boolean |
| object | variant |
Last updated: