Unity CatalogのSQLとPythonユーザー定義関数 (UDF)
Unity Catalog のユーザー定義関数 (UDF) は、Databricks 内で SQL および Python の機能を拡張します。複数のコンピューティング環境間で、カスタム関数を定義、使用し、安全に共有および管理できます。
Unity Catalogで関数として登録されているPython UDFは、ノートブックまたはSparkSessionにスコープ設定されたPySpark UDFとはスコープとサポートが異なります。Python スカラー ユーザー定義関数 (UDFs)を参照してください。
Unity Catalog で Scala または Java で記述された UDF を登録するには、Unity Catalog の Scala および Java ユーザー定義関数 (UDF) を参照してください。
変更前に Unity Catalog 内のどのワークロードやテーブルが UDF を参照しているかを確認するには、UDF リネージの表示を参照してください。
完全なSQL言語リファレンスについては、CREATE FUNCTION (SQL、Python、Scala、Java)を参照してください。
必要条件
Unity Catalog で UDF を使用するには、次の要件を満たす必要があります。
- に登録された PythonUDFUnity Catalog でSQLDatabricks Runtime コードを使用するには、14.1 以降を実行しているプロ ウェアハウスまたはクラスター を使用する必要があります。
- Unity Catalog に登録された UDF を使用して作成されたビューを解決するには、Databricks Runtime 14.1 以降を使用する必要があります。 SQLウェアハウスはご利用いただけません。
- Unity カタログ対応クラスター上の Scala UDF の ARM インスタンス サポートは、Databricks Runtime 15.2 以降で利用できます。
Scalar and バッチ Unity Catalog Python UDFs are generally available on all supported compute types.
Python UDF feature requirements
要件は機能によって異なります。Databricks Runtime 19 および環境バージョン 6 は、Unity Catalog Python UDF の一般的な要件ではありません。
Serverlessノートブックまたはジョブ上の PySpark セッション UDF の場合、環境要件はセッション環境を指します。SQL で定義された Python UDF の場合、各関数の ENVIRONMENT 句の environment_version を指します。セッション環境を変更しても、既存の Unity Catalog 関数の環境は変更されません。たとえば、環境バージョン 6 を使用するセッションから、環境バージョン 5 で定義された Unity Catalog 関数を呼び出すことができます。
機能 | 要件 |
|---|---|
サーバレスノートブックおよびジョブ、プロまたはサーバレスSQLウェアハウス、クラシックコンピュート上の Databricks Runtime 16.2 以降。Databricks Runtime 16.2 から 18.1 を実行しているクラシックコンピュートでは、 | |
Serverless コンピュート; pro and Serverless SQL Warehouse; Databricks Runtime 16.3 or above on classic コンピュート | |
クラシックコンピュート上の Databricks Runtime 18.1 以降。サーバーレスコンピュート、および Pro および Serverless SQL Warehouse では、UDF の | |
クラシックコンピュート上の Databricks Runtime 18.1 以降。サーバーレスコンピュート、ならびに Pro および Serverless SQL Warehouse では、UDF の | |
Serverless コンピュート、Pro および Serverless SQL Warehouse、クラシックコンピュート上の Databricks Runtime 16.3 以降。環境バージョン 6 は必要ありません。Serverless SQL ウェアハウスでは、分離ワークロードネットワーキングのパブリックプレビューも有効にします。 | |
| |
クラシックコンピュート上の Databricks Runtime 18.1 以降。サーバーレスコンピュート、および Pro および Serverless SQL Warehouse では、UDF の | |
クエリー内の 5 つを超える UDF 呼び出し | クラシック コンピュート上の Databricks Runtime 18.1 以降。サーバーレス コンピュートおよび Pro と Serverless SQL Warehouse では、各 UDF の |
Existing UDFs and features that were available during Public Preview continue to work on applicable earlier ランタイム versions.
環境バージョンによって、呼び出し元が Unity Catalog ボリュームに保存されている依存関係に直接アクセスする必要があるかどうかも決まります。Unity Catalog ボリューム内の依存関係の権限を参照してください。
クラシック コンピュートでの環境バージョン
クラシックコンピュートでは、environment_version を 'None' 以外の値に設定するには、Databricks Runtime 18.2以降が必要です。Databricks Runtime 16.2~18.1では、ENVIRONMENT 句を使用する場合は常に environment_version = 'None' を設定してください。値 'None' はdefaultのPython環境を使用します。
Databricks Runtime 18.2 以降では、予測可能な動作のため、Databricksは各Unity Catalog Python UDF定義で固定のenvironment_versionを明示的に設定することを推奨しています。UDFの機能要件を満たし、次の互換性に関する推奨事項に従うバージョンを選択してください。
Databricks Runtimeのバージョン | 推奨される最大環境バージョン |
|---|---|
18.2~18.x | 5 |
19.x | 6 |
Unity Catalog での SQL および Python UDF の作成
Unity Catalog で SQL または Python UDF を作成するには、ユーザーはスキーマに対する USAGE および CREATE 権限、ならびにカタログに対する USAGE 権限が必要です。詳細については、Unity Catalog を参照してください。
UDF を実行するには、UDF に対する EXECUTE 権限が必要です。 ユーザーには、スキーマとカタログに対する USAGE 権限も必要です。
Unity Catalog スキーマで UDF を作成して登録するには、関数名は catalog.schema.function_name の形式に従う必要があります。または、SQL エディターで正しいカタログとスキーマを選択できます。この場合、関数名には catalog.schema を先頭に追加してはなりません:

