def test_decimal_timestamp_builtins(self): table = self.con.table('tpch_lineitem') dc = table.l_quantity ts = table.l_receiptdate.cast('timestamp') exprs = [ dc % 10, dc + 5, dc + dc, dc / 2, dc * 2, dc ** 2, dc.cast('double'), api.where(table.l_discount > 0, dc * table.l_discount, api.NA), dc.fillna(0), ts < (ibis.now() + ibis.month(3)), ts < (ibis.timestamp('2005-01-01') + ibis.month(3)), # hashing dc.hash(), ts.hash(), # truncate ts.truncate('y'), ts.truncate('q'), ts.truncate('month'), ts.truncate('d'), ts.truncate('w'), ts.truncate('h'), ts.truncate('minute'), ] timestamp_fields = ['year', 'month', 'day', 'hour', 'minute', 'second', 'millisecond', 'microsecond', 'week'] for field in timestamp_fields: if hasattr(ts, field): exprs.append(getattr(ts, field)()) offset = getattr(ibis, field)(2) exprs.append(ts + offset) exprs.append(ts - offset) proj_exprs = [expr.name('e%d' % i) for i, expr in enumerate(exprs)] projection = table[proj_exprs].limit(10) projection.execute()
def test_decimal_timestamp_builtins(self): table = self.con.table("tpch_lineitem") dc = table.l_quantity ts = table.l_receiptdate.cast("timestamp") exprs = [ dc % 10, dc + 5, dc + dc, dc / 2, dc * 2, dc ** 2, dc.cast("double"), api.where(table.l_discount > 0, dc * table.l_discount, api.NA), dc.fillna(0), ts < (ibis.now() + ibis.month(3)), ts < (ibis.timestamp("2005-01-01") + ibis.month(3)), # hashing dc.hash(), ts.hash(), # truncate ts.truncate("y"), ts.truncate("q"), ts.truncate("month"), ts.truncate("d"), ts.truncate("w"), ts.truncate("h"), ts.truncate("minute"), ] timestamp_fields = ["year", "month", "day", "hour", "minute", "second", "millisecond", "microsecond", "week"] for field in timestamp_fields: if hasattr(ts, field): exprs.append(getattr(ts, field)()) offset = getattr(ibis, field)(2) exprs.append(ts + offset) exprs.append(ts - offset) proj_exprs = [expr.name("e%d" % i) for i, expr in enumerate(exprs)] projection = table[proj_exprs].limit(10) projection.execute()
def test_timestamp_scalar_in_filter(self): # #310 table = self.alltypes expr = (table.filter([table.timestamp_col < (ibis.timestamp('2010-01-01') + ibis.month(3)), table.timestamp_col < (ibis.now() + ibis.day(10)) ]) .count()) expr.execute()
def test_where_analyze_scalar_op(self): # root cause of #310 table = self.con.table('functional_alltypes') expr = (table.filter([ table.timestamp_col < (ibis.timestamp('2010-01-01') + ibis.month(3)), table.timestamp_col < (ibis.now() + ibis.day(10)) ]).count()) result = to_sql(expr) expected = """\ SELECT count(*) AS `tmp` FROM functional_alltypes WHERE `timestamp_col` < months_add('2010-01-01 00:00:00', 3) AND `timestamp_col` < days_add(now(), 10)""" assert result == expected
def test_where_analyze_scalar_op(self): # root cause of #310 table = self.con.table('functional_alltypes') expr = (table.filter([table.timestamp_col < (ibis.timestamp('2010-01-01') + ibis.month(3)), table.timestamp_col < (ibis.now() + ibis.day(10))]) .count()) result = to_sql(expr) expected = """\ SELECT count(*) AS `tmp` FROM functional_alltypes WHERE `timestamp_col` < months_add('2010-01-01 00:00:00', 3) AND `timestamp_col` < days_add(now(), 10)""" assert result == expected