| # Aliases | |
| Apache Drill provides functionality for creating persistent aliases for its tables and storage names. | |
| These aliases can be used in queries instead of specifying the original name. | |
| This feature is enabled by default and can be disabled using `exec.enable_aliases` **system** option. | |
| Aliases can be either public or user-specific. | |
| ## Public aliases | |
| Public aliases are available for all users, but only admins can create, modify or delete them. | |
| The following command may be used to create public table alias: | |
| ```sql | |
| CREATE PUBLIC ALIAS tpch_lineitem FOR TABLE cp.`tpch/lineitem.parquet` | |
| ``` | |
| Public alias for storage can be created with the following command: | |
| ```sql | |
| CREATE PUBLIC ALIAS classpath FOR STORAGE cp | |
| ``` | |
| Existing public table aliases can be replaced with the following command: | |
| ```sql | |
| CREATE OR REPLACE PUBLIC ALIAS tpch_lineitem FOR TABLE cp.`tpch/nation.parquet` | |
| ``` | |
| It is possible to omit `TABLE` keyword: | |
| ```sql | |
| CREATE OR REPLACE PUBLIC ALIAS tpch_lineitem FOR cp.`tpch/nation.parquet` | |
| ``` | |
| The following command can be used to drop public table alias: | |
| ```sql | |
| DROP PUBLIC ALIAS tpch_lineitem FOR TABLE | |
| ``` | |
| Query to drop all public table aliases is the following: | |
| ```sql | |
| DROP ALL PUBLIC ALIASES FOR TABLE | |
| ``` | |
| ## User aliases | |
| User aliases are specific for the concrete users, so different users can have aliases with the same name | |
| but different values. | |
| User aliases have a greater priority than public aliases, but if no user alias is found, a public one will be used. | |
| The following command may be used to create user table alias: | |
| ```sql | |
| CREATE ALIAS tpch_lineitem FOR TABLE cp.`tpch/lineitem.parquet` | |
| ``` | |
| User alias for storage can be created with the following command: | |
| ```sql | |
| CREATE ALIAS classpath FOR STORAGE cp | |
| ``` | |
| Drill admins can also create aliases for other users with the following command: | |
| ```sql | |
| CREATE ALIAS tpch_lineitem FOR TABLE cp.`tpch/lineitem.parquet` AS USER 'user1' | |
| ``` | |
| _Non-admin users also can use syntax above, but only with their username._ | |
| Commands for replacing or deleting user aliases similar to the public one: | |
| ```sql | |
| CREATE OR REPLACE ALIAS tpch_lineitem FOR TABLE cp.`tpch/nation.parquet`; | |
| CREATE OR REPLACE ALIAS tpch_lineitem FOR TABLE cp.`tpch/nation.parquet` AS USER 'user1'; | |
| DROP ALIAS tpch_lineitem FOR TABLE; | |
| DROP ALIAS tpch_lineitem FOR TABLE AS USER 'user1'; | |
| DROP ALL ALIASES FOR TABLE; | |
| DROP ALL ALIASES FOR TABLE AS USER 'user1'; | |
| ``` | |
| ## System tables for storage and table aliases | |
| Table aliases can be queried using `sys.table_aliases` system table: | |
| ```sql | |
| SELECT * FROM sys.table_aliases | |
| ``` | |
| | alias<VARCHAR(OPTIONAL)> | name<VARCHAR(OPTIONAL)> | user<VARCHAR(OPTIONAL)> | isPublic<BIT(REQUIRED)> | | |
| |:-------------------------|:-----------------------------|:------------------------|:------------------------| | |
| | `t1` | `cp`.`tpch/lineitem.parquet` | null | true | | |
| | `t2` | `cp`.`tpch/lineitem.parquet` | null | true | | |
| | `t3` | `cp`.`tpch/lineitem.parquet` | testUser2 | false | | |
| | `t3` | `cp`.`tpch/nation.parquet` | testUser1 | false | | |
| Storage aliases can be obtained from `sys.storage_aliases` system table: | |
| ```sql | |
| SELECT * FROM sys.storage_aliases | |
| ``` | |
| | alias<VARCHAR(OPTIONAL)> | name<VARCHAR(OPTIONAL)> | user<VARCHAR(OPTIONAL)> | isPublic<BIT(REQUIRED)> | | |
| |:-------------------------|:------------------------|:------------------------|:------------------------| | |
| | `t1` | `dfs` | null | true | | |
| | `t2` | `cp` | null | true | | |
| | `t3` | `dfs` | testUser2 | false | | |
| | `t3` | `cp` | testUser1 | false | | |
| ## Developer notes | |
| Table and storage aliases are stored in the pre-configured persistent store using `storage_aliases` and | |
| `table_aliases` accordingly. |