在 Hive 中,使用 `LATERAL VIEW` 可以實現行轉列的操作,通常與 `explode` 函式結合使用。下面是一個示例,展示如何透過 `LATERAL VIEW` 將行轉為列。 ### 示例場景 假設我們有一個名為 `movies` 的表,包含影視作品及其型別,型別是以逗號分隔的字串。 ### 1. 建立基礎表 首先,我們建立一個名為 `movies` 的基礎表: ```sql CREATE TABLE movies ( title STRING, genres STRING ); ``` ### 2. 插入資料 接下來,向 `movies` 表中插入一些示例資料: ```sql INSERT INTO TABLE movies VALUES ('《疑犯追蹤》', '懸疑, 動作, 科幻, 劇情'), ('《Lie to Me》', '懸疑, 警匪, 動作, 心理, 劇情'), ('《戰狼2》', '戰爭, 動作, 災難'); ``` ### 3. 使用 `LATERAL VIEW` 進行行轉列 現在,我們可以使用 `LATERAL VIEW` 和 `explode` 函式將 `genres` 列中的型別行轉為列。以下是一個查詢示例: ```sql SELECT title, genre FROM movies LATERAL VIEW explode(split(genres, ', ')) exploded_genres AS genre; ``` ### 4. 查詢結果 執行上述查詢後,結果將如下所示: | title | genre | |---------------|---------| | 《疑犯追蹤》 | 懸疑 | | 《疑犯追蹤》 | 動作 | | 《疑犯追蹤》 | 科幻 | | 《疑犯追蹤》 | 劇情 | | 《Lie to Me》 | 懸疑 | | 《Lie to Me》 | 警匪 | | 《Lie to Me》 | 動作 | | 《Lie to Me》 | 心理 | | 《Lie to Me》 | 劇情 | | 《戰狼2》 | 戰爭 | | 《戰狼2》 | 動作 | | 《戰狼2》 | 災難 | ### 總結 - 使用 `LATERAL VIEW` 和 `explode` 函式可以將以逗號分隔的字串轉為多行。 - 透過 `split` 函式將字串分割為陣列,然後使用 `explode` 將陣列中的每個元素轉為單獨的行。 如果你有其他問題或需要更多示例,請告訴我!