Concepts → Alias

About an Alias

An alias references a selected physical schema table. The selected table 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*
Note

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.

Warning

Avoid cyclical joins with an alias table as this can generate a random query plan at runtime, causing inaccurate results.

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.

To learn more about developing schemas with tables and aliases, please refer to Guides → Develop.