def test_day_time_inteval_type(self): ymt = DataTypes.INTERVAL(DataTypes.DAY(), DataTypes.SECOND()) td = datetime.timedelta(days=1, seconds=10) self.assertEqual(86410000000, ymt.to_sql_type(td)) td2 = ymt.from_sql_type(86410000000) self.assertEqual(td, td2)
from pyflink.table.types import DataTypes if __name__ == '__main__': t = DataTypes.INTERVAL(DataTypes.DAY(), DataTypes.SECOND(3)) # table = t_env.from_elements( # [(1, 'ABC'), (2, 'ABCDE')], # schema=DataTypes.ROW([DataTypes.FIELD('id', DataTypes.INT()), # DataTypes.FIELD('name', DataTypes.STRING())])) # ) # https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/table/sql/queries.html # https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/table/sql/create.html#create-table """ CREATE TABLE user_actions ( user_name STRING, data STRING, user_action_time TIMESTAMP(3), -- 声明user_action_time为事件时间属性,并使用5秒延迟水印策略 declare user_action_time as event time attribute and use 5 seconds delayed watermark strategy WATERMARK FOR user_action_time AS user_action_time - INTERVAL '5' SECOND ) WITH ( ... ); SELECT TUMBLE_START(user_action_time, INTERVAL '10' MINUTE), COUNT(DISTINCT user_name) FROM user_actions GROUP BY TUMBLE(user_action_time, INTERVAL '10' MINUTE); CREATE TABLE user_actions ( user_name STRING, data STRING, user_action_time AS PROCTIME() -- 声明一个额外的字段作为处理时间属性declare an additional field as a processing time attribute