- カテゴリ:
システム関数 (システム情報)
GET_PYTHON_PROFILER_OUTPUT (SNOWFLAKE.CORE)¶
Pythonコードプロファイラー によって生成されたレポートを含む出力を返します。
構文¶
SNOWFLAKE.CORE.GET_PYTHON_PROFILER_OUTPUT(<query_id>)
引数¶
query_id
プロファイリングを有効にしたストアドプロシージャクエリのクエリ ID。
戻り値¶
コードプロファイラー によって生成されたレポートを持つ VARCHAR 型の文字列。
アクセス制御の要件¶
この関数を呼び出すには、 ACCOUNTADMIN ロールを使用する必要があります。
例¶
プロファイラーが時間ではなくメモリのプロファイルに設定されている場合、設定は以下のようになります。
Handler Name: main
Python Runtime Version: 3.8
Modules Profiled: ['main_module']
File: _udf_code.py
Function: main at line 4
Line # Mem usage Increment Occurrences Line Contents
=============================================================
4 245.3 MiB 245.3 MiB 1 def main(session, last_n, total):
5 # create sample dataset to emulate id + elapsed time
6 245.8 MiB 0.5 MiB 1 session.sql('''
7 CREATE OR REPLACE TABLE sample_query_history (query_id INT, elapsed_time FLOAT)''').collect()
8 245.8 MiB 0.0 MiB 2 session.sql('''
9 INSERT INTO sample_query_history
10 SELECT
11 seq8() AS query_id,
12 uniform(0::float, 100::float, random()) as elapsed_time
13 245.8 MiB 0.0 MiB 1 FROM table(generator(rowCount => {0}));'''.format(total)).collect()
14
15 # get the mean of the last n query elapsed time
16 245.8 MiB 0.0 MiB 3 df = session.table('sample_query_history').select(
17 245.8 MiB 0.0 MiB 1 funcs.col('query_id'),
18 245.8 MiB 0.0 MiB 2 funcs.col('elapsed_time')).limit(last_n)
19
20 327.9 MiB 82.1 MiB 1 pandas_df = df.to_pandas()
21 328.9 MiB 1.0 MiB 1 mean_time = pandas_df.loc[:, 'ELAPSED_TIME'].mean()
22 320.9 MiB -8.0 MiB 1 del pandas_df
23 320.9 MiB 0.0 MiB 1 return mean_time