Instead of creating and populating the BOOK_HIERARCHY table directly, you can create a BOOK_PARENT_CHILD table to store the parent-child relationships.
Column Name
Type
Not Null
Cube Field
Description
NAME
STRING
Y
Child in the parent-child relationship.
PARENT
STRING
Parent in the parent-child relationship. Null means the child is a root node.
DATE
DATE
Y
Timestamp (at close of business) for the data.
With this table and the following SQL script, you can create a series of intermediate views to populate the multiple levels of the BOOK_HIERARCHY table:
Create BOOK_HIERARCHY View with SQL Script
/*------------------------------------------ Create BOOK_HIERARCHY View 1. Create intermediate views (to populate each level of the BOOK_HIERARCHY) 2. Join all intermediate views together------------------------------------------*/CREATE OR REPLACE VIEW INTERMEDIATE_BOOK_HIERARCHY_1 ASSELECT BOOK_PARENT_CHILD.NAME AS HIERARCHY_LEVEL1, NULL AS HIERARCHY_LEVEL2, NULL AS HIERARCHY_LEVEL3, NULL AS HIERARCHY_LEVEL4, NULL AS HIERARCHY_LEVEL5, NULL AS HIERARCHY_LEVEL6, NULL AS HIERARCHY_LEVEL7, NULL AS HIERARCHY_LEVEL8, NULL AS HIERARCHY_LEVEL9, NULL AS HIERARCHY_LEVEL10, NULL AS HIERARCHY_LEVEL11, NULL AS HIERARCHY_LEVEL12, NULL AS HIERARCHY_LEVEL13, NULL AS HIERARCHY_LEVEL14, NULL AS HIERARCHY_LEVEL15, BOOK_PARENT_CHILD.NAME AS BOOK, BOOK_PARENT_CHILD.DATE AS AS_OF_DATEFrom BOOK_PARENT_CHILDWHERE BOOK_PARENT_CHILD.PARENT IS NULL;CREATE OR REPLACE VIEW INTERMEDIATE_BOOK_HIERARCHY_2 ASSELECT INTERMEDIATE_BOOK_HIERARCHY_1.HIERARCHY_LEVEL1 AS HIERARCHY_LEVEL1, BOOK_PARENT_CHILD.NAME AS HIERARCHY_LEVEL2, NULL AS HIERARCHY_LEVEL3, NULL AS HIERARCHY_LEVEL4, NULL AS HIERARCHY_LEVEL5, NULL AS HIERARCHY_LEVEL6, NULL AS HIERARCHY_LEVEL7, NULL AS HIERARCHY_LEVEL8, NULL AS HIERARCHY_LEVEL9, NULL AS HIERARCHY_LEVEL10, NULL AS HIERARCHY_LEVEL11, NULL AS HIERARCHY_LEVEL12, NULL AS HIERARCHY_LEVEL13, NULL AS HIERARCHY_LEVEL14, NULL AS HIERARCHY_LEVEL15, BOOK_PARENT_CHILD.NAME AS BOOK, BOOK_PARENT_CHILD.DATE AS AS_OF_DATEFrom INTERMEDIATE_BOOK_HIERARCHY_1JOIN BOOK_PARENT_CHILD ON (BOOK_PARENT_CHILD.PARENT = INTERMEDIATE_BOOK_HIERARCHY_1.HIERARCHY_LEVEL1) AND (BOOK_PARENT_CHILD.DATE = INTERMEDIATE_BOOK_HIERARCHY_1.AS_OF_DATE);CREATE OR REPLACE VIEW INTERMEDIATE_BOOK_HIERARCHY_3 ASSELECT INTERMEDIATE_BOOK_HIERARCHY_2.HIERARCHY_LEVEL1 AS HIERARCHY_LEVEL1, INTERMEDIATE_BOOK_HIERARCHY_2.HIERARCHY_LEVEL2 AS HIERARCHY_LEVEL2, BOOK_PARENT_CHILD.NAME AS HIERARCHY_LEVEL3, NULL AS HIERARCHY_LEVEL4, NULL AS HIERARCHY_LEVEL5, NULL AS HIERARCHY_LEVEL6, NULL AS HIERARCHY_LEVEL7, NULL AS HIERARCHY_LEVEL8, NULL AS HIERARCHY_LEVEL9, NULL AS HIERARCHY_LEVEL10, NULL AS HIERARCHY_LEVEL11, NULL AS HIERARCHY_LEVEL12, NULL AS HIERARCHY_LEVEL13, NULL AS HIERARCHY_LEVEL14, NULL AS HIERARCHY_LEVEL15, BOOK_PARENT_CHILD.NAME AS BOOK, BOOK_PARENT_CHILD.DATE AS AS_OF_DATEFrom INTERMEDIATE_BOOK_HIERARCHY_2JOIN BOOK_PARENT_CHILD ON (BOOK_PARENT_CHILD.PARENT = INTERMEDIATE_BOOK_HIERARCHY_2.HIERARCHY_LEVEL2) AND (BOOK_PARENT_CHILD.DATE = INTERMEDIATE_BOOK_HIERARCHY_2.AS_OF_DATE);CREATE OR REPLACE VIEW INTERMEDIATE_BOOK_HIERARCHY_4 ASSELECT INTERMEDIATE_BOOK_HIERARCHY_3.HIERARCHY_LEVEL1 AS HIERARCHY_LEVEL1, INTERMEDIATE_BOOK_HIERARCHY_3.HIERARCHY_LEVEL2 AS HIERARCHY_LEVEL2, INTERMEDIATE_BOOK_HIERARCHY_3.HIERARCHY_LEVEL3 AS HIERARCHY_LEVEL3, BOOK_PARENT_CHILD.NAME AS HIERARCHY_LEVEL4, NULL AS HIERARCHY_LEVEL5, NULL AS HIERARCHY_LEVEL6, NULL AS HIERARCHY_LEVEL7, NULL AS HIERARCHY_LEVEL8, NULL AS HIERARCHY_LEVEL9, NULL AS HIERARCHY_LEVEL10, NULL AS HIERARCHY_LEVEL11, NULL AS HIERARCHY_LEVEL12, NULL AS HIERARCHY_LEVEL13, NULL AS HIERARCHY_LEVEL14, NULL AS HIERARCHY_LEVEL15, BOOK_PARENT_CHILD.NAME AS BOOK, BOOK_PARENT_CHILD.DATE AS AS_OF_DATEFrom INTERMEDIATE_BOOK_HIERARCHY_3JOIN BOOK_PARENT_CHILD ON (BOOK_PARENT_CHILD.PARENT = INTERMEDIATE_BOOK_HIERARCHY_3.HIERARCHY_LEVEL3) AND (BOOK_PARENT_CHILD.DATE = INTERMEDIATE_BOOK_HIERARCHY_3.AS_OF_DATE);CREATE OR REPLACE VIEW INTERMEDIATE_BOOK_HIERARCHY_5 ASSELECT INTERMEDIATE_BOOK_HIERARCHY_4.HIERARCHY_LEVEL1 AS HIERARCHY_LEVEL1, INTERMEDIATE_BOOK_HIERARCHY_4.HIERARCHY_LEVEL2 AS HIERARCHY_LEVEL2, INTERMEDIATE_BOOK_HIERARCHY_4.HIERARCHY_LEVEL3 AS HIERARCHY_LEVEL3, INTERMEDIATE_BOOK_HIERARCHY_4.HIERARCHY_LEVEL4 AS HIERARCHY_LEVEL4, BOOK_PARENT_CHILD.NAME AS HIERARCHY_LEVEL5, NULL AS HIERARCHY_LEVEL6, NULL AS HIERARCHY_LEVEL7, NULL AS HIERARCHY_LEVEL8, NULL AS HIERARCHY_LEVEL9, NULL AS HIERARCHY_LEVEL10, NULL AS HIERARCHY_LEVEL11, NULL AS HIERARCHY_LEVEL12, NULL AS HIERARCHY_LEVEL13, NULL AS HIERARCHY_LEVEL14, NULL AS HIERARCHY_LEVEL15, BOOK_PARENT_CHILD.NAME AS BOOK, BOOK_PARENT_CHILD.DATE AS AS_OF_DATEFrom INTERMEDIATE_BOOK_HIERARCHY_4JOIN BOOK_PARENT_CHILD ON (BOOK_PARENT_CHILD.PARENT = INTERMEDIATE_BOOK_HIERARCHY_4.HIERARCHY_LEVEL4) AND (BOOK_PARENT_CHILD.DATE = INTERMEDIATE_BOOK_HIERARCHY_4.AS_OF_DATE);CREATE OR REPLACE VIEW INTERMEDIATE_BOOK_HIERARCHY_6 ASSELECT INTERMEDIATE_BOOK_HIERARCHY_5.HIERARCHY_LEVEL1 AS HIERARCHY_LEVEL1, INTERMEDIATE_BOOK_HIERARCHY_5.HIERARCHY_LEVEL2 AS HIERARCHY_LEVEL2, INTERMEDIATE_BOOK_HIERARCHY_5.HIERARCHY_LEVEL3 AS HIERARCHY_LEVEL3, INTERMEDIATE_BOOK_HIERARCHY_5.HIERARCHY_LEVEL4 AS HIERARCHY_LEVEL4, INTERMEDIATE_BOOK_HIERARCHY_5.HIERARCHY_LEVEL5 AS HIERARCHY_LEVEL5, BOOK_PARENT_CHILD.NAME AS HIERARCHY_LEVEL6, NULL AS HIERARCHY_LEVEL7, NULL AS HIERARCHY_LEVEL8, NULL AS HIERARCHY_LEVEL9, NULL AS HIERARCHY_LEVEL10, NULL AS HIERARCHY_LEVEL11, NULL AS HIERARCHY_LEVEL12, NULL AS HIERARCHY_LEVEL13, NULL AS HIERARCHY_LEVEL14, NULL AS HIERARCHY_LEVEL15, BOOK_PARENT_CHILD.NAME AS BOOK, BOOK_PARENT_CHILD.DATE AS AS_OF_DATEFrom INTERMEDIATE_BOOK_HIERARCHY_5JOIN BOOK_PARENT_CHILD ON (BOOK_PARENT_CHILD.PARENT = INTERMEDIATE_BOOK_HIERARCHY_5.HIERARCHY_LEVEL5) AND (BOOK_PARENT_CHILD.DATE = INTERMEDIATE_BOOK_HIERARCHY_5.AS_OF_DATE);CREATE OR REPLACE VIEW INTERMEDIATE_BOOK_HIERARCHY_7 ASSELECT INTERMEDIATE_BOOK_HIERARCHY_6.HIERARCHY_LEVEL1 AS HIERARCHY_LEVEL1, INTERMEDIATE_BOOK_HIERARCHY_6.HIERARCHY_LEVEL2 AS HIERARCHY_LEVEL2, INTERMEDIATE_BOOK_HIERARCHY_6.HIERARCHY_LEVEL3 AS HIERARCHY_LEVEL3, INTERMEDIATE_BOOK_HIERARCHY_6.HIERARCHY_LEVEL4 AS HIERARCHY_LEVEL4, INTERMEDIATE_BOOK_HIERARCHY_6.HIERARCHY_LEVEL5 AS HIERARCHY_LEVEL5, INTERMEDIATE_BOOK_HIERARCHY_6.HIERARCHY_LEVEL6 AS HIERARCHY_LEVEL6, BOOK_PARENT_CHILD.NAME AS HIERARCHY_LEVEL7, NULL AS HIERARCHY_LEVEL8, NULL AS HIERARCHY_LEVEL9, NULL AS HIERARCHY_LEVEL10, NULL AS HIERARCHY_LEVEL11, NULL AS HIERARCHY_LEVEL12, NULL AS HIERARCHY_LEVEL13, NULL AS HIERARCHY_LEVEL14, NULL AS HIERARCHY_LEVEL15, BOOK_PARENT_CHILD.NAME AS BOOK, BOOK_PARENT_CHILD.DATE AS AS_OF_DATEFrom INTERMEDIATE_BOOK_HIERARCHY_6JOIN BOOK_PARENT_CHILD ON (BOOK_PARENT_CHILD.PARENT = INTERMEDIATE_BOOK_HIERARCHY_6.HIERARCHY_LEVEL6) AND (BOOK_PARENT_CHILD.DATE = INTERMEDIATE_BOOK_HIERARCHY_6.AS_OF_DATE);CREATE OR REPLACE VIEW INTERMEDIATE_BOOK_HIERARCHY_8 ASSELECT INTERMEDIATE_BOOK_HIERARCHY_7.HIERARCHY_LEVEL1 AS HIERARCHY_LEVEL1, INTERMEDIATE_BOOK_HIERARCHY_7.HIERARCHY_LEVEL2 AS HIERARCHY_LEVEL2, INTERMEDIATE_BOOK_HIERARCHY_7.HIERARCHY_LEVEL3 AS HIERARCHY_LEVEL3, INTERMEDIATE_BOOK_HIERARCHY_7.HIERARCHY_LEVEL4 AS HIERARCHY_LEVEL4, INTERMEDIATE_BOOK_HIERARCHY_7.HIERARCHY_LEVEL5 AS HIERARCHY_LEVEL5, INTERMEDIATE_BOOK_HIERARCHY_7.HIERARCHY_LEVEL6 AS HIERARCHY_LEVEL6, INTERMEDIATE_BOOK_HIERARCHY_7.HIERARCHY_LEVEL7 AS HIERARCHY_LEVEL7, BOOK_PARENT_CHILD.NAME AS HIERARCHY_LEVEL8, NULL AS HIERARCHY_LEVEL9, NULL AS HIERARCHY_LEVEL10, NULL AS HIERARCHY_LEVEL11, NULL AS HIERARCHY_LEVEL12, NULL AS HIERARCHY_LEVEL13, NULL AS HIERARCHY_LEVEL14, NULL AS HIERARCHY_LEVEL15, BOOK_PARENT_CHILD.NAME AS BOOK, BOOK_PARENT_CHILD.DATE AS AS_OF_DATEFrom INTERMEDIATE_BOOK_HIERARCHY_7JOIN BOOK_PARENT_CHILD ON (BOOK_PARENT_CHILD.PARENT = INTERMEDIATE_BOOK_HIERARCHY_7.HIERARCHY_LEVEL7) AND (BOOK_PARENT_CHILD.DATE = INTERMEDIATE_BOOK_HIERARCHY_7.AS_OF_DATE);CREATE OR REPLACE VIEW INTERMEDIATE_BOOK_HIERARCHY_9 ASSELECT INTERMEDIATE_BOOK_HIERARCHY_8.HIERARCHY_LEVEL1 AS HIERARCHY_LEVEL1, INTERMEDIATE_BOOK_HIERARCHY_8.HIERARCHY_LEVEL2 AS HIERARCHY_LEVEL2, INTERMEDIATE_BOOK_HIERARCHY_8.HIERARCHY_LEVEL3 AS HIERARCHY_LEVEL3, INTERMEDIATE_BOOK_HIERARCHY_8.HIERARCHY_LEVEL4 AS HIERARCHY_LEVEL4, INTERMEDIATE_BOOK_HIERARCHY_8.HIERARCHY_LEVEL5 AS HIERARCHY_LEVEL5, INTERMEDIATE_BOOK_HIERARCHY_8.HIERARCHY_LEVEL6 AS HIERARCHY_LEVEL6, INTERMEDIATE_BOOK_HIERARCHY_8.HIERARCHY_LEVEL7 AS HIERARCHY_LEVEL7, INTERMEDIATE_BOOK_HIERARCHY_8.HIERARCHY_LEVEL8 AS HIERARCHY_LEVEL8, BOOK_PARENT_CHILD.NAME AS HIERARCHY_LEVEL9, NULL AS HIERARCHY_LEVEL10, NULL AS HIERARCHY_LEVEL11, NULL AS HIERARCHY_LEVEL12, NULL AS HIERARCHY_LEVEL13, NULL AS HIERARCHY_LEVEL14, NULL AS HIERARCHY_LEVEL15, BOOK_PARENT_CHILD.NAME AS BOOK, BOOK_PARENT_CHILD.DATE AS AS_OF_DATEFrom INTERMEDIATE_BOOK_HIERARCHY_8JOIN BOOK_PARENT_CHILD ON (BOOK_PARENT_CHILD.PARENT = INTERMEDIATE_BOOK_HIERARCHY_8.HIERARCHY_LEVEL8) AND (BOOK_PARENT_CHILD.DATE = INTERMEDIATE_BOOK_HIERARCHY_8.AS_OF_DATE);CREATE OR REPLACE VIEW INTERMEDIATE_BOOK_HIERARCHY_10 ASSELECT INTERMEDIATE_BOOK_HIERARCHY_9.HIERARCHY_LEVEL1 AS HIERARCHY_LEVEL1, INTERMEDIATE_BOOK_HIERARCHY_9.HIERARCHY_LEVEL2 AS HIERARCHY_LEVEL2, INTERMEDIATE_BOOK_HIERARCHY_9.HIERARCHY_LEVEL3 AS HIERARCHY_LEVEL3, INTERMEDIATE_BOOK_HIERARCHY_9.HIERARCHY_LEVEL4 AS HIERARCHY_LEVEL4, INTERMEDIATE_BOOK_HIERARCHY_9.HIERARCHY_LEVEL5 AS HIERARCHY_LEVEL5, INTERMEDIATE_BOOK_HIERARCHY_9.HIERARCHY_LEVEL6 AS HIERARCHY_LEVEL6, INTERMEDIATE_BOOK_HIERARCHY_9.HIERARCHY_LEVEL7 AS HIERARCHY_LEVEL7, INTERMEDIATE_BOOK_HIERARCHY_9.HIERARCHY_LEVEL8 AS HIERARCHY_LEVEL8, INTERMEDIATE_BOOK_HIERARCHY_9.HIERARCHY_LEVEL9 AS HIERARCHY_LEVEL9, BOOK_PARENT_CHILD.NAME AS HIERARCHY_LEVEL10, NULL AS HIERARCHY_LEVEL11, NULL AS HIERARCHY_LEVEL12, NULL AS HIERARCHY_LEVEL13, NULL AS HIERARCHY_LEVEL14, NULL AS HIERARCHY_LEVEL15, BOOK_PARENT_CHILD.NAME AS BOOK, BOOK_PARENT_CHILD.DATE AS AS_OF_DATEFrom INTERMEDIATE_BOOK_HIERARCHY_9JOIN BOOK_PARENT_CHILD ON (BOOK_PARENT_CHILD.PARENT = INTERMEDIATE_BOOK_HIERARCHY_9.HIERARCHY_LEVEL9) AND (BOOK_PARENT_CHILD.DATE = INTERMEDIATE_BOOK_HIERARCHY_9.AS_OF_DATE);CREATE OR REPLACE VIEW INTERMEDIATE_BOOK_HIERARCHY_11 ASSELECT INTERMEDIATE_BOOK_HIERARCHY_10.HIERARCHY_LEVEL1 AS HIERARCHY_LEVEL1, INTERMEDIATE_BOOK_HIERARCHY_10.HIERARCHY_LEVEL2 AS HIERARCHY_LEVEL2, INTERMEDIATE_BOOK_HIERARCHY_10.HIERARCHY_LEVEL3 AS HIERARCHY_LEVEL3, INTERMEDIATE_BOOK_HIERARCHY_10.HIERARCHY_LEVEL4 AS HIERARCHY_LEVEL4, INTERMEDIATE_BOOK_HIERARCHY_10.HIERARCHY_LEVEL5 AS HIERARCHY_LEVEL5, INTERMEDIATE_BOOK_HIERARCHY_10.HIERARCHY_LEVEL6 AS HIERARCHY_LEVEL6, INTERMEDIATE_BOOK_HIERARCHY_10.HIERARCHY_LEVEL7 AS HIERARCHY_LEVEL7, INTERMEDIATE_BOOK_HIERARCHY_10.HIERARCHY_LEVEL8 AS HIERARCHY_LEVEL8, INTERMEDIATE_BOOK_HIERARCHY_10.HIERARCHY_LEVEL9 AS HIERARCHY_LEVEL9, INTERMEDIATE_BOOK_HIERARCHY_10.HIERARCHY_LEVEL10 AS HIERARCHY_LEVEL10, BOOK_PARENT_CHILD.NAME AS HIERARCHY_LEVEL11, NULL AS HIERARCHY_LEVEL12, NULL AS HIERARCHY_LEVEL13, NULL AS HIERARCHY_LEVEL14, NULL AS HIERARCHY_LEVEL15, BOOK_PARENT_CHILD.NAME AS BOOK, BOOK_PARENT_CHILD.DATE AS AS_OF_DATEFrom INTERMEDIATE_BOOK_HIERARCHY_10JOIN BOOK_PARENT_CHILD ON (BOOK_PARENT_CHILD.PARENT = INTERMEDIATE_BOOK_HIERARCHY_10.HIERARCHY_LEVEL10) AND (BOOK_PARENT_CHILD.DATE = INTERMEDIATE_BOOK_HIERARCHY_10.AS_OF_DATE);CREATE OR REPLACE VIEW INTERMEDIATE_BOOK_HIERARCHY_12 ASSELECT INTERMEDIATE_BOOK_HIERARCHY_11.HIERARCHY_LEVEL1 AS HIERARCHY_LEVEL1, INTERMEDIATE_BOOK_HIERARCHY_11.HIERARCHY_LEVEL2 AS HIERARCHY_LEVEL2, INTERMEDIATE_BOOK_HIERARCHY_11.HIERARCHY_LEVEL3 AS HIERARCHY_LEVEL3, INTERMEDIATE_BOOK_HIERARCHY_11.HIERARCHY_LEVEL4 AS HIERARCHY_LEVEL4, INTERMEDIATE_BOOK_HIERARCHY_11.HIERARCHY_LEVEL5 AS HIERARCHY_LEVEL5, INTERMEDIATE_BOOK_HIERARCHY_11.HIERARCHY_LEVEL6 AS HIERARCHY_LEVEL6, INTERMEDIATE_BOOK_HIERARCHY_11.HIERARCHY_LEVEL7 AS HIERARCHY_LEVEL7, INTERMEDIATE_BOOK_HIERARCHY_11.HIERARCHY_LEVEL8 AS HIERARCHY_LEVEL8, INTERMEDIATE_BOOK_HIERARCHY_11.HIERARCHY_LEVEL9 AS HIERARCHY_LEVEL9, INTERMEDIATE_BOOK_HIERARCHY_11.HIERARCHY_LEVEL10 AS HIERARCHY_LEVEL10, INTERMEDIATE_BOOK_HIERARCHY_11.HIERARCHY_LEVEL11 AS HIERARCHY_LEVEL11, BOOK_PARENT_CHILD.NAME AS HIERARCHY_LEVEL12, NULL AS HIERARCHY_LEVEL13, NULL AS HIERARCHY_LEVEL14, NULL AS HIERARCHY_LEVEL15, BOOK_PARENT_CHILD.NAME AS BOOK, BOOK_PARENT_CHILD.DATE AS AS_OF_DATEFrom INTERMEDIATE_BOOK_HIERARCHY_11JOIN BOOK_PARENT_CHILD ON (BOOK_PARENT_CHILD.PARENT = INTERMEDIATE_BOOK_HIERARCHY_11.HIERARCHY_LEVEL11) AND (BOOK_PARENT_CHILD.DATE = INTERMEDIATE_BOOK_HIERARCHY_11.AS_OF_DATE);CREATE OR REPLACE VIEW INTERMEDIATE_BOOK_HIERARCHY_13 ASSELECT INTERMEDIATE_BOOK_HIERARCHY_12.HIERARCHY_LEVEL1 AS HIERARCHY_LEVEL1, INTERMEDIATE_BOOK_HIERARCHY_12.HIERARCHY_LEVEL2 AS HIERARCHY_LEVEL2, INTERMEDIATE_BOOK_HIERARCHY_12.HIERARCHY_LEVEL3 AS HIERARCHY_LEVEL3, INTERMEDIATE_BOOK_HIERARCHY_12.HIERARCHY_LEVEL4 AS HIERARCHY_LEVEL4, INTERMEDIATE_BOOK_HIERARCHY_12.HIERARCHY_LEVEL5 AS HIERARCHY_LEVEL5, INTERMEDIATE_BOOK_HIERARCHY_12.HIERARCHY_LEVEL6 AS HIERARCHY_LEVEL6, INTERMEDIATE_BOOK_HIERARCHY_12.HIERARCHY_LEVEL7 AS HIERARCHY_LEVEL7, INTERMEDIATE_BOOK_HIERARCHY_12.HIERARCHY_LEVEL8 AS HIERARCHY_LEVEL8, INTERMEDIATE_BOOK_HIERARCHY_12.HIERARCHY_LEVEL9 AS HIERARCHY_LEVEL9, INTERMEDIATE_BOOK_HIERARCHY_12.HIERARCHY_LEVEL10 AS HIERARCHY_LEVEL10, INTERMEDIATE_BOOK_HIERARCHY_12.HIERARCHY_LEVEL11 AS HIERARCHY_LEVEL11, INTERMEDIATE_BOOK_HIERARCHY_12.HIERARCHY_LEVEL12 AS HIERARCHY_LEVEL12, BOOK_PARENT_CHILD.NAME AS HIERARCHY_LEVEL13, NULL AS HIERARCHY_LEVEL14, NULL AS HIERARCHY_LEVEL15, BOOK_PARENT_CHILD.NAME AS BOOK, BOOK_PARENT_CHILD.DATE AS AS_OF_DATEFrom INTERMEDIATE_BOOK_HIERARCHY_12JOIN BOOK_PARENT_CHILD ON (BOOK_PARENT_CHILD.PARENT = INTERMEDIATE_BOOK_HIERARCHY_12.HIERARCHY_LEVEL12) AND (BOOK_PARENT_CHILD.DATE = INTERMEDIATE_BOOK_HIERARCHY_12.AS_OF_DATE);CREATE OR REPLACE VIEW INTERMEDIATE_BOOK_HIERARCHY_14 ASSELECT INTERMEDIATE_BOOK_HIERARCHY_13.HIERARCHY_LEVEL1 AS HIERARCHY_LEVEL1, INTERMEDIATE_BOOK_HIERARCHY_13.HIERARCHY_LEVEL2 AS HIERARCHY_LEVEL2, INTERMEDIATE_BOOK_HIERARCHY_13.HIERARCHY_LEVEL3 AS HIERARCHY_LEVEL3, INTERMEDIATE_BOOK_HIERARCHY_13.HIERARCHY_LEVEL4 AS HIERARCHY_LEVEL4, INTERMEDIATE_BOOK_HIERARCHY_13.HIERARCHY_LEVEL5 AS HIERARCHY_LEVEL5, INTERMEDIATE_BOOK_HIERARCHY_13.HIERARCHY_LEVEL6 AS HIERARCHY_LEVEL6, INTERMEDIATE_BOOK_HIERARCHY_13.HIERARCHY_LEVEL7 AS HIERARCHY_LEVEL7, INTERMEDIATE_BOOK_HIERARCHY_13.HIERARCHY_LEVEL8 AS HIERARCHY_LEVEL8, INTERMEDIATE_BOOK_HIERARCHY_13.HIERARCHY_LEVEL9 AS HIERARCHY_LEVEL9, INTERMEDIATE_BOOK_HIERARCHY_13.HIERARCHY_LEVEL10 AS HIERARCHY_LEVEL10, INTERMEDIATE_BOOK_HIERARCHY_13.HIERARCHY_LEVEL11 AS HIERARCHY_LEVEL11, INTERMEDIATE_BOOK_HIERARCHY_13.HIERARCHY_LEVEL12 AS HIERARCHY_LEVEL12, INTERMEDIATE_BOOK_HIERARCHY_13.HIERARCHY_LEVEL13 AS HIERARCHY_LEVEL13, BOOK_PARENT_CHILD.NAME AS HIERARCHY_LEVEL14, NULL AS HIERARCHY_LEVEL15, BOOK_PARENT_CHILD.NAME AS BOOK, BOOK_PARENT_CHILD.DATE AS AS_OF_DATEFrom INTERMEDIATE_BOOK_HIERARCHY_13JOIN BOOK_PARENT_CHILD ON (BOOK_PARENT_CHILD.PARENT = INTERMEDIATE_BOOK_HIERARCHY_13.HIERARCHY_LEVEL13) AND (BOOK_PARENT_CHILD.DATE = INTERMEDIATE_BOOK_HIERARCHY_13.AS_OF_DATE);CREATE OR REPLACE VIEW INTERMEDIATE_BOOK_HIERARCHY_15 ASSELECT INTERMEDIATE_BOOK_HIERARCHY_14.HIERARCHY_LEVEL1 AS HIERARCHY_LEVEL1, INTERMEDIATE_BOOK_HIERARCHY_14.HIERARCHY_LEVEL2 AS HIERARCHY_LEVEL2, INTERMEDIATE_BOOK_HIERARCHY_14.HIERARCHY_LEVEL3 AS HIERARCHY_LEVEL3, INTERMEDIATE_BOOK_HIERARCHY_14.HIERARCHY_LEVEL4 AS HIERARCHY_LEVEL4, INTERMEDIATE_BOOK_HIERARCHY_14.HIERARCHY_LEVEL5 AS HIERARCHY_LEVEL5, INTERMEDIATE_BOOK_HIERARCHY_14.HIERARCHY_LEVEL6 AS HIERARCHY_LEVEL6, INTERMEDIATE_BOOK_HIERARCHY_14.HIERARCHY_LEVEL7 AS HIERARCHY_LEVEL7, INTERMEDIATE_BOOK_HIERARCHY_14.HIERARCHY_LEVEL8 AS HIERARCHY_LEVEL8, INTERMEDIATE_BOOK_HIERARCHY_14.HIERARCHY_LEVEL9 AS HIERARCHY_LEVEL9, INTERMEDIATE_BOOK_HIERARCHY_14.HIERARCHY_LEVEL10 AS HIERARCHY_LEVEL10, INTERMEDIATE_BOOK_HIERARCHY_14.HIERARCHY_LEVEL11 AS HIERARCHY_LEVEL11, INTERMEDIATE_BOOK_HIERARCHY_14.HIERARCHY_LEVEL12 AS HIERARCHY_LEVEL12, INTERMEDIATE_BOOK_HIERARCHY_14.HIERARCHY_LEVEL13 AS HIERARCHY_LEVEL13, INTERMEDIATE_BOOK_HIERARCHY_14.HIERARCHY_LEVEL14 AS HIERARCHY_LEVEL14, BOOK_PARENT_CHILD.NAME AS HIERARCHY_LEVEL15, BOOK_PARENT_CHILD.NAME AS BOOK, BOOK_PARENT_CHILD.DATE AS AS_OF_DATEFrom INTERMEDIATE_BOOK_HIERARCHY_14JOIN BOOK_PARENT_CHILD ON (BOOK_PARENT_CHILD.PARENT = INTERMEDIATE_BOOK_HIERARCHY_14.HIERARCHY_LEVEL14) AND (BOOK_PARENT_CHILD.DATE = INTERMEDIATE_BOOK_HIERARCHY_14.AS_OF_DATE);CREATE OR REPLACE VIEW BOOK_HIERARCHY_VIEW AS SELECT * FROM INTERMEDIATE_BOOK_HIERARCHY_1 UNION SELECT * FROM INTERMEDIATE_BOOK_HIERARCHY_2 UNION SELECT * FROM INTERMEDIATE_BOOK_HIERARCHY_3 UNION SELECT * FROM INTERMEDIATE_BOOK_HIERARCHY_4 UNION SELECT * FROM INTERMEDIATE_BOOK_HIERARCHY_5 UNION SELECT * FROM INTERMEDIATE_BOOK_HIERARCHY_6 UNION SELECT * FROM INTERMEDIATE_BOOK_HIERARCHY_7 UNION SELECT * FROM INTERMEDIATE_BOOK_HIERARCHY_8 UNION SELECT * FROM INTERMEDIATE_BOOK_HIERARCHY_9 UNION SELECT * FROM INTERMEDIATE_BOOK_HIERARCHY_10 UNION SELECT * FROM INTERMEDIATE_BOOK_HIERARCHY_11 UNION SELECT * FROM INTERMEDIATE_BOOK_HIERARCHY_12 UNION SELECT * FROM INTERMEDIATE_BOOK_HIERARCHY_13 UNION SELECT * FROM INTERMEDIATE_BOOK_HIERARCHY_14 UNION SELECT * FROM INTERMEDIATE_BOOK_HIERARCHY_15;-- Store the results as a View:CREATE OR REPLACE VIEW BOOK_HIERARCHY AS SELECT * FROM BOOK_HIERARCHY_VIEW;-- Alternatively, store the results as a Table. This table will need to be manually kept up to date, unlike if it were a view:CREATE OR REPLACE TABLE BOOK_HIERARCHY AS SELECT * FROM BOOK_HIERARCHY_VIEW;
Views can impact query and aggregation performance.Injecting the results of the final constructed view into a table can improve
query performance. The tradeoff is that this final table will need to be manually
kept up to date if the underlying parent-child tables are updated.