出力行を生成できません。メソッドの実装を使用してください。メソッドが呼び出される前にも呼び出されます。メソッドを実装します。メソッドを定義し、SnowflakeがUDTFの表形式の戻り値を作成するために使用するデータを返します。メソッドのシグネチャは、次の形式である必要があります。メソッドには次が必要です。パラメーターに対応するメソッドパラメーターを宣言する。宣言される必要があります。UDTF引数値をメソッドに渡すと、Snowflakeは値をSQLタイプからメソッドで使用するPython型に変換します。タプルのシーケンスがUDTF戻り値列のシーケンスに対応する、1つ以上のタプルを生成します(またはタプルを含むイテレータを返します)。表示される必要があります。Snowflakeは、値をPython型からUDTF宣言に必要なSQL型に変換します。ハンドラークラスのメソッドが例外をスローすると、処理は停止します。UDTFを呼び出したクエリは、エラーメッセージを表示して失敗します。返す場合、処理は停止します。メソッドは引き続き呼び出されます。total)を含む単一の行を返します。パラメーターと同じ順序で宣言されていることに注意してください。TABLE句で宣言された列と同じ順序です。いずれか(両方ではない)を使用して、表形式の値を持つタプルを返すことができます。返すか生成する場合、現在の行の処理は停止します。ステートメントを実行します。付属する遅延評価により、より効率的な処理が可能になり、タイムアウトを回避できるため、これがベストプラクティスです。タプルの各要素は、UDTFによって返される結果の列値になります。TABLE句で戻り値として宣言された列の順序と一致する必要があります。次の例のコードは、2つの行を表す値を返します。cost)Copy次の例のように、yield引数はタプルであるため、タプルに単一の値を渡す場合は、後続するにコンマを含める必要があることに注意してください。使用する場合、タプルで反復可能を返します。タプルの各値は、UDTFによって返される結果の列値になります。TABLE句で戻り値として宣言された列の順序と一致する必要があります。次の例のコードは、symbolとtotalの2つの列を持つ2つの行を返します。メソッドに次のいずれかを返すようにします。含むリスト、または行をスキップするための空のリストを返します。返して行をスキップします。返す呼び出しの後の呼び出しはSnowflakeによって無視されることに注意してください。正の整数である行のみを返します。返し、現在の行をスキップして次の行の処理を続行します。(number)Copyステートフルおよびステートレス処理¶ハンドラーを実装して、パーティション対応の方法で行を処理することも、行ごとに行を処理することもできます。ハンドラーにパーティションスコープの状態を管理するためのコードが含まれます。メソッドが含まれます。ハンドラーはパーティションの境界を無視してステートレスに実行されます。メソッドを含めないでください。パーティションの処理¶パーティションごとに実行されるコード(状態の管理など)と、パーティション内の各行に対して実行されるコードを使用して、入力でパーティションを処理できます。クエリにパーティションが含まれている場合、列の値などの指定された値を使用して行を集約します。ハンドラーが受け取る集約された行は、その値によってパーティション化されていると言われます。コードでこれらのパーティションとその行を処理できるため、各パーティションの処理にはパーティションスコープの状態が含まれます。次のSQLサンプルクエリのコードで株式売却情報を取得します。UDTFを実行します。symbol));Copy入ってくる行がパーティション化されている場合でも、コードはパーティションの分離を無視して行を処理するだけであることに注意してください。メソッドを実装するだけで済みます。各パーティションを1つの単位として処理するには、次のようにします。メソッドを実装します。メソッドで各行を処理するときに、パーティション対応コードを含めます。メソッドを実装して、パーティション処理を完了します。以下では、パーティションごとに実行するように設計されたコードを含めた場合のハンドラーへの呼び出しのシーケンスについて説明します。メソッドを使用してクラスのインスタンスを作成します。ここで、パーティションスコープの状態を確立できます。パーティション内の行から計算された値を保持するようにインスタンス変数を初期化できます。メソッドを呼び出します。メソッドが実行されるたびに、状態値を変更できます。メソッドでインスタンス変数の値を更新する場合があります。メソッドを呼び出します。このメソッドから、返したいパーティションレベルの値を含む出力行を返すことができます。パーティション内の行を処理するときに更新していたインスタンス変数の値を返す場合があります。メソッドはSnowflakeから引数を受け取りません。Snowflakeは、パーティションの最後の行を処理した後にメソッドを呼び出すだけです。メソッドをハンドラークラスに実装できます。このメソッドでは、パーティションのすべての行が処理された後、パーティションのコードを実行できます。メソッドは、パーティションスコープの計算結果を返すなどの出力行を生成する場合があります。メソッドのシグネチャは、次の形式である必要があります。メソッドの実装を想定しています。静的であってはなりません。以外のパラメータは含まれていない可能性があります。生成する場合があります。完了に時間がかかりすぎる場合など)。お問い合わせください。メソッドで)最初に購入あたりのコストを計算し、購入を合計することによって、株式の購入全体で支払われる合計コストを計算します。メソッドで合計を返します。self._cost_total)Copyパーティションを処理するときは、次の点に注意してください。コードは、UDTFの呼び出しで明示的に指定されていないパーティションを処理する場合があります。BY句が含まれていない場合でも、Snowflakeはデータを暗黙的にパーティション化します。BY句で指定された順序で行データを受け取ります(存在する場合)。例¶インポートされたパッケージの使用¶Snowflakeで利用可能なAnacondaのサードパーティパッケージの厳選されたリストに含まれているPythonパッケージを使用できます。FUNCTIONのPACKAGES句を使用します。Snowflakeで次のSQLを実行すると、含まれているパッケージのリストを見つけることができます。パッケージの関数を使用して、1株あたりの価格がそれぞれ異なる一連の株式購入から1株あたりの平均価格を計算します。