# App Building

An Analogy to Mixing Basic Colors of Light

Apps are Built by Mixing Commands, Data Flows & Command Functions

## 1) Select Executable Command 2) Set Data Flow/Common Column 3) Apply Command Function

The command function cannot be executed directly without running an executable command with defined data flow. This is a specific implementation for most executable commands — few executable commands have no associated command functions. Command functions are divided into the following categories and can be activated by the relevant categories of commands executed:—

- Set Column Function — used to configure column names and related properties
- Filter Function — used to filter data of data table by different types of filter settings
- Matching Function — used to match records for different data tables by defined matching keys
- Calculation Function — used to add/replace data by different kinds of calculation rules

## Set Column Function

- Current Column Name
- Data Type
- Display Format
- Direction
- Group By
- Copy Formula

## Filter Function

- Value or Value,Value,Value
- %Ignore
- %All
- %Blank
- %Range()
- %RegEx()
- %And(), %Or()
- %Include(), %Exclude()
- %Match, %ExactMatch()
- Combine Filter

## Matching Function

- %Match
- %ExactMatch

## Maths Function

- %Add()
- %Subtract()
- %Multiply()
- %Divide()
- %Power()
- %Sqrt()
- %Remainder()
- %Factorial()
- %Permutation()
- %Combination()
- %SumOfDigit()

## Statistics Function

- Summary()
- Summary

Both functions support statistics:-

Sum, Count, Max, Min, Average, Median

- Ranking()

## Accounting Function

- %FairValue()
- %RevalueAdj()
- %GrowthRate()
- %BreakevenPoint()
- %BreakevenSale()
- %YTDAverageRate()
- %DC-Number()
- %Number-DC()
- %DCasNumber
- %DCasReverseNumber

## Date/Time Function

- %AddDay()
- %AddMonth()
- %AddYear()
- %AddPeriod()
- %CurrentPeriod()
- %CurrentDate()
- %TimeInterval()
- %YearEnd()
- %FiscalYear()
- %PeriodToDate()

## Manipulation Function

- %Insert()
- %Extract()
- %Merge()
- %Split()
- %Map()
- %ExactMap()
- %JoinTable()
- %CrossJoin()
- Filter = Value

## Precision Function

- Absolute
- Round
- Roundup
- AbsRoundup
- Rounddown
- AbsRounddown
- Cent
- Thousand
- Million
- Percent

# Set Column Function

## List of Commands which Support Set Column Functions

## Current Column Name

When one or more column names as operating by Map Column are different from Common Column names, this function can support to assign alternative names for column mapping purpose.

When columns to be extracted or columns to be loaded are less than number of columns of Common Column, this function can support to select columns from Common Column. It is similar to SQL Statement “Select Column1, Column2, Column3”.

Individual name of Common Column is assigned by users with referring to possible column names to be working with current ETL worksheet by different commands & data flow.

## Value Type & Display Format

This allow to reassign value type in the format of <DataType:DisplayFormat> when target data is Excel. DisplayFormat is equivalent to custom setting of format cell function. e.g. Use <Decimal:#,##0.000> to format a value 321321.56316 to 321,321.563

## Direction

Excel Connector support to extract Excel data with different layouts. It decompose your selected worksheets & columns into a combination of Direction in X, Y, Z, MX, MY, WX & WY automatically. By default, it is optional whether to configure individual Current Column name by e.g. %Direction X, %Direction Y etc.

However, for the purpose of reporting to LamiBook or Excel Workbook with layout other than standard export list (First row are column names, other row are data), all Current Column names shall be configured with expected Direction.

## Group By & Copy Formula

This function is used for reporting with output load to LamiBook or Excel Workbook only.

Group By function is applied for segmentation of data in Direction X, Y, MX & WX only. Data can be segmented in worksheet by multiple groups.

%GroupBy(Column) is to segmented data set. by each unique data of the column & allow to configure Excel formula e.g. Sum(), Max(), for the purpose to calculate statistics for individual segment of data.

