User-Defined Functions
TileDB allows you to create, manage, and execute user-defined functions (UDFs) inside its secure infrastructure. UDFs are an easy way to perform any computation developed in a variety of programming languages.
Add UDF
Section Analyze: User-Defined Functions includes all the information you need to know about how to create, register and execute UDFs.
Once created, your UDF will appear under Assets -> Code -> UDFs
.
Overview
The Overview
tab provides basic information about a UDF:
- Description - If you provided a description to the UDF (e.g., from
Settings
), it is visible here. The description is indexed and searchable in the catalog. Therefore, it’s recommended to add a meaningful description for all your assets. - TileDB URI - The unique resource identifier for TileDB, based on which you can refer to the UDF. It contains the namespace and the UUID of the asset.
- UUID - The unique identifier for the UDF.
- Original URI - The location on cloud storage where the asset is stored. This property is visible only to the admin of the asset.
- Permissions - What rights the current user has on this asset.
- License - If available, under which license the asset is available. Editable through
Settings
, if you are the admin of the asset. - Tags - Any tags on the asset, if available, which will be searchable in the TileDB catalog.
- Author - The user who created and registered the UDF to the catalog.
Preview
You can see a human-readable rendering of the UDF under the Preview
tab.
Settings
In the UDF settings, you can modify the following:
- Description - Note that this is indexed and, thus, searchable in the TileDB catalog.
- License - The type of license for the UDF, especially if you are making this publicly available.
- Tags - These can be used for efficient search in the catalog.
- Mark as read-only - This is useful if you want to prevent any UDF changes by you or someone with whom you shared the UDF.
- Make public - If you wish to share the UDF with all the TileDB users. This will appear in the
Marketplace
tab in the left navigation menu. If you make a UDF public, you can easily change it back to private in the same manner. - Change cloud credentials - Credentials should be provided so that TileDB can securely access the UDF on the cloud store where it is physically stored.
- Rename UDF - Read the Rename UDF subsection below.
- Delete UDF - Read the Delete UDF subsection below.
Versioning
TileDB supports versioning for UDFs. Every time you edit a UDF, TileDB creates a new version. You can select which version to preview by selecting the button next to the UDF name, starting with Latest version - ...
. This brings up a modal on the right, which allows you to browse and select different UDF versions. Then you can preview the selected UDF version.
Copy UDF
TileDB allows you to duplicate a UDF by copying it in another physical storage location and with a different name. Select the Copy UDF
button that is at the top-right corner of the screen. In the emerging window, you can change the owner (e.g., to an organization of which you are a member), add a new physical storage path, and change the name.
Rename UDF
You can rename a UDF from the Settings
tab. This action does not alter or copy the contents of the UDF; it just registers the asset in the catalog under a different name.
You can programmatically rename a UDF as follows:
tiledb.cloud.asset.update_info("`tiledb://<account>/<previous_name>`",
="<new_name>",
name="<acn>", # Optional - The cloud credentials that access the UDF (should already exist in your account settings)
access_credentials_name )
Delete UDF
When deleting a UDF, you have two options:
- Unregister: This operation removes the UDF from the TileDB catalog, but it does not physically remove it from the object store. Since the UDF will persist on storage, you can register it again in the TileDB catalog in the future.
- Delete: This operation both unregisters and physically removes the UDF from storage. Note that this operation cannot be undone.
You can delete the UDF from the Settings
tab, which will prompt you to choose among the two operations above.
You can also programmatically delete or unregister a UDF as follows:
# Unregister a UDF
="tiledb://<account>/<udf_name>")
tiledb.cloud.asset.deregister(uri
# Delete a UDF
="tiledb://<account>/<udf_name>") tiledb.cloud.asset.delete(uri