次の例では、my_catalog カタログの my_schema スキーマに新しい関数を登録します。
CREATE OR REPLACE FUNCTION my_catalog.my_schema.calculate_bmi(weight DOUBLE, height DOUBLE)
RETURNS DOUBLE
LANGUAGE SQL
RETURN
SELECT weight / (height * height);
Unity CatalogのPython UDFは、二重ドル記号 ($$) でオフセットされたステートメントを使用します。データ型マッピングを指定する必要があります。次の例は、体格指数を計算するUDFを登録する方法を示しています:
CREATE OR REPLACE FUNCTION my_catalog.my_schema.calculate_bmi(weight_kg DOUBLE, height_m DOUBLE)
RETURNS DOUBLE
LANGUAGE PYTHON
AS $$
return weight_kg / (height_m ** 2)
$$;
これで、この Unity Catalog 関数を SQL クエリまたは PySpark コードで使用できるようになりました。
SELECT person_id, my_catalog.my_schema.calculate_bmi(weight_kg, height_m) AS bmi
FROM person_data;
UDF のその他の例については、 行フィルターの例 と 列マスクの例 を参照してください。
スカラー Python UDF で名前付きハンドラーを使用する
クラシックコンピュートでは、名前付きハンドラーに Databricks Runtime 18.1 以降が必要です。Serverless コンピュートおよび Pro および Serverless SQL Warehouse で、UDF の environment_version を明示的に 6 以上に設定します。次の例では、環境バージョン 6 を使用します。Databricks Runtime 18.1 を実行しているクラシックコンピュートでは、ENVIRONMENT 句を省略します。以降のランタイムバージョンでは、句を含める場合に互換性の推奨事項に従ってください。
HANDLER 句を使用して、UDF 本体の Python 関数をエントリポイントとして名前を指定します。指定されたハンドラーは UDF 引数を受け入れ、宣言された戻り値の型に一致する値を返します。ハンドラー外部のコードは、ハンドラーが入力を処理する前に、各 Python 環境が UDF を初期化するときに実行されます。ハンドラーの呼び出し間で再利用できる 1 回限りの初期化には、このコードを使用します。
次の例では、UDF 入力を処理する関数である greet_handler を定義する前に、greeting_prefix を初期化します。
CREATE OR REPLACE FUNCTION my_catalog.my_schema.greet(name STRING)
RETURNS STRING
LANGUAGE PYTHON
HANDLER 'greet_handler'
ENVIRONMENT (
environment_version = '6'
)
AS $$
# Runs once when each Python environment initializes the UDF.
greeting_prefix = "Hello"
def greet_handler(name):
return f"{greeting_prefix}, {name}!"
$$;
Python UDF でシークレットを使用する
スカラーおよびバッチ Unity Catalog Python UDF は、SECRETS 句で宣言されたシークレットにアクセスできます。UDF 定義では、environment_version を 6 以上に明示的に設定する必要があります。Unity Catalog シークレットには3パートの名前(catalog.schema.secret)を使用し、ワークスペースレベルの Databricks シークレットとは区別されます。コンピュートのサポート、アクセス許可、および専用コンピュートの列マスク例外については、UDF の要件とアクセス許可を参照してください。
UDF からシークレットにアクセスするには:
- Add the secret's three-part name to the
SECRETSclause in the UDF definition.A UDF can retrieve only secrets declared in this clause. - UDF 本体で、カタログ、スキーマ、シークレット名を指定して
databricks.secrets.get()を呼び出します。
次のスカラー UDF の例では、ハッシュベースメッセージ認証コード (HMAC) 署名キーとして Unity Catalog シークレットを使用します。バッチ UDF ハンドラーから宣言されたシークレットにアクセスするには、PARAMETER STYLE PANDAS と同じ SECRETS 句を使用します。
CREATE OR REPLACE FUNCTION main.default.sign_value(value STRING)
RETURNS STRING
LANGUAGE PYTHON
SECRETS (main.default.hmac_key)
ENVIRONMENT (
environment_version = '6'
)
AS $$
import hashlib
import hmac
from databricks.secrets import get
key = get(catalog="main", schema="default", key="hmac_key")
return hmac.new(key.encode(), value.encode(), hashlib.sha256).hexdigest()
$$;
UDF からシークレット値を返さないでください。シークレットのマスキングは、エラーや Logs での偶発的な露出を減らすのに役立ちますが、UDF コードがクエリー結果でシークレットのマテリアルを露出するのを防ぐものではありません。
カスタムの依存関係を使用した UDF の拡張
外部ライブラリのカスタム依存関係を定義することで、Unity Catalog Python UDF の機能を Databricks Runtime 環境を超えて拡張できます。
要件
Unity Catalog UDF のカスタム依存関係は、次のコンピュートタイプでサポートされています。
- サーバレス ノートブック and ジョブ
- Databricks Runtimeバージョン16.2以降を使用するクラシック汎用コンピュート
- プロまたはサーバーレスSQLウェアハウス
依存関係ソース
次のソースから依存関係をインストールします。
- PyPI パッケージ
- Unity Catalog ボリュームに保存されているファイル Unity Catalog ボリューム内の依存関係の権限を参照してください。
- パブリックURLで利用可能なファイル ワークスペースのネットワークセキュリティルールは、パブリックURLへのアクセスを許可する必要があります。要件を参照してください。
ワークスペースでサーバレスネットワークアクセスが制限されている場合は、パブリックURLを許可するようにネットワークセキュリティルールを構成する必要があります。出力ルールを設定するを参照してください。
Unity Catalog ボリュームの依存関係に対するアクセス許可
そのボリュームから UDF に依存関係を追加するには、関数の作成者がソースボリュームに対する READ VOLUME を持っている必要があります。
定義で environment_version が 6 以上に明示的に設定されている UDF の場合、呼び出し元は UDF に対する EXECUTE 権限が必要ですが、ソースボリュームに対する READ VOLUME 権限は必要ありません。UDF 定義で environment_version が省略されている場合、None に設定されている場合、または以前のバージョンに設定されている場合、呼び出し元はソースボリュームに対する READ VOLUME 権限も持っている必要があります。
依存関係を定義する
UDF 定義の ENVIRONMENT セクションを使用して、依存関係を指定します。
CREATE OR REPLACE FUNCTION my_catalog.my_schema.mixed_process(data STRING)
RETURNS STRING
LANGUAGE PYTHON
ENVIRONMENT (
dependencies = '["simplejson==3.19.3", "/Volumes/my_catalog/my_schema/my_volume/packages/custom_package-1.0.0.whl", "https://my-bucket.s3.amazonaws.com/packages/special_package-2.0.0.whl?Expires=2043167927&Signature=abcd"]',
environment_version = '6'
)
AS $$
import simplejson as json
import custom_package
return json.dumps(custom_package.process(data))
$$;
ENVIRONMENT セクションには、次のフィールドが含まれています。
フィールド | 説明 | タイプ | 使用例 |
|---|---|---|---|
| インストールするコンマ区切りの依存関係の一覧。各エントリは、 pip Requirements File Format に準拠した文字列です。 |
|
|
| Specifies the environment version in which to run the UDF.This field is required whenever the サポートされている値は、 On Serverless コンピュート、ならびに Pro および Serverless SQL Warehouse では、一部の機能に明示的な環境バージョンが必要です。各 UDF 定義で、 クラシックコンピュートのバージョンの互換性については、クラシックコンピュートの環境バージョンを参照してください。利用可能なバージョンのリストについては、環境バージョンを参照してください。 |
|
|
PySparkでUnity Catalog UDF を使用する
from pyspark.sql.functions import expr
result = df.withColumn("bmi", expr("my_catalog.my_schema.calculate_bmi(weight_kg, height_m)"))
display(result)
セッション スコープの UDF のアップグレード
Unity Catalog の Python UDF の構文とセマンティクスは、SparkSession に登録されている Python UDF とは異なります。 ユーザー定義のスカラー関数 - Pythonを参照してください。
Databricks ノートブックに次のセッションベースの UDF があるとします。
from pyspark.sql.functions import udf
from pyspark.sql.types import StringType
@udf(StringType())
def greet(name):
return f"Hello, {name}!"
# Using the session-based UDF
result = df.withColumn("greeting", greet("name"))
result.show()
これを Unity Catalog 関数として登録するには、次の例のように SQL CREATE FUNCTION ステートメントを使用します。
CREATE OR REPLACE FUNCTION my_catalog.my_schema.greet(name STRING)
RETURNS STRING
LANGUAGE PYTHON
AS $$
return f"Hello, {name}!"
$$
Unity Catalog で UDF を共有する
UDF を登録するカタログ、スキーマ、またはデータベースに適用されるアクセス制御によって、その権限が管理されます。詳細については、Unity Catalog での権限の管理を参照してください。
Databricks SQL または Databricks ワークスペース UI を使用して、ユーザーまたはグループにアクセス許可を付与します (推奨)。
ワークスペース UI のアクセス許可
- UDF が格納されているカタログとスキーマを検索し、UDF を選択します。
- UDF 設定で アクセス許可 オプションを探します。ユーザーまたはグループを追加し、EXECUTE や MANAGE など、付与する必要があるアクセスの種類を指定します。

