Пример #1
0
    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)
Пример #2
0
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