示例#1
0
    def test_is_time_druid_time_col(self):
        """Druid has a special __time column"""
        col = TableColumn(column_name="__time", type="INTEGER")
        self.assertEqual(col.is_dttm, None)
        DruidEngineSpec.alter_new_orm_column(col)
        self.assertEqual(col.is_dttm, True)

        col = TableColumn(column_name="__not_time", type="INTEGER")
        self.assertEqual(col.is_time, False)
示例#2
0
    def test_is_time_druid_time_col(self):
        """Druid has a special __time column"""

        database = Database(database_name="druid_db", sqlalchemy_uri="druid://db")
        tbl = SqlaTable(table_name="druid_tbl", database=database)
        col = TableColumn(column_name="__time", type="INTEGER", table=tbl)
        self.assertEqual(col.is_dttm, None)
        DruidEngineSpec.alter_new_orm_column(col)
        self.assertEqual(col.is_dttm, True)

        col = TableColumn(column_name="__not_time", type="INTEGER", table=tbl)
        self.assertEqual(col.is_temporal, False)
    def test_convert_dttm(self):
        dttm = self.get_dttm()

        self.assertEqual(
            DruidEngineSpec.convert_dttm("DATETIME", dttm),
            "TIME_PARSE('2019-01-02T03:04:05')",
        )

        self.assertEqual(
            DruidEngineSpec.convert_dttm("TIMESTAMP", dttm),
            "TIME_PARSE('2019-01-02T03:04:05')",
        )

        self.assertEqual(
            DruidEngineSpec.convert_dttm("DATE", dttm),
            "CAST(TIME_PARSE('2019-01-02') AS DATE)",
        )
示例#4
0
 def test_extras_with_ssl(self):
     db = mock.Mock()
     db.extra = default_db_extra
     db.server_cert = ssl_certificate
     extras = DruidEngineSpec.get_extra_params(db)
     connect_args = extras["engine_params"]["connect_args"]
     assert connect_args["scheme"] == "https"
     assert "ssl_verify_cert" in connect_args
 def test_timegrain_expressions(self):
     """
     DB Eng Specs (druid): Test time grain expressions
     """
     col = "__time"
     sqla_col = column(col)
     test_cases = {
         "PT1S": f"FLOOR({col} TO SECOND)",
         "PT5M": f"TIME_FLOOR({col}, 'PT5M')",
     }
     for grain, expected in test_cases.items():
         actual = DruidEngineSpec.get_timestamp_expr(
             col=sqla_col, pdf=None, time_grain=grain
         )
         self.assertEqual(str(actual), expected)
示例#6
0
 def test_timegrain_expressions(self):
     """
     DB Eng Specs (druid): Test time grain expressions
     """
     col = "__time"
     sqla_col = column(col)
     test_cases = {
         "PT1S":
         f"TIME_FLOOR(CAST({col} AS TIMESTAMP), 'PT1S')",
         "PT5M":
         f"TIME_FLOOR(CAST({col} AS TIMESTAMP), 'PT5M')",
         "P1W/1970-01-03T00:00:00Z":
         f"TIME_SHIFT(TIME_FLOOR(TIME_SHIFT(CAST({col} AS TIMESTAMP), 'P1D', 1), 'P1W'), 'P1D', 5)",
         "1969-12-28T00:00:00Z/P1W":
         f"TIME_SHIFT(TIME_FLOOR(TIME_SHIFT(CAST({col} AS TIMESTAMP), 'P1D', 1), 'P1W'), 'P1D', -1)",
     }
     for grain, expected in test_cases.items():
         actual = DruidEngineSpec.get_timestamp_expr(col=sqla_col,
                                                     pdf=None,
                                                     time_grain=grain)
         self.assertEqual(str(actual), expected)
示例#7
0
 def test_extras_without_ssl(self):
     db = mock.Mock()
     db.extra = default_db_extra
     db.server_cert = None
     extras = DruidEngineSpec.get_extra_params(db)
     assert "connect_args" not in extras["engine_params"]