sql—条件下记录的百分比

pbpqsu0x  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(288)

我最近开始尝试使用elasticsearch和它的canvas,我正在尝试使用elasticsearch sql创建一些东西。我遇到了一个我无法解决的问题。我需要确定一个特定标准下的记录百分比。在我的例子中,有包含以下内容的文档(除了我感兴趣的领域之外,省略所有内容)

{
  "Ratio" : 0.25
}

现在我要计算的是,在设定阈值下的记录数占记录总数的百分比。在一个常规的sql数据库中,我会这样做。

SELECT 
  SUM(CASE WHEN Ratio < 3.0 THEN 1 ELSE 0 END) * 1.0 /
  COUNT(*) as RecordsUnder300
FROM "ingest-*"

然而,我似乎无法在essql中做到这一点,我猜是由于elastic的sql部分的限制,但我想知道是否有任何解决方法或其他方法来实现它。
在画布上尝试时,我得到以下结果:

[essql] > Unexpected error from Elasticsearch: [sql_illegal_argument_exception] Does not know how to convert argument CASE(IfConditional[ingest-*.Ratio{f}#856 < 1.0[DOUBLE],1[INTEGER]],0[INTEGER]) for function SUM(CASE(IfConditional[ingest-*.Ratio{f}#856 < 1.0[DOUBLE],1[INTEGER]],0[INTEGER]))

我将在kibana的画布报告中使用结果,所以如果我能在那里得到一些有用的东西,那就太好了。如果需要的话,我也可以在elastic中为文档添加新的字段,如果这样可以简化事情的话。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题