2017-08-17 11 views
2

dc.jsを初めて使用しています。そして私はそれを使用して複数の条件でデータセットをフィルタリングしようとしています。 1つの条件(タイプ)でフィルタリングするために、次のコードを使用することができます。dc.js:複数の寸法フィルタ

var psv = d3.dsvFormat("|"); 
var experiments = psv.parse("time|userId|type|version\n" + data); 
var ndx = crossfilter(experiments); 
var typeDim = ndx.dimension(function(d) { return d["type"]}); 
var result = typeDim.filter(targetType).top(GLOBAL.MAX_FEEDBACK_COUNT); 

resultに別のディメンションフィルタ条件を適用するにはどうすればよいですか? userIdによるフィルタリングと同じですか? ありがとうございます。

答えて

1

頻繁な混乱の原因の1つ:.filterは、フィルタリングされたデータを返しません。ステートフルなディメンションにフィルタを適用します。次にdimension.top()group.all()は、生のデータと集約されたデータをクロス・フィルタから取り出す機能です。

別のフィルタを適用する場合は、通常、別のフィルタを追加します(例: 1つはuserIdに合わせられています。次に、クロスフィルタインスタンスが両方のフィルタでフィルタリングされます。

ただし、クロスフィルタグループ(通常は集計データを読み込みます)does not observe its own dimension's filters。巧みに、dimension.top does observe this dimension's filter