%GroupBy(Column) can also extend to %GroupBy(Column1,Column2) to achieve multi-level segmentation of data set.

%GroupbyRange(Column) is supported by predefined %Range(Start..End),%Range(Start..End), to deem each Range(Start..End) as common data for the purpose of data segmentation.

# Filter Function

## List of Commands Which Support Filter Functions

Above commands can work with one or more of below filter settings. Except the command “Post Batch” which requires to filter Batch only, all Common Columns must be configured with at lease one filer – the system does not allow any empty filter setting.

## Value Or Value1,Value2,Value3

Select records in which the filter column contained cells = One or more values separated by ,

## %Ignore

Select records without including column configured with %Ignore

## %All

## %Blank

Select records in which the filter column contained cells = No Value

## %Range(Start..End:IncPattern:ExPattern)

Select records in which the filter column contained cell values matched with e.g. 1..999999:??3???:1?????

Selected record include 3rd chars = 3 and exclude first chars = 1 within the range from 1????? to 999999

## %RegEx(Pattern)

Select records in which the filter column contained cell values matched with pattern followed the standard of Regular Expression

Tutorial website: https://regexone.com/

Tutorial website: https://regex101.com/

## %And(Condition,Condition,Condition)

Select records in which the filter column contained cell values matched with all conditions

e.g. %And(>1000,<10000)

## %Or(Condition,Condition,Condition)

Select records in which the filter column contained cell values matched with either one condition

e.g. %Or(>=1000,=<10000)

## %Include(Pattern)

Select records in which the filter column contained cell values matched with pattern followed below rules:-

Pattern supports *Suffix, Prefix*, *Body*

??Suffix, Prefix???, ?Body??

where * represents any length of value

? represents fixed length of value

## %Exclude(Pattern)

Select records in which the filter column excluded cell values matched with pattern followed below rules:-

Pattern supports *Suffix, Prefix*, *Body*

??Suffix, Prefix???, ?Body??

where * represents any length of value

? represents fixed length of value

## %Match(DataTable)

Select records by referring a DataTable which contains a list of filters with one or more filter columns

## %ExactMatch(DataTable)

Select records by referring a DataTable which contains a list of exact filters with one or more filter columns

Exact filter shall be one value for each cell, not support pattern

## Combine Filter

Column filter supports combination of different kinds of filters e.g. %Range(Start..End),%Include(Pattern)

# Matching Function

## List of Commands which Support Matching Functions

## %Match

For any Common Column be functioned as matching key, simply by inserting %Match with referring to particular Common Column.

## %ExactMatch

Matching function must implement exact match method i.e. matching a pair of values, so there are no different between %Match & %ExactMatch.

# Calculation Function

## Calculation Functions are classified into the following categories:-

## Calculation Functions can be activated by the following ETL commands:-

# Maths Function

## List of Commands Which Support Maths Functions

## %Add(Number,Number,Number...)

Add numbers from defined columns and/or specified numbers e.g. %Add(Amount1,Amount2,=200)

## %Subtract(Number,Number,Number...)

Subtract numbers from defined columns or specified numbers e.g. %Subtract(Amount1,Amount2,=3)

## %Multiply(Number,Number,Number...)

Multiply numbers from defined columns and/or specified numbers e.g. %Multiply(OrgAmt,Ex.Rate)

## %Divide(Number,Number,Number...)

Divide numbers from defined columns and/or specified numbers e.g. %Multiply(Base Amount,Original Amount)

## %Power(Number,Power)

Power of each number from selected column and/or specified number e.g. %Power(=2 ^ =3) = 8

## %Sqrt(Number,Power)

Square Root of each number from selected column or specified number e.g. Sqrt(=4,=1/2) = 2

## %Remainder(Number,Divisor)

Calculate the remainder after number is divided by divisor e.g. %Remainder(=10,=3) = 1

## %Factorial(Integer)

Calculate factorial of a number

e.g. %Factorial(=3) = 3 x 2 x 1 =6

## %Permutation(Larger Int, Smaller Int)

Calculate the maximum number of sequences or order for a fixed sample size from the population

## %Combination(Larger Int, Smaller Int)

Calculate the maximum number of unique groups for a fixed sample size from the population

## %SumOfDigit(Integer)

Calculate the digit sum of a given integer is the sum of all its digits e.g. %SumOfDigit(3) = 1 + 2 + 3 = 6

## %SumOfDigit(Integer1, Integer2, Integer3...)

Calculate sum of different independent set of %SumOfDigit(Integer) by this function

# Statistics Function

## List of Commands which Support Statistics Functions

## %Summary(Number,Number,Statistics)

Summarise numbers by particular statistics function i.e. Sum, Count, Max, Min, Average & Median e.g. 3,4,5,9 where Sum = 18, Count = 4, Max = 9, Min =3, Average = 5.25, Median = 4.5

## %Summary

This function can work with the command “Build Statistics” & “Compute Table” only. This activate to summarise data by unique combinations of selected columns of data table with or without specifying statistics functions for selected columns i.e. %Sum, %Netsum %Count, %Max, %Min, %Average & %Median

Note: This function can work with ETL Command “Build Statistics” & “Compute Table” only.

## %Ranking()

# Accounting Function

## List of Commands which Support Accounting Functions

## %FairValue(Amount,Current Exchange Rate)

Supports foreign currency translation to convert foriegn currency to local currency by current exchange rate

## %FairValue(Quantity,Current Unit Price)

Supports calculation of fair value for given quantity of assets or liabilities with reference to corresponding current unit price

## %RevalueAdj(A,B,C)

This function is used to calculate adjustments between re-measurement of fair value and previous measured fair value by the formulas A x B – C

A = Amount in Foriegn Currency or Quantity

B = Current Exchange Rate or Current Unit Price

C = Previous measured Fair Value

## %GrowthRate(Current Number, Past Number)

Supports to calculate change in ratios of current number (e.g. Quantity, Unit Price, Amount) compared with past number e.g. (110 – 100)/100 = 0.1

## %BreakevenPoint(A,B,C)

This function is used to calculate required number of quantity sold in order to cover total amount of fixed cost by the formula A / (B – C)

A = Total Amount of Fixed Cost e.g 1,000

B = Unit Selling Price e.g. 5.99

C = Unit Variable Cost e.g. 4.37

Roundup of Break-even Point = 617.28 = 618

%BreakevenPoint(=1000,=5.99,=4.37,Roundup0) = 618

## %BreakevenSale(A,B,C)

This function is used to calculate required level of sales revenues to cover total amount of fixed cost by the formula A x B / C

A = Total Amount of Fixed Cost e.g. 1,000

B = Unit Selling Price e.g. 3.99

C = Unit Contribution e.g. 1.22

Break-even Sales = 3,270

## %YTDAverageRate(Period,ClosingRate)

This function is use to calculate year-to-date average exchange rates by referring monthly closing exchange rates starting from first period of a year.

Formula: Sum of Closing Rates / Number of Periods

Period Closing Rate Average Rate

01/2019 1.1 1.1

02/2019 1.2 1.15

03/2019 1.15 1.15

## %YTDAverageRate(Date,ClosingRate,Option)

This function is use to calculate year-to-date average exchange rates by referring daily closing exchange rates starting from first day of calendar year or financial year.

If it is required to implement financial year, e.g. Mar is the final month of a financial year, need to config further setting.

Option = >>Mar, forward year of Mar is year-end

Option = <<Mar, backword year of Mar is year-end

## %DC-Number(Number)

This function is use to merge D/C number to number only (remove D/C).

D is assigned as I, C is assigned as -1

If number is associated with C, the number will be multiply by -1.

## %DC-Number(Number,Reverse)

This function is use to merge D/C number to number only (remove D/C).

D is assigned as -I, C is assigned as 1

If number is associated with D, the number will be multiply by -1.

## %Number-DC(Number)

This function is used to split number to number with D or C.

If number is positive, it will convert to D & Positive Number.

If number is negative, it will convert to C & Positive Number.

## %Number-DC(Number,Reverse)

This function is used to split number to number with D or C.

If number is positive, it will convert to C & Positive Number.

If number is negative, it will convert to D & Positive Number.

## %DCasNumber

This function is used to deem D/C as 1/-1 when working with other calculation functions. D/C will not be removed after calculation. %DCasNumber must be inserted below the D/C column to effect this function.

## %DCasReverseNumber

This function is used to deem D/C as -1/1 when working with other calculation functions. D/C will not be removed after calculation. %DCasReverseNumber must be inserted below the D/C column to effect this function.

## %ReverseDC

When this function works with an executable command, it is used to change from D to C or from C to D for data related to column D / C.

When this function works with LamiShow summary reports, it is used to change the current summary figures from positive to negative or from negative to positive.

# Date/Time Function

## List Commands which Support Date/Time Functions

## %AddDay(Date,Number)

This function is used to get the current date after adding the number of days to the date.

## %AddMonth(Date,Number)

This function is used to get the current date after adding the number of months to the date.

## %AddYear(Date,Number)

This function is used to get the current date after adding the number of years to the date.

## %AddPeriod(Date,Number)

This function is used to get the current date after adding the number of periods to the date.

## %CurrentPeriod(Date,Year-end Month)

This function is used to get the current period with reference to the date & financial year-end month MMM.

>> represents foreward year

%CurrentPeriod(=30 Sep 2019,>>Mar) = 06/2020

<< represents backward year

%CurrentPeriod(=30 Sep 2019,<<Mar) = 06/2019

## %PeriodToDate(Period,Day,Year-end Month)

This function is used to get the current date with reference to the period, day & optional financial year-end month.

>> represents forward year

<< represents backward year

%PeriodToDate(=06/2019,LastDay,<<Mar) = 30 Sep 2019

%PeriodToDate(=06/2019,FirstDay,<<Mar) = 1 Sep 2019

%PeriodToDate(=06/2019,15Day,<<Mar) = 15 Sep 2019

%PeriodToDate(=06/2019,15Day) = 15 Jun 2019

## %YearEnd(Date,Year-end Month)

This function is used to get the year-end date with reference to the date & financial year-end month MMM.

>> represents forword year

%CurrentPeriod(=30 Sep 2019,>>Mar) = 31 Mar 2020

<< represents backward year

%CurrentPeriod(=30 Sep 2019,<<Mar) = 31 Mar 2019

## %FiscalYear(Date,Year-end Month)

This function is used to get the fiscal year with reference to the date & financial year-end month MMM.

>> represents forword year

%FiscalYear(=30 Sep 2019,>>Mar) = 2020

>> represents backward year

%FiscalYear(=30 Sep 2019,<<Mar) = 2019

## %TimeInterval(Date)

This function is used to get the time interval with reference to the date & common column name.

TimeInterval(=1 Jan 2020 12:15:36)

TimeInterval(=43831.5108333333)

**Common Column Name** **Result**

Year 2020

Month 01

Hour 12

Minute 15

Second 36

Year&Month 202001

Year&Month&Day 20200101

Year-Month 2020-01

Year-Month-Day 2020-01-01

Hour:Minute:Second 12:15:36

Year-Month-Day:Hour:Minute:Second 2020-01-01:12:15:36

## %CurrentDate(StartDate,MonthRun,Override)

This function is used to get the current date with reference to start date, month run & optional override setting. Override is used to override calculated date by different scenarios.

%CurrentDate(=28 Feb 2018,=1,=28) = 28 Mar 2018

%CurrentDate(=28 Feb 2018,=-1,=28) = 28 Jan 2018

**Other Examples:**

Allow zero-month run & negative month run

%CurrentDate(1 Feb 2018, 0, LastDay) = 28 Feb 2018

%CurrentDate(1 Feb 2018, -1, LastDay) = 31 Jan 2018

%CurrentDate(28 Feb 2018, -1, 28) = 28 Jan 2018

%CurrentDate (28 Feb 2018, -1) = 31 Jan 2018

