2016-03-29 6 views
0

私は視覚化として棒グラフを使用して、複数のアプリケーションの1つが各日付で実行された回数を示したいと思います(簡単にするため、たとえば、3月15日に、ユーザーがExcelを一度開き、Wordを2回開くと、Wordの場合は2の高さが表示され、Excelの場合は1の高さで積み重ねられます)。日時計チャート:列ではなく行としてのデータ

ビジュアライゼーションでは1年間のスタックデータ(365バー)が表示されます。スタックされた各バーは、各プログラムで異なる色を使用します。 20のプログラムがあります。

これを行う伝統的な方法は、365行と20列を作成する外部結合を使用することです(Word(Wordの場合) 、Excelなど)を各列の整数値で置き換えます。この手法はうまくいきますが、データベース(SQLの密度はもちろんですが)には非常に集中しています。誰かがこの問題を処理する時系列グラフ作成ツールを知っているかどうかは疑問でした。 これはデータのピボットの問題です。データを行で抽出し、チャート製品が棒を組み立てるようにします。データからData Series名を読み込み、新しい値が出現するたびに新しいData Seriesを作成する必要があります。私は実際に可能プログラムの数千を持っているが、各チャートは、任意の20以上

チャート製品は次のように動作するはず描写する必要はほとんどありません。その後、 がMinDateプロパティ= 20150101、maxDateの= 20151231、間隔=デイ と私はスパークとスカラと、C3を使用してい

20150315 "Word" 2 
20150315 "Excel" 1 
20150316 "Powerpoint" 1 
20150316 "Word" 1 

:データあるいは

20150315 "Word" 1 
20150315 "Word" 1 
20150315 "Excel" 1 
20150316 "Powerpoint" 1 
20150316 "Word" 1 

あり、各列は、プログラム1日当たりの合計とすることができます。私は任意のjavascriptライブラリを使用することができます。

答えて

0

あなたが求めているのは、データをワイドからロングの形式に変更する方法です。 Sparkでは、DataFrame.explodeを使用します。この中へ

df.explode($"word", $"excel"){case row => 
    Seq(("Word", row.getInt(0)), ("Excel", row.getInt(1))) 
}.select($"date", $"_1" as "app", $"_2" as "count") 

+--------+-----+-----+ 
| date| app|count| 
+--------+-----+-----+ 
|20150101| word| 3| 
|20150101|excel| 4| 
|20150102| word| 1| 
|20150102|excel| 2| 
+--------+-----+-----+ 
あなたはこれでそれを再構築でき

+--------+----+-----+ 
| date|word|excel| 
+--------+----+-----+ 
|20150101| 3| 4| 
|20150102| 1| 2| 
+--------+----+-----+ 

:あなたはこのように見えた何かを持っていたと仮定すると、

関連する問題