複数列のピボットには 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>
概要:
最初の 2 つの列 (行名列の前の属性列) の順序を逆にすることで、tablefunc は複数の変数を効果的にピボットでき、完全なピボット出力を提供します。このアプローチは、データ セットに行名ごとに異なる数の属性値が含まれている場合にうまく機能します。
以上がデータ損失を避けるために、Tablefunc は複数の変数のピボット処理をどのように処理できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。