カテゴリ:

Information Schemaテーブル関数

EXTERNAL_FUNCTIONS_HISTORY

このテーブル関数は、Snowflakeアカウント全体に対してSnowflakeによって呼び出された外部関数の履歴を取得します。

注釈

この関数は、過去14日以内のアクティビティの結果のみを返すことができます。

構文

EXTERNAL_FUNCTIONS_HISTORY(
      [ DATE_RANGE_START => <constant_date_expression> ]
      [, DATE_RANGE_END => <constant_date_expression> ]
      [, FUNCTION_SIGNATURE => '<string>' ] )
Copy

引数

すべての引数はオプションです。

DATE_RANGE_START => constant_date_expression. DATE_RANGE_END => constant_date_expression

履歴を取得する、過去2週間以内の日付/時間範囲。

  • 終了日が指定されていない場合は、 CURRENT_DATE が範囲の終了として使用されます。

  • 開始日が指定されていない場合、範囲は DATE_RANGE_END の開始10分前に開始します(デフォルトでは過去10分間の履歴を表示)。たとえば、 DATE_RANGE_ENDCURRENT_DATE の場合、デフォルトの DATE_RANGE_START前日 の11:50 PM です。

履歴は5分、1時間、または24時間の増分で表示されます(指定された範囲の長さによる)。

範囲が過去15日間外の場合は、エラーが返されます。

FUNCTION_SIGNATURE => string

外部関数名と関数への引数のデータ型を指定する文字列。(データ型により、オーバーロードされた関数名を区別。)その関数に関する情報のみが返されます。

署名を一重引用符で囲みます。次に例を示します。

function_signature => 'mydb.public.myfunction(integer, varchar)'
Copy

引数のデータ型は指定されていますが、引数名は指定されていないことに注意してください。

書名が指定されていない場合、出力には時間範囲内で使用されているすべての外部関数の合計が含まれ、結果の次の列には NULL が表示されます。

  • FUNCTION_NAME

  • ARGUMENTS

  • FUNCTION_ENDPOINT_URL

  • SOURCE_CLOUD

  • SOURCE_REGION

  • TARGET_CLOUD

  • TARGET_REGION

使用上の注意

  • ACCOUNTADMIN ロールまたは MONITOR USAGE グローバル権限が明示的に付与されているロールの結果のみを返します。

  • 情報スキーマテーブル関数を呼び出す場合、セッションには使用中の INFORMATION_SCHEMA スキーマがある、 または 関数名 EXTERNAL_FUNCTIONS_HISTORY が完全に修飾されている必要があります。詳細については、 Snowflake Information Schema をご参照ください。

  • ARGUMENTS という名前の出力列には、引数のデータ型だけでなく、戻りのデータ型も含まれます。FUNCTION_SIGNATURE という名前の入力パラメーターには、引数のデータ型を含める必要がありますが、戻りデータ型は含めないでください。

  • トラブルシューティングのヒントについては、 症状: EXTERNAL_FUNCTIONS_HISTORY が「...無効な識別子...」を返す をご参照ください。

出力

この関数は、次の列を返します。

列名

データ型

説明

START_TIME

TIMESTAMP_LTZ

履歴を返すように指定された時間範囲の開始。

END_TIME

TIMESTAMP_LTZ

履歴を返すように指定された時間範囲の終了。

NAME

TEXT

履歴を返す関数の名前。

ARGUMENTS

TEXT

引数および戻り値のデータ型。引数のデータ型は、オーバーロードされた関数名を区別します。

FUNCTION_ENDPOINT_URL

TEXT

関数が呼び出す HTTPS エンドポイント。これは通常、プロキシサービスです。

SOURCE_CLOUD

TEXT

行の送信元のクラウドプラットフォーム(例: GCPAzure、または AWS)。

SOURCE_REGION

TEXT

行の送信元の地域(例: eu-west-1)。

TARGET_CLOUD

TEXT

行の送信先のクラウドプラットフォーム(例: GCPAzure、または AWS)。

TARGET_REGION

TEXT

行の送信先の地域(例: eu-west-1)。

INVOCATIONS

NUMBER

START_TIME と END_TIME の時間枠の間にリモートサービスが呼び出された回数。これには再試行が含まれます(例: 一時的なネットワークの問題のため)。

SENT_ROWS

NUMBER

START_TIME と END_TIME の時間枠中に外部エンドポイントに送信された行数。

RECEIVED_ROWS

NUMBER

START_TIME と END_TIME の時間枠中に外部エンドポイントから受信した行数。

SENT_BYTES

NUMBER

START_TIME と END_TIME の時間枠中に外部エンドポイントに送信されたバイト数。

RECEIVED_BYTES

NUMBER

START_TIME と END_TIME 時間枠中に外部エンドポイントから受信したバイト数。

アカウントの30分範囲の履歴を5分周期で取得します。

select *
  from table(information_schema.external_functions_history(
    date_range_start => to_timestamp_ltz('2020-05-24 12:00:00.000'),
    date_range_end => to_timestamp_ltz('2020-05-24 12:30:00.000')));
Copy

アカウントの単一の外部関数について、過去12時間の履歴を1時間周期で取得します。

select *
  from table(information_schema.external_functions_history(
    date_range_start => dateadd('hour', -12, current_timestamp()),
    function_signature => 'mydb.public.myfunction(integer, varchar)'));
Copy

アカウントの過去14日間の履歴を1日周期で取得します。

select *
  from table(information_schema.external_functions_history(
    date_range_start => dateadd('day', -14, current_date()),
    date_range_end => current_date()));
Copy

アカウントで指定された関数の過去14日間の履歴を1日周期で取得します。

select *
  from table(information_schema.external_functions_history(
    date_range_start => dateadd('day', -14, current_date()),
    date_range_end => current_date(),
    function_signature => 'mydb.public.myfunction(integer, varchar)'));
Copy

トラブルシューティング

症状: EXTERNAL_FUNCTIONS_HISTORY が「...無効な識別子...」を返す

考えられる原因

関数の署名を一重引用符で囲まなかった可能性があります。たとえば、次の例は引用符が含まれていないため間違っています。

select *
  from table(information_schema.external_functions_history(
    function_signature => mydb.public.myfunction(integer, varchar)));
Copy
考えられる解決策

関数の署名を引用符で囲んで、これを修正します。

select *
  from table(information_schema.external_functions_history(
    function_signature => 'mydb.public.myfunction(integer, varchar)'));
Copy

症状: EXTERNAL_FUNCTIONS_HISTORY は出力の1行のみを返し、列の多くは NULL

考えられる原因

関数の署名が含まれていない可能性があります。関数の署名を指定しない場合、 EXTERNAL_FUNCTION_HISTORY() は、 INVOCATIONS、 SENT ROWS などの列に集計値を返し、関数名、引数リストなどの列に NULL を返します。

考えられる解決策

1つの関数の情報を取得する場合は、関数の署名を含めます。

すべての関数の情報を取得する場合は、一部の列の NULL 値が正しいため、クエリを修正する必要はありません。