Concepts → Alias
About an Alias
An alias references a selected physical schema object. The selected object can exist within the same physical schema or another schema within the same tenant. An alias must have a unique name.
An alias immediately reflects any changes to and inherits the following properties from the selected table:
- Columns
- Runtime Security Filters
- Joins*
- Load Filter*
The Schema Designer, Schema Diagram View, Table Editor, Join Editor, and Query Plan Viewer do not show implicitly inherited joins for an alias. The Table Editor does not show an inherited load filter for an alias.
It is not possible to create new columns, formula columns, runtime security filters, or load filters for an alias. It is possible to create new joins.
As a reference object, an alias only persists new join path data and not table data to shared storage. For this reason, it is not possible to perform a load for a specific alias.
Alias joins
From the selected table, an alias implicitly inherits all existing child joins and ignores all existing parent joins.
Newly created child and parent joins for an alias do not invalidate any existing child joins implicitly inherited from the selected table.
Here are the rules for alias joins:
- an alias implicitly inherits all selected table child joins
- an alias does not implicitly inherit selected table parent joins
- explicitly defined child or parent joins for an alias do not invalidate any implicitly inherited selected table child joins
The following tools display alias joins explicitly created:
- Schema Designer
- Schema Diagram Viewer
- Table Editor
- Join Editor
- Query Plan Viewer
With the Join Editor, you can explicitly create both child and parent joins for an alias. You can remove one or more joins the Table Editor.
Avoid cyclical joins with an alias table as this can generate a random query plan at runtime, causing inaccurate results.
Starting with 2023.7.0, you can view the data lineage of aliases in the Data Lineage Viewer v2 that displays a diagram with the entities referenced in the alias table (upstream lineage) and entities where the alias table is referenced (downstream lineage). Additionally, you can view the data lineage per column or formula column in the alias table.
Alias example
Often, a child table contains two foreign keys to the same parent table. For example, in the sch_Sales
schema, the tbl_Orders
table contains two foreign key columns, BillToAddressID
and ShipToAddressID
. The tbl_Address
table contains a primary key, AddressID
.
In Incorta, only one join can exist between tbl_Orders
and tbl_Address
, such as:
sch_Sales.tbl_Orders.BillToAddressID = sch_Sales.tbl_Address.AddressID
By default, the join is a left outer join where tbl_Orders
is on the left side of the join operator as the child table and tbl_Address
is on the right side of the join operator as the parent table.
Support for a second join between tbl_Orders
and tbl_Address
on the ShipToAddressID
foreign key requires an alias for the tbl_Address
table.
Using the Schema Designer, you can create a new alias for the sch_Sales
schema. In the Table Editor, you can specify the selected table, tbl_Address
, and name the alias, atbl_Address
. Then you can create a new parent join with the Join Editor such as:
sch_Sales.tbl_Orders.ShipToAddressID = sch_Sales.atbl_Address.AddressID
As a left outer join,tbl_Orders
is on the left side of the join operator as the child table and atbl_Address
is on the right side of the join operator as the parent alias.