Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Esta característica se encuentra en su versión beta. Los administradores de cuentas pueden controlar el acceso a esta característica desde la página Vista previa de la consola de la cuenta. Consulte Administrar versiones preliminares de Azure Databricks.
Una directiva de servicio personalizada es una función definida por el usuario (UDF) de SQL registrada en el Catálogo de Unity que Azure Databricks evalúa en cada interacción con el servicio al que está asociado. Esta página es el campo y la referencia de sintaxis para esas funciones. Para obtener el procedimiento de un extremo a otro, consulte Creación y asociación de una directiva de servicio.
Firma de función
Una función de directiva de servicio toma un único eventVARIANT parámetro y devuelve un VARIANT:
CREATE OR REPLACE FUNCTION <catalog>.<schema>.<function_name>(
event VARIANT
)
RETURNS VARIANT
LANGUAGE SQL
RETURN <expression>;
La función se ejecuta en ambos puntos de evaluación. Bifurque event:type::string en para decirles aparte:
-
'request': la fase de entrada (ON CALL), antes de que se invoque el servicio. -
'response': la fase de salida (ON RESULT), después de que el servicio responde.
Argumento event
event lleva los datos de interacción y el contexto. Los campos disponibles dependen del tipo de servicio:
| Campo | Se aplica a | Description |
|---|---|---|
event:type |
Todos los servicios | La fase: 'request' (entrada, EN LLAMADA) o 'response' (salida, EN RESULTADO). |
event:target |
Todos los servicios | El nombre completo del catálogo de Unity del servicio al que se adjunta la directiva (opcional). |
event:context.actor.run_as |
Todos los servicios | La identidad de ejecución en la que se autoriza la solicitud. |
event:context.actor.context.is_on_behalf_of |
Todos los servicios |
true cuando un agente o aplicación actúa en nombre de un usuario (en nombre de o de OBO). Úselo para escribir directivas compatibles con agente que solo se aplican cuando un agente actúa para un usuario. |
event:context.actor.context.client_id |
Todos los servicios | Identificador de cliente de OAuth de la identidad de actuación, cuando está presente (llama a OBO). |
event:context.actor.context.actor_resource |
Todos los servicios | Recurso de la identidad que actúa, como un agente, cuando está presente. |
event:context.actor.context.is_actor_authenticated |
Todos los servicios |
true cuando la identidad de actuación se autentica como un cliente confidencial. |
event:context.tool.name, event:context.tool.arguments |
Servicios MCP | La herramienta a la que se llama y sus argumentos (por ejemplo, event:context.tool.arguments.repo). |
event:context.message |
Servicios de modelo, servicios de proveedor de modelos | Mensaje del último usuario o asistente extraído (independiente de la API). Úselo para las comprobaciones de contenido. |
event:data |
Servicios de modelo, servicios de proveedor de modelos | Carga completa de solicitud o respuesta. |
event:request_data |
Servicios de modelo, servicios de proveedor de modelos | La solicitud original, disponible durante la fase de salida (EN RESULTADO). |
Nota:
Acceso de ruta de acceso (event:...) devuelve un VARIANT. Convertirlo a un tipo escalar antes de compararlo con un literal (por ejemplo, ); de lo contrario, event:type::string = 'request'se produce un DATATYPE_MISMATCH error en la comparación.
Valor devuelto
Una directiva personalizada es una directiva de decisión: devuelve un VARIANT con un result campo de ALLOW, DENYo ASK (sin distinción entre mayúsculas y minúsculas) y un opcional reason. El result valor determina lo que sucede:
-
ALLOW: la interacción continúa. -
DENY: Azure Databricks bloquea la interacción. En lugar de un error, el llamador recibe una respuesta exitosa (HTTP 200) cuyo turno asistente reporta el bloqueo, con elreasonen un objeto de nivel superiordatabricks_service_policy. -
ASK: la interacción se detiene para la aprobación humana antes de continuar.
Compile el resultado con named_struct y encapsularlo para to_variant_object que la función devuelva un , VARIANTmanteniendo result y reason como campos de nivel superior. Un elemento bare named_struct devuelve un STRUCTy CAST(... AS VARIANT) no se admite.
to_variant_object(named_struct('result', 'DENY', 'reason', 'GitHub push operations are not permitted by policy.'))
La puerta de enlace también acepta un formulario de sobre de avance:
to_variant_object(named_struct('decision', named_struct('result', 'DENY', 'reason', '...')))
Nota:
Acceso a campos cerrados por error: el acceso a un campo que no existe en el VARIANT parámetro genera un error y da como DENY resultado (el acceso SQL VARIANT estándar devuelve NULL los campos que faltan). Esto impide que una directiva permita una interacción cuando falten campos esperados.
SQL compatible
Azure Databricks transpila el cuerpo de la directiva a CEL y lo evalúa en tiempo de ejecución, por lo que el cuerpo de la función solo admite un subconjunto restringido de SQL. Azure Databricks rechaza una función o construcción no admitidas al adjuntar la directiva y la directiva no se cierra (DENY) en la evaluación.
| Categoría | Se admite en el cuerpo de la directiva |
|---|---|
| Operadores | Operadores de comparación, lógicos y aritméticos; \|\|, IN, LIKEy IS [NOT] NULL |
| Flujo de control |
CASE y IF |
| Casteos |
CASTa INT/BIGINT, DOUBLE/FLOAT, STRINGo BOOLEAN; el operador :: |
| Acceso a datos | Acceso a la ruta de acceso VARIANT/JSON |
| Funciones de cadena |
CONCAT, LENGTH, CHAR_LENGTH, UPPER, , LOWERSUBSTRING, TRIM, LTRIMRTRIMREPLACESTARTSWITHENDSWITHCONTAINS |
| Otras funciones |
COALESCE, NULLIF, IFNULL, NVL, ABS, MOD, ISNULL, ISNOTNULL, , NAMED_STRUCTTO_VARIANT_OBJECT |
No compatible:ai_query, subconsultas, BETWEEN, funciones de agregado, lambdas/ EXISTS, y variadic CONCAT o COALESCE.