Ejemplo n.º 1
0
Archivo: client.py Proyecto: gridl/ibis
 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
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
Archivo: client.py Proyecto: shshe/ibis
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)
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
 def __init__(self, typename, nullable=True):
     if typename not in self.dtypes:
         raise com.UnsupportedBackendType(typename)
     self.typename = typename
     self.nullable = nullable
Ejemplo n.º 8
0
 def __init__(self, typename, nullable=False):
     if typename not in _clickhouse_dtypes:
         raise com.UnsupportedBackendType(typename)
     self.typename = typename
     self.nullable = nullable
Ejemplo n.º 9
0
 def _db_type_to_dtype(self, db_type, column):
     try:
         return clickhouse_to_pandas[db_type]
     except KeyError:
         return com.UnsupportedBackendType(db_type)