Add Median Function to MySQL
This article describes how to add median UDF to MySQL to enable median aggregation for Datasets and Metrics. Whether MySQL is deployed in a container or on a remote database server, the median UDF package must be manually added to the MySQL database.
PREREQUISITES:
- Direct access to the MySQL server with version 8.0.20 and above (UDFs cannot be added to MySQL-as-a-service, such as Amazon RDS)
1. Connect to MySQL Container/Instance and Download the Installation Files
- Download the installation files:
-
MI Simple Installation:
- Enter MySQL container:
docker exec -it mi_mysql_1 bash
- Download compiled artifact:
wget https://metricinsights-downloads.s3.amazonaws.com/udf_infusion.tar.gz
- Download md5sum file:
wget https://metricinsights-downloads.s3.amazonaws.com/udf_infusion.tar.gz.md5
- Enter MySQL container:
- Orchestration:
-
MI Simple Installation:
- Check the artifact file by running the following shell script:
$ md5sum --check udf_infusion.tar.gz.md5
udf_infusion.tar.gz: OK
- If MySQL database is deployed in a container:
- Exit the MySQL container and access the web container:
$ exit
$ mi-console
2. Determine MySQL Plugin Directory
If MySQL is deployed in a container:
- Run the following next commands, replacing
${MYSQL_ROOT_PASSWORD}
with your MySQL root user password:$ mysql -uroot -p${MYSQL_ROOT_PASSWORD}
If MySQL is deployed in a standalone server, ignore the $ mysql -uroot -p${MYSQL_ROOT_PASSWORD}
command.
$ mysql -uroot -p${MYSQL_ROOT_PASSWORD}
mysql> SHOW VARIABLES WHERE Variable_Name = "plugin_dir";
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| plugin_dir | /usr/lib/mysql/plugin/ |
+---------------+------------------------+
1 row in set (0.00 sec)
mysql> exit
Click to copy
3. Install Tar File
$ tar -zxf udf_infusion.tar.gz -C /usr/lib/mysql/plugin/ ./udf_infusion.so ./udf_infusion.la
$ ls -l /usr/lib/mysql/plugin/udf*
-rwxr-xr-x 1 root root 953 Nov 1 2020 /usr/lib/mysql/plugin/udf_infusion.la
-rwxr-xr-x 1 root root 230720 Nov 1 2020 /usr/lib/mysql/plugin/udf_infusion.so
$ tar -zxf udf_infusion.tar.gz -C ./ ./load.sql
$ mysql -uroot -p${MYSQL_ROOT_PASSWORD} < load.sql
Click to copy
4. Test the Added Function
Check whether the function has been added successfully to your MySQL database by calling it as follows:
$ mysql -uroot -p${MYSQL_ROOT_PASSWORD}
mysql> use mysql;
mysql> SELECT median(User) from user;
+--------------+
| median(User) |
+--------------+
| 0 |
+--------------+
1 row in set, 6 warnings (0.00 sec)
Click to copy