2

次のようなクエリを作成しようとしています。

select {r: referrers(f), count:count(referrers(f))}
from com.a.b.myClass f

ただし、出力には実際のオブジェクトは表示されません。

{
count = 3.0,
r = [object Object]
}

Javascript オブジェクト表記を削除すると、リファラーが再び正常に表示されますが、区分化されなくなります。オブジェクト表記内でフォーマットする方法はありますか?

4

1 に答える 1

2

1 年前にこの質問をされたようですので、まだ回答が必要かどうかはわかりませんが、似たようなものを探していたので、お答えできます。問題は、referrers(f) が列挙を返すため、それをハッシュマップに入れようとしても実際にはうまく変換されないことです。一意の char 配列を見つけようとしていた同様のタイプの分析を行っていました (最初の 50 文字までの char 配列の一意の組み合わせを数えます)。私が思いついたのはこれでした:

var counts = {}; 
filter(
  map(
    unique(
      map(
        filter(heap.objects('char[]'), "it.length > 50"), // filter out strings less than 50 chars in length
        function(charArray) {  // chop the string at 50 chars and then count the unique combos
          var subs = charArray.toString().substr(0,50); 
          if (! counts[subs]) {
            counts[subs] = 1;
          } else {
            counts[subs] = counts[subs] + 1;
          }
          return subs;
        }
      ) // map
    ) // unique
  , function(subs) { // map the strings into an array that has the string and the counts of that string 
      return { string: subs, count: counts[subs] };
  }) // map
  , "it.count > 5000"); // filter out strings that have counts < 5000

これは基本的に、列挙 (この場合は heap.objects('char[]')) を取得し、それをフィルター処理してマップし、統計を計算できるようにする方法を示しています。これが誰かに役立つことを願っています。

于 2015-09-09T19:57:43.860 に答える