diff --git a/verticapy/performance/vertica/qprof.py b/verticapy/performance/vertica/qprof.py index 94932b879..f6224072a 100755 --- a/verticapy/performance/vertica/qprof.py +++ b/verticapy/performance/vertica/qprof.py @@ -1883,6 +1883,7 @@ def _set_request_qd(self): self.start_timestamp = [] self.end_timestamp = [] self.query_successes = [] + self.queue_times = [] # Extracting transaction_ids and statement_ids from the list of tuples transaction_ids = [t[0] for t in self.transactions] statement_ids = [t[1] for t in self.transactions] @@ -1906,7 +1907,8 @@ def _set_request_qd(self): query_duration_us, q2.start_time, q2.end_time, - q2.success + q2.success, + ROUND(EXTRACT(EPOCH FROM (q3.acquisition_timestamp - q3.queue_entry_timestamp)), 3) AS queue_time_sec FROM v_internal.dc_requests_issued AS q0 FULL JOIN @@ -1915,10 +1917,13 @@ def _set_request_qd(self): FULL JOIN v_monitor.query_consumption AS q2 USING (transaction_id, statement_id) + LEFT JOIN + v_monitor.resource_acquisitions AS q3 + USING (transaction_id, statement_id) WHERE {transaction_id_condition} AND {statement_id_condition}; - """ + """ query = self._replace_schema_in_query(query) res = _executeSQL( query, @@ -1934,6 +1939,7 @@ def _set_request_qd(self): "query_start_timestamp": row[5], "query_end_timestamp": row[6], "query_success": row[7], + "queue_time_sec": row[8], } for tr_id, st_id in self.transactions: if (tr_id, st_id) not in transactions_dict: @@ -1950,9 +1956,11 @@ def _set_request_qd(self): self.start_timestamp += [info["query_start_timestamp"]] self.end_timestamp += [info["query_end_timestamp"]] self.query_successes += [info["query_success"]] + self.queue_times += [info["queue_time_sec"]] self.request = self.requests[self.transactions_idx] self.qduration = self.qdurations[self.transactions_idx] self.query_success = self.query_successes[self.transactions_idx] + self.queue_time = self.queue_times[self.transactions_idx] def _get_current_nodes(self): """ @@ -2090,6 +2098,7 @@ def set_position(self, idx: Union[int, tuple]) -> None: self.request = self.requests[idx] self.qduration = self.qdurations[idx] self.query_success = self.query_successes[idx] + self.queue_time = self.queue_times[idx] try: self.session_params_non_default_current = ( self.session_params_non_default[idx] diff --git a/verticapy/performance/vertica/qprof_interface.py b/verticapy/performance/vertica/qprof_interface.py index f18d8f992..e24484aca 100644 --- a/verticapy/performance/vertica/qprof_interface.py +++ b/verticapy/performance/vertica/qprof_interface.py @@ -111,13 +111,42 @@ def __init__( # Query Inofrmation - Query Text & Time self._query_display_info = widgets.HTML( value=f""" - Query Execution Success: {self._success_html if self.query_success else self._failure_html}
- Execution Time: {self.get_qduration()} (seconds)
- Target Schema: {self.target_schema["v_internal"] if self.target_schema else ''}
- Transaction ID: {self.transaction_id}
- Statement ID: {self.statement_id}
- Key ID: {self.key_id} - """ +
+
+ Query Execution Success: {self._success_html if self.query_success else self._failure_html} +
+ +
+
+
Completion Time:
+
{float(self.get_qduration()):.6f}
+
(seconds)
+
+
+
Queue Time:
+
{float(self.queue_time):.6f}
+
(seconds)
+
+
+
Run Time:
+
{(float(self.get_qduration()) - float(self.queue_time)):.6f}
+
(seconds)
+
+
+
+
+
Transaction ID:
+
{self.transaction_id}
+
+
+
Statement ID:
+
{self.statement_id}
+
+
Target Schema: {self.target_schema["v_internal"] if self.target_schema else ''}
+
Key ID: {self.key_id}
+
+
+ """ ) self._query_display = widgets.VBox( [ @@ -752,12 +781,41 @@ def _update_query_display(self): current_query = self.get_request(print_sql=False, return_html=True) self._query_display.children[0].value = current_query self._query_display_info.value = f""" - Query Execution Success: {self._success_html if self.query_success else self._failure_html}
- Execution Time: {self.get_qduration()} (seconds)
- Target Schema: {self.target_schema["v_internal"] if self.target_schema else ''}
- Transaction ID: {self.transaction_id}
- Statement ID: {self.statement_id}
- Key ID: {self.key_id} +
+
+ Query Execution Success: {self._success_html if self.query_success else self._failure_html} +
+ +
+
+
Completion Time:
+
{float(self.get_qduration()):.6f}
+
(seconds)
+
+
+
Queue Time:
+
{float(self.queue_time):.6f}
+
(seconds)
+
+
+
Run Time:
+
{(float(self.get_qduration()) - float(self.queue_time)):.6f}
+
(seconds)
+
+
+
+
+
Transaction ID:
+
{self.transaction_id}
+
+
+
Statement ID:
+
{self.statement_id}
+
+
Target Schema: {self.target_schema["v_internal"] if self.target_schema else ''}
+
Key ID: {self.key_id}
+
+
""" def _update_session_param_display(self): diff --git a/verticapy/tests_new/core/vdataframe/test_agg.py b/verticapy/tests_new/core/vdataframe/test_agg.py index b979e96ce..42325a1b5 100644 --- a/verticapy/tests_new/core/vdataframe/test_agg.py +++ b/verticapy/tests_new/core/vdataframe/test_agg.py @@ -462,7 +462,10 @@ def test_vdf(self, titanic_vd, func_name, vpy_func, py_func): print( f"Function name: {vpy_func} \nVerticaPy Result: {vpy_res} \nPython Result :{py_res}\n" ) - assert vpy_res == pytest.approx(py_res, abs=1e-3) + if func_name in ["all", "any"]: + assert bool(vpy_res) == bool(py_res) + else: + assert vpy_res == pytest.approx(py_res, abs=1e-3) @pytest.mark.parametrize( "func_name", diff --git a/verticapy/tests_new/machine_learning/vertica/test_tree_model.py b/verticapy/tests_new/machine_learning/vertica/test_tree_model.py index 49fdd9816..c94db6918 100644 --- a/verticapy/tests_new/machine_learning/vertica/test_tree_model.py +++ b/verticapy/tests_new/machine_learning/vertica/test_tree_model.py @@ -587,7 +587,7 @@ def test_prc_curve(self, model_class, get_vpy_model, get_py_model): py_model_obj = get_py_model(model_class) precision, recall, _ = skl_metrics.precision_recall_curve( y_true=py_model_obj.y.ravel(), - probas_pred=py_model_obj.pred_prob[:, 1].ravel(), + y_score=py_model_obj.pred_prob[:, 1].ravel(), ) py_res = skl_metrics.auc(recall, precision)