**Default Policy – to follow practice of financial close **

- Using same day of the start date
- If the day number does not exist, decrease to the day of the month
- If the day number is the last day of the start date, all other months must use the end date of the month.

**Override Policy – to meet specific business contract term**

Below scenario a,b,c,d demonstrate how to override policy 3 – prevent from using end date of the month.

a. Override setting = FirstDay or LastDay or 15Day

%CurrentDate (28 Feb 2018, 1, FirstDay) = 1 Mar 2018

%CurrentDate(28 Feb 2018, 1, LastDay) = 31 Mar 2018

%CurrentDate(28 Feb 2018, 1, 15Day) = 15 Mar 2018

b. Override setting = 28,29,30

%CurrentDate(28 Feb 2018, 1, 28,29,30) = 28 Mar 2018

c. Override setting = Feb,Sep

%CurrentDate(28 Feb 2018, 1, Feb,Sep) = 28 Mar 2018

d. Override setting = 28 Feb or 30 Sep

%CurrentDate (28 Feb 2018, 1, 28 Feb,30 Sep) = 28 Mar 2018

%CurrentDate (30 Sep 2018, 1, 28 Feb,30 Sep) = 30 Oct 2018

# Manipulation Function

## List Commands which Support Manipulation Functions

## %Insert(Value)

This function is used to insert value by either fixed value or referring to a common column.

%Insert(=100) = 100

%Insert(=ABC) = ABC

%Insert(Amount) = without “=”, assumed it is common column, if it is exist, will copy data from the column

## %Extract(Value:Pattern)

This function is used to get part of the value if matching with pattern using combination of * & ?.

%Extract(=Happy:*ap??) = ap

%Extract(=Happ:*ap??) =

%Extract(=appy:*ap??) =

%Extract(=Happy:*ap??,*y) = apy

* = Any number of character

? = Fixed number of character

## %Merge(Value1,Value2,Value3)

This function is used to merge different fixed values or values referring to specified common columns.

%Merge(=Flex,=Calc) = FlexCalc

%Merge(=Particular1,=Particular2) = FlexCalc is not built in a day

Where current row of Particular1 = Flex

Particular2 = Calc is not built in a day

## %Split(Value)

This function is used to split value into different common columns.

%Split(=A002B092C652D004E003F020)

or

%Split(LongCode) where LongCode is a common column

Calculation results will be determined by referring to the following settings:-

Common Column |
Common Function |
Sample Data |

Segment A | %Split(LongCode) | A002 |

Business 1 | %Split(LongCode) | B092 |

Business 2 | %Split(LongCode) | C652 |

Segment B | %Split(LongCode) | D004 |

Business 3 | %Split(LongCode) | E003 |

## %Map(MappingTable)

This function is used to add columns with reference to the mapping table which supports the following mapping rules:-

**Source Column**

Value

Value,Value,Value

%All

%Range(Start..End:IncPattern:ExPattern)

%RegEx(Pattern)

%And(Condition,Condition,Condition)

%Or(Condition,Condition,Condition)

{else] – for any unmatched items

Syntax for each of above mapping rules are as same as Filter Function.

**Target Column**

Value

%Source(ColumnName)

%Source(ColumnName)-%Source(ColumnName)

All columns of a standard of mapping table shall indicated as either Source or Target e.g. Source Account, Target Project.

MappingTable will refer firstly to DT(MappingTable), if not exist, will refer to current CalcRule.xlsx with worksheet prefix “Map.”.

## %ExactMap(MappingTable)

This function is used to add columns with reference to the mapping table which supports the following mapping rule:-

MappingTable will refer firstly to DT(MappingTable), if not exist, will refer to current CalcRule.xlsx with worksheet prefix “Map.”.

**Source Column**

Value

Value

{else] – for any unmatched items

**Target Column**

Value

All columns of a standard of mapping table shall indicated as either Source or Target e.g. Source Account, Target Project.

MappingTable will refer firstly to DT(MappingTable), if not exist, will refer to current CalcRule.xlsx with worksheet prefix “ExactMap.”.

## %JoinTable(Master Table)

This function is used to join rows from two or more tables based on one or more linked columns between them & resulting adding columns from master table to target data table.

Source Data Table

Col1 |

A |

B |

B |

Master Table

Col2 |
Col3 |

A | 0.7 |

B | 0.9 |

Target Data Table

Col1 |
Col3 |

A | 0.7 |

B | 0.7 |

B | 0.9 |

**%JoinTable(Master Table:ColumnName)**

Specify ColumnName allows to override the system determined linked columns for joining master table with source data table to target data table.

## %CrossJoin(Master Table)

This function is used to add columns with reference to the master table when source data table & MasterTable do not have same column name.

Source Data Table

Col1 |

A |

B |

C |

Master Table

Col2 |

1 |

2 |

Target Data Table

Col1 |
Col2 |

A | 1 |

B | 1 |

C | 1 |

A | 2 |

B | 2 |

C | 2 |

## Filter = Value

This function is used replace value for any value matched by filter.

For how to configure filter, See Filter Function.

# Precision Function

## List of Commands which Support Precision Functions

## Absolute

This is used to adjust the calculated numerical results for most calculation functions.

%Multiply(OrgAmt,Ex.Rate,Absolute) = 15,645.22

where current row of OrgAmount = -10,000

current row of Ex.Rate = 1.564522

## Round

This is used to adjust the calculated numerical results for most calculation functions.

%Multiply(OrgAmt,Ex.Rate,Round0) = -15,645

where current row of OrgAmount = -10,000

current row of Ex.Rate = 1.564522

## Roundup

This is used to adjust the calculated numerical results for most calculation functions.

%Multiply(OrgAmt,Ex.Rate,Roundup0) = -15,645

where current row of OrgAmount = 10,000

current row of Ex.Rate = 1.564522

## AbsRoundup

This is used to adjust the calculated numerical results for most calculation functions. AbsRoundup is equivalent if using Excel formula Roundup().

%Multiply(OrgAmt,Ex.Rate,Round0) = -15,646

where current row of OrgAmount = 10,000

current row of Ex.Rate = 1.564522

## Rounddown

This is used to adjust the calculated numerical results for most calculation functions.

%Multiply(OrgAmt,Ex.Rate,Rounddown0) = -15,646

where current row of OrgAmount = 10,000

current row of Ex.Rate = 1.564522

## AbsRounddown

This is used to adjust the calculated numerical results for most calculation functions. AbsRoundup is equivalent if using Excel formula Rounddown().

%Multiply(OrgAmt,Ex.Rate,Rounddown0) = -15,645

where current row of OrgAmount = 10,000

current row of Ex.Rate = 1.564522

## Cent

This is used to adjust the calculated dollar value results to cent equivalent for most calculation functions.

%Insert(=0.9,Cent) = 90

## Thousand

This is used to adjust the calculated dollar value results to thousand equivalent for most calculation functions.

%Multiply(OrgAmt,Ex.Rate,Thousand) = -15.64522

%Multiply(OrgAmt,Ex.Rate,Thousand,Absolute) = 15.64522

where current row of OrgAmount = 10,000

current row of Ex.Rate = 1.564522

## Million

This is used to adjust the calculated dollar value results to Million equivalent for most calculation functions.

%Multiply(OrgAmt,Ex.Rate,Million) = -0.01564522

%Multiply(OrgAmt,Ex.Rate,Million,Round4) = -0.0156

where current row of OrgAmount = 10,000

current row of Ex.Rate = 1.564522

## Percent

This is used to adjust the calculated dollar value results percent equivalent for most calculation functions.

%Insert(=0.9,Cent) = 90

# App Building

An Analogy to Mixing Basic Colors of Light

Apps are Built by Mixing Commands, Data Flows & Command Functions

## Supports You to Build Object Oriented App by Simplex Settings

Benefits of OOApp are:—

