@@ -717,6 +717,46 @@ def test_simple_aggregates(self):
717717 ],
718718 )
719719
720+ def test_p100 (self ):
721+ """While p100 isn't an actual quantile in the distributions table, its equivalent to max"""
722+ query = MetricsQueryBuilder (
723+ self .params ,
724+ "" ,
725+ selected_columns = [
726+ "p100(transaction.duration)" ,
727+ ],
728+ )
729+ self .assertCountEqual (
730+ query .where ,
731+ [
732+ * self .default_conditions ,
733+ * _metric_conditions (
734+ [
735+ "transaction.duration" ,
736+ ]
737+ ),
738+ ],
739+ )
740+ self .assertCountEqual (
741+ query .distributions ,
742+ [
743+ Function (
744+ "maxIf" ,
745+ [
746+ Column ("value" ),
747+ Function (
748+ "equals" ,
749+ [
750+ Column ("metric_id" ),
751+ indexer .resolve (constants .METRICS_MAP ["transaction.duration" ]),
752+ ],
753+ ),
754+ ],
755+ "p100_transaction_duration" ,
756+ )
757+ ],
758+ )
759+
720760 def test_grouping (self ):
721761 query = MetricsQueryBuilder (
722762 self .params ,
@@ -873,25 +913,40 @@ def test_run_query(self):
873913 tags = {"transaction" : "foo_transaction" },
874914 timestamp = self .start + datetime .timedelta (minutes = 5 ),
875915 )
916+ self .store_metric (
917+ 100 ,
918+ metric = "measurements.lcp" ,
919+ tags = {"transaction" : "foo_transaction" },
920+ timestamp = self .start + datetime .timedelta (minutes = 5 ),
921+ )
922+ self .store_metric (
923+ 1000 ,
924+ metric = "measurements.lcp" ,
925+ tags = {"transaction" : "foo_transaction" },
926+ timestamp = self .start + datetime .timedelta (minutes = 5 ),
927+ )
876928 query = MetricsQueryBuilder (
877929 self .params ,
878930 f"project:{ self .project .slug } " ,
879931 selected_columns = [
880932 "transaction" ,
881933 "p95(transaction.duration)" ,
934+ "p100(measurements.lcp)" ,
882935 ],
883936 )
884937 result = query .run_query ("test_query" )
885938 assert len (result ["data" ]) == 1
886939 assert result ["data" ][0 ] == {
887940 "transaction" : indexer .resolve ("foo_transaction" ),
888941 "p95_transaction_duration" : 100 ,
942+ "p100_measurements_lcp" : 1000 ,
889943 }
890944 self .assertCountEqual (
891945 result ["meta" ],
892946 [
893947 {"name" : "transaction" , "type" : "UInt64" },
894948 {"name" : "p95_transaction_duration" , "type" : "Float64" },
949+ {"name" : "p100_measurements_lcp" , "type" : "Float64" },
895950 ],
896951 )
897952
0 commit comments