GoogleSheets / ImportXML / XPath编码的大师,
快速提问......两个ImportXML语句唯一不同的是XPath Aggregate函数:总和有效,avg不用。
=ImportXML("http://api.eve-marketdata.com/api/item_orders2.xml?char_name=Demo&buysell=b&type_ids=17464&station_ids=60003760","sum(/emd/result/rowset/row[not(preceding-sibling::row/@price > @price or following-sibling::row/@price > @price)]/@volremaining)")
=ImportXML("http://api.eve-marketdata.com/api/item_orders2.xml?char_name=Demo&buysell=b&type_ids=17464&station_ids=60003760","avg(/emd/result/rowset/row[not(preceding-sibling::row/@price > @price or following-sibling::row/@price > @price)]/@volremaining)")
注意:对于公式中的页面,目标是找到具有最高@price的行...然后获取数量/ volremaining和价格。但是,当有最高价格的多行时,我需要求和(@volremaining)和avg(@price),因为我只想要返回一行。我可以使用[1]偏移来获得这个值......
=ImportXML("http://api.eve-marketdata.com/api/item_orders2.xml?char_name=Demo&buysell=b&type_ids=17464&station_ids=60003760","/emd/result/rowset/row[not(preceding-sibling::row/@price > @price or following-sibling::row/@price > @price)][1]/@volremaining")
...但让min()/ max()/ avg()工作的练习失败了。
除了W3C XPath Site显示带有双括号的fn:avg((arg1,arg2,arg3))之外,我的生活能否找出差异,而fn:sum是单括号(ARG1,ARG2,ARG3)。
非常感谢您的协助。
此致
G A
答案 0 :(得分:1)
Google Sheet的IMPORTXML()
功能异常错误,但在这种情况下原因不同。
IMPORTXML()
仅支持XPath 1.0函数,但不支持XPath 2.0函数。 sum()
是XPath 1.0函数,而avg()
,min()
和max()
是您无法在Google表格中使用的XPath 2.0函数。
请参阅relevant part of the XPath 1.0 specification - 如您所见,avg()
未列为数字功能。它仅作为XPath 2.0 and XQuery aggregate functions的成员列出。顺便说一句,w3schools与W3C没有任何关系 - 你永远不应该相信来自w3schools的内容。
总结一下,avg()
在XPath表达式中不可用 - 只需检索所有值并使用Google Sheets function instead to calculate an average。