使用tablefunc進行多列透視
問題:
如何利用tablefunc對多個變數進行資料透視,而不僅僅是使用行名?
背景:
包含數十億行的資料集需要透視成寬格式,以便有效比較對眾多實體進行的多次測量。這些測量結果差異很大,需要頻繁地將資料透視成寬格式。
問題:
標準的tablefunc方法假設屬性列(又稱「額外」欄位)對於每個行名都是一致的。如果在一個行名內屬性列存在多個值,則只報告第一個值,導致透視輸出中的資料不完整。
解:
為了克服這個限制,需要重新排序查詢列,將屬性列放在行名列之前。這確保了屬性值從每個行名分區的首行填充,從而捕獲該行名的所有不同屬性值。
代碼:
<code class="language-sql">SELECT * FROM crosstab( 'SELECT entity, timeof, status, ct FROM t4 ORDER BY entity' , 'VALUES (1), (0)' ) AS ct ( "Attribute" character , "Section" timestamp , "status_1" int , "status_0" int );</code>
總結:
透過反轉前兩列的順序(屬性列在行名列之前),tablefunc可以有效地對多個變數進行資料透視,提供完整的透視輸出。這種方法適用於資料集包含每個行名不同數量的屬性值的情況。
以上是Tablefunc 如何處理多變量旋轉以避免資料遺失?的詳細內容。更多資訊請關注PHP中文網其他相關文章!