透視條款

適用於:勾選“是”磚的SQL勾選“是”Databricks Runtime 12.0及以上版本。

屬性的行進行轉換table_reference通過將列組旋轉成行並折疊列出的列:第一個新列保存原始列組名(或別名)作為值,對於每個列組的值,該列後麵是一組列。

語法

table_reference透視包括零位|排除零位single_value|multi_valuevalue_columnunpivot_columncolumn_namecolumn_alias(,...table_aliassingle_valuevalue_columnunpivot_columncolumn_namecolumn_alias(,...multi_valuevalue_column(,...unpivot_columncolumn_name(,...column_alias(,...

參數

  • table_reference

    對象的主題透視操作。

  • 包括零位排除零位

    是否過濾掉行value_column.默認為排除零位

  • value_column

    非限定的列別名。這個列將保存這些值。ech的類型value_column最不常見的類型對應嗎column_name列類型。

  • unpivot_column

    非限定的列別名。這一列將保存被旋轉對象的名稱column_nameS或theircolumn_aliass.類型unpivot_column字符串

    如果是多值透視的級聯值“_”分離column_nameS,如果沒有column_alias

  • column_name

    標識將被取消旋轉的關聯列。名稱可以是限定的。所有column_nameS必須共享一個最小公共類型。

  • column_alias

    中使用的可選名稱unpivot_column

  • table_alias

    可選地為結果表指定一個標簽。如果table_alias包括column_identifierS它們的數量必須匹配生成的列的數量透視

結果

臨時表的形式如下:

  • 所有的列table_reference除了被命名為column_name年代。

  • unpivot_column類型的字符串

  • value_columnS的最小公共匹配類型column_name年代。

例子

-單列UNPIVOT > CREATE OR REPLACE TEMPORARY VIEW sales(位置,年份,q1, q2, q3, q4) AS VALUES ('Toronto', 2020, 100,80,70,150), ('San Francisco', 2020, NULL, 20,50,60), ('Toronto', 2021, 110,90,80,170), ('San Francisco', 2021, 70,120,85,105);> description SELECT * FROM sales UNPIVOT INCLUDE NULLS(銷售為季度(q1為“1 - 3月”,q2為“4 - 6月”,q3為“7 - 9月”,銷售。q4 AS ' Oct-Dec '));地點年季度銷售- ------------ --------- -----多倫多2020年1月- 3月100多倫多2020年4月- 6月80多倫多2020年7月- 9月70多倫多2020年10月- 12月150舊金山2020年1月- 3月空舊金山2020年4月- 6月20舊金山2020年7月- 9月50舊金山2020年10月- 12月60多倫多2021年1月- 3月110多倫多2021年4月- 6月90多倫多2021年7月- 9月80多倫多2021年10月- 12月170舊金山2021年1月- 3月70舊金山2021年4月- 6月120舊金山2021年7月- 9月85舊金山2021年10月- 12月105——這相當於:> SELECT location, year, inline(arrays_zip(array('Jan-Mar', ' april - jun ', ' july - sep ', 'Oct-Dec'), array(q1, q2, q3, q4)) AS(季度,銷售)FROM sales;- >創建或替換臨時上多列透視視圖oncall(一周,區域,name1、email1 phone1, name2, email2, phone2)作為值(2022,“前端”,“家”,“fred@alwaysup.org”,15551234567,“屁股”,“fanny@lwaysup.org”,15552345678),(2022年,1,“後端”,“鮑裏斯”,“boris@alwaysup.org”,15553456789,“潮”,“boomer@lwaysup.org”,15554567890),(2022年2“前端”、“佛朗基”,“frank@lwaysup.org”,15555678901,“鰭”,“fin@alwaysup.org”,15556789012),(2022年2'backend', 'Bonny', 'bonny@alwaysup.org', 15557890123, 'Bea', 'bea@alwaysup.org', 15558901234);SELECT * FROM oncall UNPIVOT ((name, email, phone) FOR priority IN ((name1, email1, phone1) AS primary, (name2, email2, phone2) AS secondary);年周區域優先級名稱電子郵件電話---------------- ---------------- ------------------ ----------- 2022 1前端primary Freddy fred@alwaysup.org 15551234567 2022 1前端secondary Fanny fanny@lwaysup.org 15552345678 2022 1後端primary Boris boris@alwaysup.org 15553456789 2022 1後端secondary Boomer boomer@lwaysup.org 15554567890 2022 2前端primary frank frank@lwaysup.org 15555678901 2022 2前端secondary Fin fin@alwaysup.org 15556789012 2022 2後端primaryBonny bonny@alwaysup.org 15557890123 2022 2後端次要Bea bea@alwaysup.org 15558901234——這相當於:> SELECT年,周,區域,內聯(arrays_zip(數組('primary', 'secondary'),數組(name1, name2),數組(email1, email2),數組(phone1, phone2)) AS(優先級,名稱,電子郵件,電話)FROM oncall;