**Compact source code of FlexCalc & your Apps**— FlexCalc has an excellent design for implementing object-oriented programming in order to minimise the size of the source code of the software & increase the possible combinations of red, green, blue spectrum for business users to innovate business applications**Minimise application settings & complexities**— minimum one combination of command, data flow & command function may become a workable application for business**Accelerate flexibility**— there are enough elements of red, green, blue that give you a lot of opportunities for changes**Superior performance**— it is sometimes argued that OO performance deteriorates, but this does not concern FlexCalc due to FlexCalc has implemented AppDic that solving traditional performance issues using object-oriented programming**Easy for maintenance of Apps**— business users are familiar with operating spreadsheets rather than complex & rigid GUI**Why not procedural programming**— if rely on this classical model (it looks like classical music) of software development, the software is unlikely can achieve below goals at the same time:-

1) flexibility & friendly in user settings for App Building,

2) small size in source code of FlexCalc itself & Apps,

3) fast development of software to support building comprehensive Apps,

4) very high performance in execution of Apps deal with complex data processing.

Use various combinations of red, green, blue settings, support to cover your business logic scenarios as much as possible without involve further customisation of FlexCalc for your required Apps. Thanks to Microsoft .Net supports our unique software development model of OOApp for business users, your business logic can be very effectively matching with the corresponding AppDic objects. AppDic can map to a lot of application settings, but also maintain high performance when executing commands. In conclusion, AppDic is one of most advanced techniques of designing Application Generator.

## 1) Select Executable Command 2) Set Data Flow/Common Column 3) Apply Command Function

The command function cannot be executed directly without running an executable command. This is a specific implementation for most executable commands — few executable commands have no associated command functions. Command functions are divided into the following categories and can be activated by the relevant categories of commands executed:—

- Set Column Function — used to configure column names and related properties
- Filter Function — used to filter data of data table by different types of filter settings
- Matching Function — used to match records for different data tables by defined matching keys
- Calculation Function — used to add/replace data by different kinds of calculation rules

## Set Column Function

- Current Column Name
- Data Type
- Display Format
- Direction
- Group By
- Copy Formula

## Filter Function

- Value or Value,Value,Value
- %Ignore
- %All
- %Blank
- %Range()
- %RegEx()
- %And(), %Or()
- %Include(), %Exclude()
- %Match, %ExactMatch()
- Combine Filter

## Matching Function

- %Match
- %ExactMatch

## Maths Function

- %Add()
- %Subtract()
- %Multiply()
- %Divide()
- %Power()
- %Sqrt()
- %Remainder()
- %Factorial()
- %Permutation()
- %Combination()
- %SumOfDigit()

## Statistics Function

- Summary()
- Summary

Both functions support statistics:-

Sum, Count, Max, Min, Average, Median

- Ranking()

## Accounting Function

- %FairValue()
- %Revalue()
- %GrowthRate()
- %BreakevenPoint()
- %BreakevenSale()
- %YTDAverageRate()
- %DC-Number()
- %Number-DC()
- %DCasNumber
- %DCasReverseNumber

## Date/Time Function

- %AddDay()
- %AddMonth()
- %AddYear()
- %AddPeriod()
- %CurrentPeriod()
- %CurrentDate()
- %TimeInterval()
- %YearEnd()
- %FiscalYear()
- %PeriodToDate()

## Manipulation Function

- %Insert()
- %Extract()
- %Merge()
- %Split()
- %Map()
- %ExactMap()
- %JoinTable()
- %CrossJoin()
- Filter = Value

## Precision Function

- Absolute
- Round
- Roundup
- AbsRoundup
- Rounddown
- AbsRounddown
- Cent
- Thousand
- Million
- Percent

## Web Framework

You Can Implement & Host any Front/Back-end Web Framework with Adopting FlexCalc as a Calc Engine

## Data Scientist

Revolutionary Software with the 2020 Roadmap to Empower Business Users Performing as Data Scientist

## Business Scenario

Providing Very Rich Information for Matching Your Business Requirements in Different Scenarios

## Online Tutorial

Inspiring Your App Building Practices by Offering Comprehensive Guide with Many Use Cases