Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-6442

Extend TableAPI Support Sink Table Registration and ‘insert into’ Clause in SQL

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • None
    • 1.4.0
    • Table SQL / API
    • None

    Description

      Currently in TableAPI there’s only registration method for source table, when we use SQL writing a streaming job, we should add additional part for the sink, like TableAPI does:

      val sqlQuery = "SELECT * FROM MyTable WHERE _1 = 3"
      
      val t = StreamTestData.getSmall3TupleDataStream(env)
      tEnv.registerDataStream("MyTable", t)
      
      // one way: invoke tableAPI’s writeToSink method directly
      val result = tEnv.sql(sqlQuery)
      result.writeToSink(new YourStreamSink)
      
      // another way: convert to datastream first and then invoke addSink 
      val result = tEnv.sql(sqlQuery).toDataStream[Row]
      result.addSink(new StreamITCase.StringSink)
      

      From the api we can see the sink table always be a derived table because its 'schema' is inferred from the result type of upstream query.
      Compare to traditional RDBMS which support DML syntax, a query with a target output could be written like this:

      insert into table target_table_name
      [(column_name [ ,...n ])]
      query
      

      The equivalent form of the example above is as follows:

          tEnv.registerTableSink("targetTable", new YourSink)
      
          val sql = "INSERT INTO targetTable SELECT a, b, c FROM sourceTable"
          val result = tEnv.sql(sql)
      

      It is supported by Calcite’s grammar:

       insert:( INSERT | UPSERT ) INTO tablePrimary
       [ '(' column [, column ]* ')' ]
       query
      

      I'd like to extend Flink TableAPI to support such feature. see design doc: https://goo.gl/n3phK5

      Attachments

        Issue Links

          Activity

            People

              lincoln.86xy lincoln lee
              lincoln.86xy lincoln lee
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: