私はImpalaで作業していますが、ImpalaとSQLの両方でかなり経験はありませんが、次のような形になります。Impalaの制約のためにピボットを使用することはできませんが、これは通常の状況下では希望の結果が得られません。どのように私はこのような何かをやって行くのです、だから、インパラのSQLビルドの列は行データに基づいており、追加の行データを持つ列にデータを入力します
+-----------+---------------------+-------+
| dayname | utc_hour | some |
+-----------+---------------------+-------+
| Wednesday | 2017-11-08 00:00:00 | 20 |
| Wednesday | 2017-11-08 01:00:00 | 11 |
| Wednesday | 2017-11-08 09:00:00 | 1 |
| Wednesday | 2017-11-08 11:00:00 | 40 |
| Wednesday | 2017-11-08 12:00:00 | 0 |
| Wednesday | 2017-11-08 13:00:00 | 6 |
| Wednesday | 2017-11-08 14:00:00 | 0 |
| Wednesday | 2017-11-08 16:00:00 | 2 |
| Wednesday | 2017-11-08 17:00:00 | 10 |
| Wednesday | 2017-11-08 19:00:00 | 5 |
| Thursday | 2017-11-09 07:00:00 | 1 |
| Thursday | 2017-11-09 12:00:00 | 0 |
| Thursday | 2017-11-09 13:00:00 | 0 |
| Thursday | 2017-11-09 14:00:00 | 58 |
| Friday | 2017-11-10 09:00:00 | 0 |
| Friday | 2017-11-10 10:00:00 | 0 |
| Friday | 2017-11-10 16:00:00 | 0 |
+-----------+---------------------+-------+
:
select
dayname(date) as dayname,
utc_hour,
sum(case when (`type` IN ('Awesome')) then 1 else 0 end) as some
FROM (select *, trunc(cast(floor(date/1000) as timestamp), "HH") as utc_hour
FROM COOLNESSTYPES
WHERE date >= 1510082633596 and month >= '2017-11'
) a
GROUP BY utc_hour, dayname
ORDER BY utc_hour;
と、次のデータを返します。
はこれまでのところ、私はこのようになりますSQL SELECTステートメントを持っていますか? Clouderaのコミュニティページでは、誰かが共用体の使用をお勧めしていますが、私の列を自分のutc_hour列の行の値としてどのようにラベル付けするかについてはっきりしていません。 (必要に応じて、組合の提案の詳細については、https://community.cloudera.com/t5/Interactive-Short-cycle-SQL/Transpose-columns-to-rows/td-p/49667を参照してください)
これに関する助力やアイデアは非常に高く評価されます。ありがとう!
これは私が必要としていたものです。私は最初のSQL(またはそれから派生したもの)を共通のテーブル式としてセットアップし、上で述べたことを実装することができました。 唯一の他の問題は、EXTRACTの代わりにImpalaで、同じ結果を得るために、EXTRACTではなくdate_part( 'day'、utc_hour)です。再度、感謝します! – hbomb
フィードバックをいただきありがとうございます。私はdate_part()構文がより顕著になるように質問に追加します。 –
dayofweek(utc_hour)は、おそらく、Impalaの日付時刻機能ライブラリFWIWより優れた関数オプションです – hbomb