def __init__(self, typename, nullable=False): m = base_typename_re.match(typename) base_typename = m.groups()[0] if base_typename not in _clickhouse_dtypes: raise com.UnsupportedBackendType(typename) self.typename = base_typename self.nullable = nullable
def get_schema(self, table_name, database=None): """ Return a Schema object for the indicated table and database Parameters ---------- table_name : string May be fully qualified database : string, default None Returns ------- schema : ibis Schema """ qualified_name = self._fully_qualified_name(table_name, database) query = 'DESC {0}'.format(qualified_name) data, _ = self._execute(query) names, types = data[:2] ibis_types = clickhouse_types_to_ibis_types(types) try: ibis_types = map(clickhouse_to_ibis.__getitem__, types) except KeyError: raise com.UnsupportedBackendType() return sch.Schema(names, ibis_types)
def _type_to_sql_string(tval): if isinstance(tval, dt.Decimal): return 'decimal({}, {})'.format(tval.precision, tval.scale) name = tval.name.lower() try: return _sql_type_names[name] except KeyError: raise com.UnsupportedBackendType(name)
def bq_param_array(param, value): param_type = param.type() assert isinstance(param_type, dt.Array), str(param_type) try: bigquery_type = _IBIS_TYPE_TO_DTYPE[str(param_type.value_type)] except KeyError: raise com.UnsupportedBackendType(param_type) else: return bq.ArrayQueryParameter(param._name, bigquery_type, value)
def clickhouse_types_to_ibis_types(types): result = [] for t in types: try: value = clickhouse_to_ibis[t] except KeyError: raise com.UnsupportedBackendType(t) else: result.append(value) return result
def bq_param_array(param, value): param_type = param.type() assert isinstance(param_type, dt.Array), str(param_type) try: bigquery_type = ibis_type_to_bigquery_type(param_type.value_type) except NotImplementedError: raise com.UnsupportedBackendType(param_type) else: if isinstance(param_type.value_type, dt.Struct): query_value = [ bigquery_param(param[i].name('element_{:d}'.format(i)), struct) for i, struct in enumerate(value) ] bigquery_type = 'STRUCT' elif isinstance(param_type.value_type, dt.Array): raise TypeError('ARRAY<ARRAY<T>> is not supported in BigQuery') else: query_value = value result = bq.ArrayQueryParameter( param.get_name(), bigquery_type, query_value) return result
def __init__(self, typename, nullable=True): if typename not in self.dtypes: raise com.UnsupportedBackendType(typename) self.typename = typename self.nullable = nullable
def __init__(self, typename, nullable=False): if typename not in _clickhouse_dtypes: raise com.UnsupportedBackendType(typename) self.typename = typename self.nullable = nullable
def _db_type_to_dtype(self, db_type, column): try: return clickhouse_to_pandas[db_type] except KeyError: return com.UnsupportedBackendType(db_type)