データをファクト テーブルにロードしています。Snowflake の元の一時テーブルは次のようになります。
フィールドindicator_nbr
は、調査内で尋ねられる質問です。
倉庫データベースの構築にはデータ モデリング手法を使用しているため、データは次のようにファクト テーブルに追加されます。
次に、指標 2 と 3 についても同様です。他に質問がある場合は、同様に続けます。
値を持つ各フィールドは、単一の行になります。もちろん、 and のように追加するメタデータは他にもありますload_dt
がrecord_src
、それらは問題ではありません。
現在のスクリプトは次のことを行っています。
フィールドを配列に取得 =>
fields_array = ['indicator_1', 'indicator_2', 'indicator_3']
配列に対してループが実行され、各行の値を含む各フィールドの追加が開始されます。100 行あるとします。一度に 1 つずつ、300 の挿入を実行します。
for (var col_num = 0; col_num<fields_array.length; col_num = col_num+1) {
var COL_NAME = fields_array[col_num]; var field_value_query = "INSERT INTO SAT_FIELD_VALUE SELECT md5(id), CURRENT_TIMESTAMP(), NULL, 'SRC', "+COL_NAME+", md5(foreign_key_field) FROM "+TEMP_TABLE_NAME+"";
}
完全なスクリプトを示すこの投稿のコメントで述べたように、各from values
挿入クエリを連結する文字列をループすることをお勧めします。
提案された解決策には 2 つの問題があります。
- Snowflake にはクエリのサイズ制限があります (1 MB 未満にする必要があります)。
- 各フィールドをループして を連結する
from values
場合はselect
、一時テーブルからもクエリを実行して列の値を取得する必要があるため、最適化は行われません。または、時間を少し短縮しますが、そうではありません。過ぎる。
編集:可能な解決策
一時テーブルからすべてを選択するSQLクエリを実行し、ハッシュとすべてを実行して、転置後に配列に保存することを考えていましたが、その方法がわかりません。