Snowflake - 行のレプリケートアクション

このページは機械翻訳により提供されています。翻訳内容と英語版に相違がある場合は、英語版が優先されます。

このアクションは、Snowflakeインスタンス内の選択したテーブルを更新します。 リストデータピルを入力として受け取り、それらを行として挿入または更新します。

Workatoはまず、入力データとSnowflakeテーブルのスキーマを検出して比較します。 一致しない場合、このアクションはSnowflakeテーブルに新しいカラムを作成します。 これにより、入力スキーマに更新があった場合でも、入力からのすべてのデータがSnowflakeに自動的に同期されます。

  • スキーマ検出は、Batch入力データ内の各フィールド値を内部検査し、適切なカラムタイプにマッピングすることで機能します。 複数のタイプが見つかった場合、精度の損失を避けるために最も広いカラムタイプが推定されます。 作成されるカラムタイプを指定する場合は、スキーマのレプリケートアクションの使用を検討してください。

  • 宛先テーブルが存在しない場合は、作成されます。

  • ソースデータに特定のカラムのデータが含まれなくなった場合でも、このアクションが宛先テーブルの既存のカラムを削除することはありません。

  • このアクションは既存のカラムのデータ型を変更しません。

入力

入力タイプ説明
テーブル名必須行を挿入するテーブルを選択するか、完全なテーブル名を入力します。 スキーマプレフィックスは不要です。 テーブル名では大文字と小文字が区別されます。 テーブル名には大文字を使用することをお勧めします。 理由
一意キー必須行を一意として識別するカラムを指定します。 宛先に行が存在する場合は、更新されます。 それ以外の場合は、新しい行として挿入されます。
必須リストデータピルを入力として使用します。
カラムのフラット化optional入力データがオブジェクトとしてフォーマットされている場合、このトグルを使用してオブジェクトを個別のキー値ペアにフラット化します。 以下の例を参照してください。
カラムの大文字と小文字optionalレプリケーション時にカラム名の大文字と小文字を保持するかどうかを決定します。 大文字と小文字を区別しないSQLクエリが可能になるため、デフォルトオプション(Upcase)をお勧めします。 理由
除外するカラムoptionalレプリケーションから除外するカラムを指定します。 すべてのカラムをレプリケートするには空白のままにします。

テーブル名のベストプラクティス

テーブル名をテキストで入力する場合、大文字と小文字が区別されることに注意してください。また、名前は大文字で記述することをお勧めします。

テーブル名は二重引用符で囲まれるため、大文字と小文字が区別されます(double-quoted identifiersを参照)。 これにより、必要に応じてテーブル名に特殊文字を使用できる柔軟性が得られます。

クエリを簡単に行えるように、テーブル名を大文字にすることをお勧めします。Snowflakeユーザーは、大文字と小文字を区別しない引用符なし識別子を使用してクエリを記述できるためです。 これは、Snowflakeが識別子を大文字で保存し、解決するために機能します。

テーブル名SnowflakeのSQLクエリ
MyTableselect * from MyTable; // will not work
select * from "MyTable"; // OK
MYTABLEselect * from MyTable; // OK
select * from "MYTABLE"; // OK

flattenを使用するタイミング

オブジェクトとしてフォーマットされたデータがある場合、ネストされたデータ(たとえば、JSONオブジェクト内でネストされたデータ)に直接アクセスできないことがあります。

このトグルを使用してオブジェクトをフラット化し、個別のキー値ペアを一意のカラムとして扱います。

デフォルトでは、このアクションはネストされたデータの1レベルのみをフラット化します。 フラット化するレベル数は、最大50まで設定できます。

データソースの例を次に示します。

json
{
  "id": 1,
  "name": "John Doe",
  "handles": {
    "github": "johndoe",
    "slack": "john"
  }
}

フラット化されていない行は次のようになります。

IDNAMEHANDLES
1John Doe{"github": "johndoe", "slack": "john"}

フラット化された行は次のようになります。

IDNAMEHANDLES_GITHUBHANDLES_SLACK
1John Doejohndoejohn

カラムの大文字と小文字オプション

列名を大文字にすることをお勧めします。これにより、Snowflakeユーザーは列の大文字と小文字を気にせずにクエリを記述でき、データのクエリ操作が向上します。 これは、Snowflakeが識別子を大文字で保存し、解決するために機能します。

このアクションは、非標準文字(特殊文字、空白、ASCIIなど)を含むフィールド名を忠実に複製できるように、double-quoted identifiersを使用して列を作成します。

元の状態を保持

Preserve originalに設定した場合、SQLクエリでは正確な大文字と小文字を使用してカラムを参照する必要があります(以下の例を参照)。

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タイプ
stringvarchar
デフォルトは最大長です。
string(binary)binary
datedate
date_time timestamptimestamp
Workatoは、コネクション設定で定義されたタイムゾーンを使用するか、デフォルトのSnowflakeユーザーアカウントのタイムゾーンを使用します。
integernumber
精度とスケールのデフォルトは(38, 0)です。
numberdouble
booleanboolean
objectvariant

Last updated: