diff --git a/ibis/backends/snowflake/__init__.py b/ibis/backends/snowflake/__init__.py index fbf45902a4e5..902721acf42d 100644 --- a/ibis/backends/snowflake/__init__.py +++ b/ibis/backends/snowflake/__init__.py @@ -477,6 +477,16 @@ def _fetch_from_cursor(self, cursor, schema: sch.Schema) -> pd.DataFrame: df = table.to_pandas(timestamp_as_object=True) df.columns = list(schema.names) return SnowflakePandasData.convert_table(df, schema) + + def execute(self, expr, /, *, params=None, limit=None, **kwargs): + self._run_pre_execute_hooks(expr) + table = expr.as_table() + sql = self.compile(table, params=params, limit=limit, **kwargs) + schema = table.schema() + + with self._safe_raw_sql(sql) as cur: + result = self._fetch_from_cursor(cur, schema) + return expr.__pandas_result__(result, data_mapper=SnowflakePandasData) def to_pandas_batches( self, diff --git a/ibis/backends/snowflake/converter.py b/ibis/backends/snowflake/converter.py index 0c19c2711626..148571a53825 100644 --- a/ibis/backends/snowflake/converter.py +++ b/ibis/backends/snowflake/converter.py @@ -84,6 +84,10 @@ def convert_Map(cls, s, dtype, pandas_type): def convert_Struct(cls, s, dtype, pandas_type): raw_json_objects = cls.convert_JSON(s, dtype, pandas_type) return super().convert_Struct(raw_json_objects, dtype, pandas_type) + @classmethod + def convert_Decimal(cls, s, dtype, pandas_type): + result = s.astype("float64") + return result try: