Dataflow chain

https://github.com/sqlparser/sqlflow_public/blob/master/doc/get-started/dataflow-chain.md

If the resultset of a subquery or CTE is used in the from clause of the upper-level statement, then the impact of the lower level resultset will be transferred to the upper-level.

WITH
  cteReports (EmpID, FirstName, LastName, MgrID, EmpLevel)
  AS
  (
    SELECT EmployeeID, FirstName, LastName, ManagerID, EmpLevel  -- resultset1
    FROM Employees
    WHERE ManagerID IS NULL
  )
SELECT
  count(EmpID), sum(EmpLevel)  -- resultset2
FROM cteReports 

In the CTE, there is an impact relation:

Employees.ManagerID -> indirect -> RS-1.RelationRows

Since cteReports is used in the from clause of the upper-level statement, then the impact will carry on like this:

Employees.ManagerID -> indirect -> RS-1.RelationRows -> indirect -> CTE-CTEREPORTS.RelataionRows

If we ignore the intermediate resultset, the end to end dataflow is :

Employees.ManagerID -> indirect -> RS-2.COUNT(EmpID)
Employees.ManagerID -> indirect -> RS-2.SUM(EmpLevel)

diagram

Last updated