@@ -369,6 +369,11 @@ export function getChartSql({
369369 return sql ;
370370}
371371
372+ function isNumericColumn ( columnName : string ) : boolean {
373+ const numericColumns = [ 'duration' , 'revenue' , 'longitude' , 'latitude' ] ;
374+ return numericColumns . includes ( columnName ) ;
375+ }
376+
372377export function getEventFiltersWhereClause ( filters : IChartEventFilter [ ] ) {
373378 const where : Record < string , string > = { } ;
374379 filters . forEach ( ( filter , index ) => {
@@ -537,6 +542,78 @@ export function getEventFiltersWhereClause(filters: IChartEventFilter[]) {
537542 }
538543 break ;
539544 }
545+ case 'gt' : {
546+ if ( isWildcard ) {
547+ where [ id ] = `arrayExists(x -> ${ value
548+ . map (
549+ ( val ) =>
550+ `toFloat64OrZero(x) > toFloat64(${ sqlstring . escape ( String ( val ) . trim ( ) ) } )` ,
551+ )
552+ . join ( ' OR ' ) } , ${ whereFrom } )`;
553+ } else {
554+ where [ id ] = `(${ value
555+ . map (
556+ ( val ) =>
557+ `toFloat64OrZero(${ whereFrom } ) > toFloat64(${ sqlstring . escape ( String ( val ) . trim ( ) ) } )` ,
558+ )
559+ . join ( ' OR ' ) } )`;
560+ }
561+ break ;
562+ }
563+ case 'lt' : {
564+ if ( isWildcard ) {
565+ where [ id ] = `arrayExists(x -> ${ value
566+ . map (
567+ ( val ) =>
568+ `toFloat64OrZero(x) < toFloat64(${ sqlstring . escape ( String ( val ) . trim ( ) ) } )` ,
569+ )
570+ . join ( ' OR ' ) } , ${ whereFrom } )`;
571+ } else {
572+ where [ id ] = `(${ value
573+ . map (
574+ ( val ) =>
575+ `toFloat64OrZero(${ whereFrom } ) < toFloat64(${ sqlstring . escape ( String ( val ) . trim ( ) ) } )` ,
576+ )
577+ . join ( ' OR ' ) } )`;
578+ }
579+ break ;
580+ }
581+ case 'gte' : {
582+ if ( isWildcard ) {
583+ where [ id ] = `arrayExists(x -> ${ value
584+ . map (
585+ ( val ) =>
586+ `toFloat64OrZero(x) >= toFloat64(${ sqlstring . escape ( String ( val ) . trim ( ) ) } )` ,
587+ )
588+ . join ( ' OR ' ) } , ${ whereFrom } )`;
589+ } else {
590+ where [ id ] = `(${ value
591+ . map (
592+ ( val ) =>
593+ `toFloat64OrZero(${ whereFrom } ) >= toFloat64(${ sqlstring . escape ( String ( val ) . trim ( ) ) } )` ,
594+ )
595+ . join ( ' OR ' ) } )`;
596+ }
597+ break ;
598+ }
599+ case 'lte' : {
600+ if ( isWildcard ) {
601+ where [ id ] = `arrayExists(x -> ${ value
602+ . map (
603+ ( val ) =>
604+ `toFloat64OrZero(x) <= toFloat64(${ sqlstring . escape ( String ( val ) . trim ( ) ) } )` ,
605+ )
606+ . join ( ' OR ' ) } , ${ whereFrom } )`;
607+ } else {
608+ where [ id ] = `(${ value
609+ . map (
610+ ( val ) =>
611+ `toFloat64OrZero(${ whereFrom } ) <= toFloat64(${ sqlstring . escape ( String ( val ) . trim ( ) ) } )` ,
612+ )
613+ . join ( ' OR ' ) } )`;
614+ }
615+ break ;
616+ }
540617 }
541618 } else {
542619 switch ( operator ) {
@@ -615,6 +692,70 @@ export function getEventFiltersWhereClause(filters: IChartEventFilter[]) {
615692 . join ( ' OR ' ) } )`;
616693 break ;
617694 }
695+ case 'gt' : {
696+ if ( isNumericColumn ( name ) ) {
697+ where [ id ] = `(${ value
698+ . map (
699+ ( val ) =>
700+ `toFloat64(${ name } ) > toFloat64(${ sqlstring . escape ( String ( val ) . trim ( ) ) } )` ,
701+ )
702+ . join ( ' OR ' ) } )`;
703+ } else {
704+ where [ id ] = `(${ value
705+ . map ( ( val ) => `${ name } > ${ sqlstring . escape ( String ( val ) . trim ( ) ) } ` )
706+ . join ( ' OR ' ) } )`;
707+ }
708+ break ;
709+ }
710+ case 'lt' : {
711+ if ( isNumericColumn ( name ) ) {
712+ where [ id ] = `(${ value
713+ . map (
714+ ( val ) =>
715+ `toFloat64(${ name } ) < toFloat64(${ sqlstring . escape ( String ( val ) . trim ( ) ) } )` ,
716+ )
717+ . join ( ' OR ' ) } )`;
718+ } else {
719+ where [ id ] = `(${ value
720+ . map ( ( val ) => `${ name } < ${ sqlstring . escape ( String ( val ) . trim ( ) ) } ` )
721+ . join ( ' OR ' ) } )`;
722+ }
723+ break ;
724+ }
725+ case 'gte' : {
726+ if ( isNumericColumn ( name ) ) {
727+ where [ id ] = `(${ value
728+ . map (
729+ ( val ) =>
730+ `toFloat64(${ name } ) >= toFloat64(${ sqlstring . escape ( String ( val ) . trim ( ) ) } )` ,
731+ )
732+ . join ( ' OR ' ) } )`;
733+ } else {
734+ where [ id ] = `(${ value
735+ . map (
736+ ( val ) => `${ name } >= ${ sqlstring . escape ( String ( val ) . trim ( ) ) } ` ,
737+ )
738+ . join ( ' OR ' ) } )`;
739+ }
740+ break ;
741+ }
742+ case 'lte' : {
743+ if ( isNumericColumn ( name ) ) {
744+ where [ id ] = `(${ value
745+ . map (
746+ ( val ) =>
747+ `toFloat64(${ name } ) <= toFloat64(${ sqlstring . escape ( String ( val ) . trim ( ) ) } )` ,
748+ )
749+ . join ( ' OR ' ) } )`;
750+ } else {
751+ where [ id ] = `(${ value
752+ . map (
753+ ( val ) => `${ name } <= ${ sqlstring . escape ( String ( val ) . trim ( ) ) } ` ,
754+ )
755+ . join ( ' OR ' ) } )`;
756+ }
757+ break ;
758+ }
618759 }
619760 }
620761 } ) ;
0 commit comments