Databricks SQL を使用したアクセス許可
次の例では、関数に対する EXECUTE パーミッションをユーザーに付与します。
GRANT EXECUTE ON FUNCTION my_catalog.my_schema.calculate_bmi TO `user@example.com`;
アクセス許可を削除するには、次の例のように REVOKE コマンドを使用します。
REVOKE EXECUTE ON FUNCTION my_catalog.my_schema.calculate_bmi FROM `user@example.com`;
環境分離
共有分離環境には、Databricks Runtime 18.1 以降が必要です。以前のバージョンでは、すべての Unity Catalog Python UDF は厳密な分離モードで実行されます。
同じ所有者とセッションを持つUnity Catalog Pythonユーザー定義関数 (UDF) は、defaultで分離環境を共有できます。これにより、起動する必要がある個別の環境の数を減らすことで、パフォーマンスが向上し、メモリ使用量が削減されます。
厳格な隔離
UDF が常に独自の完全に隔離された環境で実行されることを検証するには、STRICT ISOLATION 特性句を追加します。
ほとんどの UDF では厳密な分離は必要ありません。標準データ処理 UDF は、デフォルトの共有分離環境の恩恵を受け、メモリ消費量を抑えながら高速に実行されます。
次の UDF にSTRICT ISOLATION特性句を追加します:
eval()、exec()、または同様の関数を使用して、入力をコードとして実行します。- ファイルをローカル ファイル システムに書き込みます。
- グローバル変数またはシステム状態を変更します。
- 環境変数にアクセスまたは変更します。
次のコードは、STRICT ISOLATION を使用して実行する必要がある UDF の例を示しています。この UDF は任意の Python コードを実行するため、システムの状態を変更したり、環境変数にアクセスしたり、ローカルファイルシステムに書き込んだりする可能性があります。STRICT ISOLATION 句を使用すると、UDF 間での干渉やデータ漏洩を防ぐのに役立ちます。
CREATE OR REPLACE TEMPORARY FUNCTION run_python_snippet(python_code STRING)
RETURNS STRING
LANGUAGE PYTHON
STRICT ISOLATION
AS $$
import sys
from io import StringIO
# Capture standard output and error streams
captured_output = StringIO()
captured_errors = StringIO()
sys.stdout = captured_output
sys.stderr = captured_errors
try:
# Execute the user-provided Python code in an empty namespace
exec(python_code, {})
except SyntaxError:
# Retry with escaped characters decoded (for cases like "\n")
def decode_code(raw_code):
return raw_code.encode('utf-8').decode('unicode_escape')
python_code = decode_code(python_code)
exec(python_code, {})
# Return everything printed to stdout and stderr
return captured_output.getvalue() + captured_errors.getvalue()
$$
関数が一貫した結果を生成する場合に DETERMINISTIC を設定します
同じ入力に対して同じ出力を生成する場合は、関数定義に DETERMINISTIC を追加します。これにより、クエリの最適化によりパフォーマンスが向上します。
defaultでは、明示的に宣言しない限り、Databricks はバッチ Unity Catalog Python UDF を非決定論的と見なします。非決定論的関数の例には、ランダムな値を生成する、現在の時刻や日付にアクセスする、外部 API を呼び出す、などがあります。
CREATE FUNCTION (SQL、Python、Scala、および Java) を参照してください。
エージェントツール用UDF
AIエージェントは、Unity Catalog UDFをツールとして使用して、タスクを実行し、カスタムロジックを実行できます。
Unity Catalog 関数を使用してエージェントツールを作成を参照してください。
外部APIにアクセスするための UDF
UDF を使用して、SQLから外部API にアクセスできます。次の例では、Python requests ライブラリを使用して HTTP リクエストを行います。
Python UDF は、サーバレス コンピュートまたは標準アクセス モードで構成されたコンピュートを使用する場合、ポート 80、443、および 53 を介した TCP/UDP ネットワーク トラフィックを許可します。
CREATE FUNCTION my_catalog.my_schema.get_food_calories(food_name STRING)
RETURNS DOUBLE
LANGUAGE PYTHON
AS $$
import requests
api_url = f"https://example-food-api.com/nutrition?food={food_name}"
response = requests.get(api_url)
if response.status_code == 200:
data = response.json()
# Assume the API returns a JSON object with a 'calories' field
calories = data.get('calories', 0)
return calories
else:
return None # API request failed
$$;
セキュリティとコンプライアンスのための UDF
Python UDF を使用して、カスタムトークン化、データマスキング、データ編集、または暗号化メカニズムを実装します。
次の例では、Eメール アドレスの ID をマスクしながら、長さとドメインを維持します。
CREATE OR REPLACE FUNCTION my_catalog.my_schema.mask_email(email STRING)
RETURNS STRING
LANGUAGE PYTHON
DETERMINISTIC
AS $$
parts = email.split('@', 1)
if len(parts) == 2:
username, domain = parts
else:
return None
masked_username = username[0] + '*' * (len(username) - 2) + username[-1]
return f"{masked_username}@{domain}"
$$
次の例では、この UDF を動的ビュー定義に適用します。
-- First, create the view
CREATE OR REPLACE VIEW my_catalog.my_schema.masked_customer_view AS
SELECT
id,
name,
my_catalog.my_schema.mask_email(email) AS masked_email
FROM my_catalog.my_schema.customer_data;
-- Now you can query the view
SELECT * FROM my_catalog.my_schema.masked_customer_view;
+---+------------+------------------------+------------------------+
| id| name| email| masked_email |
+---+------------+------------------------+------------------------+
| 1| John Doe| john.doe@example.com | j*******e@example.com |
| 2| Alice Smith|alice.smith@company.com |a**********h@company.com|
| 3| Bob Jones| bob.jones@email.org | b********s@email.org |
+---+------------+------------------------+------------------------+
ベストプラクティス
すべてのユーザーが UDF にアクセスできるようにするために、Databricks では、適切なアクセス制御を備えた専用のカタログとスキーマを作成することをお勧めします。
チーム固有の UDF の場合は、チーム カタログ内の専用スキーマを使用して、ストレージと管理を行います。
Databricks では、UDF ドキュメント文字列に次の情報を含めることをお勧めします。
- 現在のバージョン番号
- バージョン間での変更を追跡するための変更ログ
- UDF の目的、パラメーター、および戻り値
- UDF の使用方法の例
次の例は、ベストプラクティスに従ったUDFを示しています。
CREATE OR REPLACE FUNCTION my_catalog.my_schema.calculate_bmi(weight_kg DOUBLE, height_m DOUBLE)
RETURNS DOUBLE
COMMENT "Calculates Body Mass Index (BMI) from weight and height."
LANGUAGE PYTHON
DETERMINISTIC
AS $$
"""
Parameters:
calculate_bmi (version 1.2):
- weight_kg (float): Weight of the individual in kilograms.
- height_m (float): Height of the individual in meters.
Returns:
- float: The calculated BMI.
Example Usage:
SELECT calculate_bmi(weight, height) AS bmi FROM person_data;
Change Log:
- 1.0: Initial version.
- 1.1: Improved error handling for zero or negative height values.
- 1.2: Optimized calculation for performance.
Note: BMI is calculated as weight in kilograms divided by the square of height in meters.
"""
if height_m <= 0:
return None # Avoid division by zero and ensure height is positive
return weight_kg / (height_m ** 2)
$$;
行単位入力のTimestamp タイムゾーンの動作
TIMESTAMP 入力は、タイムゾーンを含まない UTC の datetime 値として、行単位の Python UDF に渡されます。クラシックコンピュートでは、この動作には Databricks Runtime 18.1 以降が必要です。サーバーレスコンピュート、および Pro および Serverless SQL Warehouse では、UDF の environment_version を 6 以上に明示的に設定します。datetime オブジェクトには、tzinfo 属性にタイムゾーンメタデータが含まれていません。
バッチ Unity Catalog Python UDF は、pandas.Series オブジェクトで Timestamp 入力を受け取り、この datetime マッピングを使用しません。
この変更により、Unity Catalog Python UDF が Apache Spark の Arrow に最適化された Python UDF と整合されます。
For example, the following クエリー explicitly sets environment version 6 and the session timezone to UTC:
SET TIME ZONE 'UTC';
CREATE FUNCTION timezone_udf(date TIMESTAMP)
RETURNS STRING
LANGUAGE PYTHON
ENVIRONMENT (
environment_version = '6'
)
AS $$
return f"{type(date)} {date} {date.tzinfo}"
$$;
SELECT timezone_udf(TIMESTAMP '2024-10-23 10:30:00');
前者の実行パスは、セッションのタイムゾーンにおけるタイムゾーン対応の値を返します。これは、Databricks Runtime 18.1 より前のクラシック コンピュートに適用されます。また、ENVIRONMENT 句を省略した場合、environment_version = 'None' を設定した場合、または 6 より前のバージョンを選択した場合にも、Serverless コンピュート、Pro および Serverless SQL ウェアハウスに適用されます。セッションのタイムゾーンを UTC に設定した場合、前者のパスは次の結果を生成します。
<class 'datetime.datetime'> 2024-10-23 10:30:00+00:00 UTC
示した定義により、Serverlessコンピュート、ならびにProおよびServerlessのSQL Warehouseは、PySpark互換の動作を使用します。Databricks Runtime 18.1以降を実行するクラシックコンピュートでは、ENVIRONMENT句を調整または省略した場合に同じ動作が使用されます。
<class 'datetime.datetime'> 2024-10-23 10:30:00 None
この変更は、クロックフィールドおよび tzinfo に影響を与える可能性があります。インスタント 2024-10-23T10:30:00Z の場合、America/Los_Angeles セッションでの以前の動作では 2024-10-23 03:30:00-07:00 が生成されます。新しい動作では、タイムゾーンを含まない UTC 値 2024-10-23 10:30:00 が生成されます。
UDF がタイムゾーン情報に依存している場合は、UTC を明示的に復元してください。
from datetime import timezone
date = date.replace(tzinfo=timezone.utc)
UTC のタイムゾーン情報を追加しても、以前のセッションローカルなクロックフィールドは復元されません。ロジックでこれらのフィールドが必要な場合は、アウェアな値を意図したセッションのタイムゾーンに変換することも行います。例えば:
from zoneinfo import ZoneInfo
date = date.astimezone(ZoneInfo("America/Los_Angeles"))
制限
- Python UDF 内では任意の数の Python 関数を定義できますが、すべてがスカラー値を返す必要があります。
- Python 関数は NULL 値を個別に処理する必要があり、すべての型マッピングは Databricks SQL 言語マッピングに従う必要があります。
- カタログまたはスキーマを指定しない場合、Databricks は Python UDF を現在アクティブなスキーマに登録します。
- Python UDF は、安全で隔離された環境で実行され、ファイルシステムや内部サービスにアクセスできません。
- Databricks Runtime 18.1 以降を実行しているクラシック コンピュート上のクエリーでは、5 つを超える UDF を呼び出すことができます。サーバーレス コンピュート、および Pro および Serverless SQL Warehouse では、各 UDF の定義で
environment_versionを6以上に明示的に設定する必要があります。