<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
  -->
<feed description="Customer table from RDB" name="##inputFeedName##" xmlns="uri:falcon:feed:0.1">
    <groups>input</groups>

    <frequency>hours(1)</frequency>
    <timezone>UTC</timezone>
    <late-arrival cut-off="hours(6)"/>

    <clusters>
        <cluster name="##cluster##" type="source">
            <validity start="2010-01-01T00:00Z" end="2020-04-21T00:00Z"/>
            <retention limit="hours(24)" action="delete"/>
            <!-- Limit can be in Time or Instances 100, Action ENUM DELETE,ARCHIVE -->
            <import>
                <source name="##datasourcename##" tableName="simple">
                    <extract type="full">
                        <mergepolicy>snapshot</mergepolicy>
                    </extract>
                    <fields>
                        <includes>
                            <field>id</field>
                            <field>name</field>
                        </includes>
                    </fields>
                </source>
                <arguments>
                    <argument name="--split-by" value="id"/>
                    <argument name="--num-mappers" value="2"/>
                </arguments>
            </import>
        </cluster>
    </clusters>

    <table uri="catalog:SqoopTestDB:SqoopTestTable#year=${YEAR};month=${MONTH};day=${DAY};hour=${HOUR}"/>

    <ACL owner="##user##" group="group" permission="0x755"/>
    <schema location="/schema/clicks" provider="protobuf"/>
</feed>