4 Replies Latest reply on Apr 26, 2018 4:35 PM by tomoya nishiki

    グループごとの集計方法

    tomoya nishiki

      TAbleauで図1のような表を作った際に、

      図2の黄色塗りのような同じ計算結果の集計はどうのように計算すればよいですか?

      御協力宜しくお願い致します。

      図1 tableauの表

               図2 エクセルの表

        • 1. Re: グループごとの集計方法
          Shinichiro Murakami

          こちらに回答したとおりだと思いますが。。

           

          表計算による周期回転角度の計算方法

           

           

           

          Shin

          • 2. Re: グループごとの集計方法
            tomoya nishiki

            shinさん

             

            サイクル数の上限を無くすことと計算負荷を減らす目的でSET IDを以下のように計算しております。

            if sum([Top])-LOOKUP(sum([Top]),-1)=1 THEN 1 else 0 END + PREVIOUS_VALUE(0)

             

            そのため、計算結果にmin関数が使えなくなってしまい、グループごとの集計ができなくて困っております。

            重複するような質問になってしまい申し訳ございません。

             

            なお、実際のデータは1サイクルあたり6000回程度のサンプリングをおこなっており、

            それを数十回、数十点のデータ取りを行っているため、なるべく計算負荷を減らしたく思っております。

            以前、教えて頂いたサイクルごとにシートを複製する方法では計算負荷が高く、手法を変えることを余儀なくされました。

             

            以上、宜しくお願い致します。

            • 3. Re: グループごとの集計方法
              Shinichiro Murakami

              ツールには常に向き不向き、適材適所があるので、その案件をタブローでやろうとするのは大きな無理があると思われます。

              あいだに、別のツール(複数「行」計算機能の付いたETL=Tableau Prep程度では無理)をかませば、いけると思います。

               

              Shin

              • 4. Re: グループごとの集計方法
                tomoya nishiki

                Shinさん

                 

                以下の式で実現できました。

                中間式が2つほど発生しましたが、及第点ですね。

                 

                ちなみに、有限になってしまいますが、サイクルごとに集計して、

                それらを合算させる方法もありました。

                有限ではあるものの計算負荷を下げることができます。

                サイクル数を許容できるだけの式が必要になるので、

                見栄えは悪いですが、一つの方法思います。

                実際の式は割愛しますが、内容だけ後学のためにお伝え致します。

                 

                御協力感謝します。

                 

                Cycle:

                if sum([Top])-LOOKUP(sum([Top]),-1)=1 THEN 1 else 0 END + PREVIOUS_VALUE(0)

                 

                sample/Cycle:

                IF LOOKUP([Cycle],0)-LOOKUP([Cycle],-1)=0

                    then PREVIOUS_VALUE(0)+1

                    ELSE 1

                END

                 

                Cycle_count2:

                IF (LOOKUP([sample/Cycle],LAST()-INDEX()+1))>LOOKUP([sample/Cycle],LAST()-INDEX())

                    then PREVIOUS_VALUE(LOOKUP([sample/Cycle],LAST()))

                    ELSE LOOKUP([sample/Cycle],LAST()-INDEX())

                END

                 

                Cycle_count3:

                LOOKUP([Cycle_count2],LAST()-INDEX()+1)

                 

                以上