<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--

  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.

-->
<x_fact_table name="testfactmonthly" cube_name="testCube" weight="5.0" xmlns="uri:lens:cube:0.1">
  <columns>
    <column name="msr21" _type="float" comment="second measure"/>
    <column name="msr4" _type="bigint" comment="fourth measure"/>
    <column name="msr15" _type="int" comment="fifteenth measure"/>
    <column name="union_join_ctx_msr3" _type="int" comment="union_join_ctx_third measure"/>
    <column name="newmeasure" _type="bigint" comment="measure available  from now"/>
    <column name="union_join_ctx_msr2" _type="int" comment="union_join_ctx_second measure"/>
    <column name="msr2" _type="float" comment="second measure"/>
    <column name="msr3" _type="double" comment="third measure"/>
    <column name="msr22" _type="float" comment="second measure"/>
    <column name="msr9" _type="bigint" comment="ninth measure"/>
    <column name="msr1" _type="int" comment="first measure"/>
    <column name="noaggrmsr" _type="bigint" comment="measure without a default aggregate"/>
    <column name="union_join_ctx_msr1" _type="int" comment="union_join_ctx_first measure"/>
    <column name="countryid" _type="int" comment="country id"/>
  </columns>
  <properties>
    <property name="cube.fact.relative.start.time" value="now.year - 90 days"/>
    <property name="cube.fact.testfactmonthly.storages" value="C2"/>
    <property name="cube.fact.testfactmonthly.cubename" value="testCube"/>
    <property name="cube.table.testfactmonthly.weight" value="5.0"/>
    <property name="cube.fact.testfactmonthly.c2.updateperiods" value="MONTHLY"/>
  </properties>
  <storage_tables>
    <storage_table>
      <update_periods>
        <update_period>MONTHLY</update_period>
      </update_periods>
      <storage_name>C2</storage_name>
      <table_desc external="false">
        <part_cols>
          <column name="dt" _type="string" comment="date partition"/>
        </part_cols>
        <table_parameters>
          <property name="cube.storagetable.time.partcols" value="dt"/>
        </table_parameters>
        <serde_parameters>
          <property name="serialization.format" value="1"/>
        </serde_parameters>
        <time_part_cols>dt</time_part_cols>
      </table_desc>
    </storage_table>
  </storage_tables>
</x_fact_table>