这是可能的,但棘手的,或者至少我不知道一个更容易的方式来以可扩展的方式做到这一点。
注意,下面的方法使用mapSeries
/reduceSeries
功能,这些功能仅适用于石墨网master
(不0.9.x版本,请参阅下面的手动方法,将在0.9.x版本工作)
我们先从2个seriesLists,每个包含ccc
和ddd
:
groupByNode(a.b.*.*.hr,2,"sumSeries")
groupByNode(x.y.*.*.hr,2,"sumSeries")
现在我们需要让他们进入一个包含所有的单品seriesList,所以首先我们将需要让他们重新区分:
aliasSub(groupByNode(a.b.*.*.hr,2,"sumSeries"), "$", ".a_b")
aliasSub(groupByNode(x.y.*.*.hr,2,"sumSeries"), "$", ".x_y")
现在我们有ccc.a_b
,ddd.a_b
,ccc.x_y
和ddd.x_y
,我们可以让他们到一个列表与group
:
group(
aliasSub(groupByNode(a.b.*.*.hr,2,"sumSeries"), "$", ".a_b"),
aliasSub(groupByNode(x.y.*.*.hr,2,"sumSeries"), "$", ".x_y")
)
现在我们可以在地图上开始/减少:
reduceSeries(
mapSeries(
group(
aliasSub(groupByNode(a.b.*.*.hr,2,"sumSeries"), "$", ".a_b"),
aliasSub(groupByNode(x.y.*.*.hr,2,"sumSeries"), "$", ".x_y")
),
0
),
"asPercent", 1, "a_b", "x_y"
)
在这一点上,我们将有ccc.reduce.asPercent
和ddd.reduce.asPercent
,你可以然后包装enire的东西在另一个aliasByNode(<query>, 0)
如果你wa nt只是ccc
和ddd
。
这是什么东西做的本质是一样的呼唤:
group(
alias(asPercent(
groupByNode(a.b.ccc.*.hr,2,"sumSeries"),
groupByNode(x.y.ccc.*.hr,2,"sumSeries"),
), "ccc"),
alias(asPercent(
groupByNode(a.b.ddd.*.hr,2,"sumSeries"),
groupByNode(x.y.ddd.*.hr,2,"sumSeries"),
), "ddd")
)
当然除了它会继续努力的,如果你添加eee
等