Menu

Business Model Creation and Management

Overview

As an intermediate link for data access and visualization display, the DataSet provides users with the ability to create models, view data, process data, and share and reuse data, thereby providing effective data support for subsequent visualization display.

It allows business users who do not know SQL code to complete data production and processing at a low cost, greatly reducing the user's usage threshold; at the same time, users can use business models configured by others to help enterprises improve the circulation efficiency of data resources.


Create Business Models

According to business demands, users can create business models from various sources, mainly divided into three categories. The detailed process for creating models from each source can be found in the following:

View Business Models

The details page of a business model is in a read-only state. Users can view detailed data of the model and perform limited (within the selected conditions) filtering and analysis operations in the DataSet and visualization layers.

The retrospective state includes the following four parts, which provide the ability to quickly render viewable data in limited scenarios.

  1. Common Function Area
  2. Configuration Panel
  3. Data Filtering Area
  4. Chart Display Area

 

Common Function Area

The common function area is the common framework of the page, where all common information and functions of models in the DataSet are included, as shown in the figure below:


Please refer to the following table for detailed functional descriptions:


name

function

1Configure ChartUsing this business model configuration to configure charts, you can choose to configure them to "existing reports" or "new reports". For details, please refer to:Create charts
2Calculated fieldsFor the secondary processing of this model data and the supplementation of existing fields, please refer to: Create New Calculated Fields 
3

More

  1. View Configuration
  2. delete
  1. View/edit the configuration information of this business model
    Including basic information, business settings, update settings, permission settings, etc
  2. Display the application relationship of this business model when deleting a report
    Including: report name, chart name, operator account
4Go to analytical modelQuick path to initiate a query to re-edit and update the query rules of this business model
5Edit business modelRe-edit and update the query rules of this business model, please refer to: Edit business model
6Business model status information and managersShow the update status of current data and collaborative management information
7Mode switching

View detailed table mode while viewing the main model, please refer to: Results table details page

Also use detailed table mode for data model concatenation, please refer to: Data Processing-Model Splicing


Analysis configuration zone

The analysis configuration zone displays the query rules of this model, including data constraints when saving snapshots, as shown in the following figure:

Please refer to the following table for detailed functional descriptions:


Name

Function

1MetricThe collection of all metrics and custom metrics included in this business model
2GroupThe collection of items classified by "event attributes, user attributes, user tags, user segments" in this business model
3Display ItemsControl the display and hide of "metrics" or "groups" in the data display area of this business model
4FilterFiltering conditions for global information in the data extraction rules of this business model
5Time GranularityThe aggregation granularity of the time dimension
6Other ConfigurationsIncluding the analysis subject, the timezone in which the analysis is located, etc.
7Data Constraints

Controlled by the metadata permissions of the creator when the model is created

The intersection of event table and user table data permissions does not allow the use of events corresponding to users without permissions in the "User Table"


Data filtering area

The data filtering area can filter and display the data under the current model, while also displaying the data permissions of the current user, as shown in the following figure:

Please refer to the following table for detailed functional descriptions:


Name

Function

1Data permissionsDisplay the data permission control that the current user is under when viewing this business model
2Data update timeUpdate time of business model data
3Preset Total Range

When in total mode, display the deduplication window for the total results of the current model

4Data aggregation switch

Control whether the current business model displays detailed data results or aggregated data.

  • Switch off: Display detailed data
  • Switch on: Display aggregated slice data
5Data filtering optionsFilter and refine the display of time, grouping values, and metric values in the business model


Chart display area

The chart display area presents the filtered data in the form of charts. At the same time,the current viewer is restricted by the viewing permissions assigned to the current business model, as shown in the following figure:

For a detailed description of the functionality, please refer to the table below:


Name

Function

1Chart FunctionsThe functions supported in the current chart; for example, collapsing time, displaying growth rate, etc.
2Data ExportSubject to the permission controls of data export, it supports exporting Excel data within the scope of user data export permissions.
3Chart SwitchingCan be switched to other chart display forms; different chart types are supported based on the source of the business model.
4Data DisplayThe data range displayed in this area is controlled by the current user's data permission restrictions.


Result Table Details Page

Each analysis model system compresses into a vector based on the time dimension, providing a detailed result table under the time, which can be freely switched and viewed. This result table is stored according to the analysis granularity of the business model.

For example, the event analysis model analyzes by day, so the result table is broken down and stored by day, as shown in the figure below:


PatternsDetails page display
1Analysis Model

2Analysis Model-Result Table




Data Processing

The existing data is missing the data needed for analysis and needs to be processed again;

For example, a user wants to determine whether the current contract amount belongs to a "large order" or a "small order", but the current data does not have a field of this type.

For example, the field names in the current model do not meet the business requirements and the user wants to modify them to display other names.

Calculated Field

The "Calculated Field" in the DataSet provides the ability to add calculated fields to achieve the capability of re-calculation on existing fields, thereby obtaining new fields. It is convenient to achieve the target field.Supports adding dimension calculated fields and metric calculated fields.

For example, the user uses a calculated field to add a new dimension field, where if the "contract amount" is greater than 1000000, it is a large order.

Supported Types

The following sources of DataSet support the ability to create calculated fields, as follows:

  • Metric Analysis
  • Events Analysis
    • Standard Aggregation Mode
    • Result Table Mode
  • Sessions Analysis
    • Standard Aggregation Mode
    • Result Table Mode
  • Funnels Analysis - Result Table Mode
  • Retention Analysis - Result Table Mode
  • Session Analysis - Result Table Mode
  • Custom Query
  • Data Table

Add Entry

The entry point for adding a calculated column is shown in the following figure:

  • The "Calculated Field" entry is displayed on the Business Model Details page;
  • This feature is controlled by "Management Permissions" and requires collaborative management permissions for the current model to be used.

Manage Calculated Fields

After entering the calculated field page, you can manage the current calculated fields:

  1. Search: Supports searching for the names of calculated columns to quickly locate the target calculated field;
  2. Create New: Supports creating new calculated fields. Each model has a limit on the number of new creations. If necessary, contact the operations team to adjust the limit;
  3. Calculated Column Name: The name of the current calculated field, and the calculated field in each model cannot be duplicated
  4. Type: The type of this calculated field
  5. Operations-Edit: Enter the edit interface of this calculated field and modify the name, function, and statement of this field.
    Operations-Delete: Delete this field

Edit Calculated Field

Enter the edit interface of the calculated field, and the interface is introduced as follows:

  1. Edit/Modify the name of the calculated field;
  2. Quickly add commonly used operators;
  3. Formula Input Area;
  4. Functions supported in Calculated Fields;
  5. Basic Fields and Calculated Fields in this model;
  6. Function or field interpretation area, which supports parsing whether the current statement is correct and displays the reason for the statement error.

Function Composition

Function calculation consists of four parts:


ContentsDescription
1FunctionA statement used to transform the values or content in a field
2FieldDimensions or metrics in the user data table
3OperatorIndicates the symbol of the operation
4Text ExpressionConstant value represented by written content


For example, suppose there is the following calculation: IF(Contract Amount>2000,"Large Order","Small Order");The corresponding calculation content is shown below:


ContentDescription
1FunctionIF
2Field

Contract Amount

3Operator>
4Text Expression
  • String text: "Large Order" and "Small Order"
  • Numeric text: 2000


Function Formats and Supported List

The function needs to meet the target format during use, as shown in the figure below:

Area 1 is the function name, and area 2 is the parameter data type, implying the return data type. The main function descriptions are as follows:

Function CategoriesFunction NameSyntax Description (Interface Name Syntax Remarks Area)Parameter Data TypeReturn Data Type
Aggregate FunctionsSUM

sum(number)
returns the sum of all values in the expression

Example:
sum([sales])

numbernumber
Aggregate FunctionsAVG

avg(number)
returns the average of all values in the expression

Example:
avg([sales])

numbernumber
aggregate functionCOUNT

count(exp)
Returns the count of all values in an expression

Example:
count([id])

number;

string;

datetime;

(bool)

number
aggregate functionDISTINCT COUNT

distinctcount(exp)
Returns the deduplication count of all values in an expression

Example:
distinctcount([userid])

number;

string;

datetime;

(bool)

number
Aggregate FunctionMAX

max(exp) returns the maximum value of all the values in the expression

Example:

max([sales])

numbernumber
Aggregate FunctionMIN

min(exp) returns the minimum value of all the values in the expression

Example:

min([sales])

numbernumber
Logical FunctionCASE

case <expr> when <value1> then <return1> when <value2> then <return2> ... [else <else>] end: evaluates the logical test and returns the corresponding value. The case function evaluates expr and compares it with a series of values (value1, value2, etc.) and then returns the result.

case when <condition1> then <return1> when <condition2> then <return2> ... [else <else>] end: evaluates the logical test and returns the corresponding value. The case function returns the result based on the condition being true.

Example:

case when [City]="Shanghai" then [City] else null end


Depends on exp
logical functionWHEN

case <expr> when <value1> then <return1> when <value2> then <return2> ... [else <else>] end
Execute logical tests and return corresponding values. The case function evaluates expr and compares it with a series of values (value1, value2, etc.), then returns the result.

case when <condition1> then <return1> when <condition2> then <return2> ... [else <else>] end:Execute logical tests and return corresponding values. The case function is executed as true based on the condition and returns the result.

Example:

case when [City]="Shanghai" then [City] else null end


Depends on exp
logical functionTHEN

case <expr> when <value1> then <return1> when <value2> then <return2> ... [else <else>] end
Execute logical tests and return corresponding values. The case function evaluates expr and compares it with a series of values (value1, value2, etc.), then returns the result.

case when <condition1> then <return1> when <condition2> then <return2> ... [else <else>] end:Execute logical tests and return corresponding values. The case function is executed as true based on the condition and returns the result.

For example:

case when [City]="Shanghai" then [City] else null end


Depends on exp
logical functionELSE

case <expr> when <value1> then <return1> when <value2> then <return2> ... [else <else>] end
Execute logical tests and return corresponding values. The case function evaluates expr and compares it with a series of values (value1, value2, etc.), then returns the result.

case when <condition1> then <return1> when <condition2> then <return2> ... [else <else>] end:Execute logical tests and return corresponding values. The case function is executed as true based on the condition and returns the result.

For example:

case when [City]="Shanghai" then [City] else null end


Depends on exp
logical functionOR

case when <expr1> or <expr2> then <then1> [else <else>] end
Conditional judgment for executing or on two expressions

For example:

case when ([Sales] < 0 or [Sales] = 0) then "No profit"
else "Good profitability" end

No
logical functionAND

case when <expr1> and <expr2> then <then1> [else <else>] end
Condition judgment for executing and on two expressions

For example:

case when(['Profit'] >100 and ['Profit'] <500) then "General profit"
else "Profit unknown"
end



logical functionIIF

iif(condition, true, false)
Check if a condition is met. If true, returns one value; if false, returns another value.

Example:
iif (sales>6,1,0),returns 1 if the value of the sales column is greater than 6, otherwise returns 0.

bool, exp1, exp2

number

string

datetime

(bool)

Logical functionIFNULL

ifnull(expr1, expr2)
If <expr1> is not null, the expression expr1 is returned; otherwise, <expr2> is returned;

Example:
ifnull([Profit], 0)

Expression

Expression1

or

Expression2


Using calculated fields

After creating a calculated column, you can preview and use it on the details page, as shown in the following figure:

  • Calculated fields of the metric type are set in the "Display Items" of the metric;
  • Dimension/group type calculated fields are set in the "Display Items" of the dimension/group;
  • After confirming the selection, the target calculated field can be previewed in the data display area on the right.



Modify the display name

When the original field name does not meet the business requirements, you can modify the "Field Display Name" in the DataSet; the display name is set as the "Field Name" by default. After modifying the display name, all reports using this business model will display the modified field name uniformly.

For example, if the uploaded data table contains the fields "Country" and "City", but you want to display them as "国家" and "城市" in the configured report, you can modify the display name of the corresponding fields on the details page of the DataSet.

Supported types

In the DataSet, the following sources of business models support modifying the display name on the details page, and this function will be further improved in the future.

  • Custom Query
  • Data Table

Operation Entry

In the details page of the business model, go to the "Field Information" tab page to display the field name, field display name, field type, and other information in the current model. In the "Field Display Name" column, you can modify the display name of a field, as shown in the figure below:

Display name presentation

After modifying the field name, the details page of the DataSet and subsequent visual configuration and viewing processes will uniformly display the modified display name.

Display positionDisplay style
Business model details page

Visualization




Edit Business Model

Edit Entry

Support the editing of business models that have already been created and used, quickly modify the counting rules of business models, eliminate the need for new processes, and enable business models to meet business responses more quickly.

The editing entry is located in the upper right corner of the general function area on the details page, as shown in the following figure:


Edit verification

When saving the business model, a permission snapshot was taken of the current creator's permission constraints, such as event attributes, user attributes, dimensions, indicators, etc.

When returning the analysis model from the details page for editing, if the user's current data constraints are different from the constraints of the mirror created earlier, a verification reminder will be triggered when "Edit Business Model" is triggered to avoid misoperation. As shown in the following figure:

save edits

After returning to the analysis model from the details page and modifying the query statements, the historical business model can be updated again or saved as a new business model.

  • Save as: The steps and logic for creating a new business model are the same. Please refer to:New Business Model
  • Update: Update query statements based on historical business models;


Update Query Statement

When returning from the business model to the analysis model for re-editing, the query statement will be verified and judged, which will be divided into two situations:

  • Situation One: Query conditions have changed:
  • Situation Two: Query conditions have not changed:

Situation One: Query conditions have changed:

  1. Step one: After clicking "Update", a pop-up window will appear to remind you "Updating may affect the configured visual charts, do you want to continue updating?", as shown below


  2. Step two: After confirming the update, the "Update Configuration Confirmation" message will be triggered to set the backup processing of historical data.
    1. Overwrite: Adapt the existing visualization configuration according to the new query conditions, and the historical data will not be retained.
    2. Update and backup historical data: Keep the historical data and migrate it to the backup storage of the business model below.


Situation Two: Query conditions have not changed::Query conditions have not changed:

  1. Step one: Click "Update"
  2. Step two: There is no pop-up setting for "Update Configuration Confirmation", and directly proceed to the configuration information settings

Update configuration information

After confirming the update in the above two situations, you will enter the configuration information setting page. In this panel, you can continue to update and modify a series of configuration items such as basic information, business settings, update methods, and permission settings of the current model, as shown below:

Configure execution time

After setting all the configuration information of the model, configure the execution time for this query update when "saving" it to the business market. Two methods are supported, as shown in the following figure:

  • Execute immediately: When returning to the business market, execute this query update immediately
  • Specify execution time: Update the task at the specified time point, with a selectable time range that is within 24 hours and is not supported when there is no available time before the next scheduled task

You can return to the business market and wait for the model to be updated after modification and editing, as shown in the following figure:







<style>
  .toc-macro {
    position: absolute;
    width: inherit;
    right: 20px;
    top: 100px;
    background: rgba(255, 255, 255, 1);
    overflow-wrap: normal;
    visibility: hidden;
    border-left: 1px solid #E0E6ED;
    overflow-y: auto;
    max-height: 80%;
  }

  .navigation ul {
    list-style-type: none;
    padding: 0px;
  }

  .navigation>ul {
    padding: 10px 10px 10px 0;
  }

  .navigation ul li {
    white-space: nowrap;
    padding: 2px 0px 4px 0px;
  }

  .navigation ul li a {
    height: 100%;
    padding: 0 12px 0 12px;
    font-weight: bold;
    display: inline-block;
    max-width: 200px;
    overflow: hidden;
    text-overflow: ellipsis;
    padding-left: 7px;
    border-left: 3px solid rgba(0, 0, 0, 0);
  }


  .navigation ul li ul li a {
    padding: 0 0 0 20px;
    font-weight: normal;
  }


  .navigation ul li ul li ul li a {
    padding: 0 0 0 30px;
  }

  .navigation ul li li {
    white-space: nowrap;
  }

  .navigation ul li span.active a {
    font-weight: bold;
    color: #04CB94;
    border-left: 3px solid #04CB94;
  }

  .navigation ul li a:link,
  .navigation ul li a:visited,
  .navigation ul li a:active,
  .navigation ul li a:hover,
  .navigation ul li a:focus {
    color: #475669;
    text-decoration: none;
  }

  .wiki-content .columnLayout .cell.aside {
    width: 15%;
  }

  div#footer {
    display: none;
  }

  div#main {
    overflow: hidden;
  }

  div#main-content {
    margin-right: 200px;
    overflow-y: auto;
    position: inherit !important;
  }

  ::-webkit-scrollbar {
    width: 6px;
    height: 6px
  }

  scrollbar-width: thin;
  scrollbar-color: #DFE1E4 rgba(0, 0, 0, 0);

  ::-webkit-scrollbar-track {
    background: rgba(0, 0, 0, 0);
  }

  ::-webkit-scrollbar-thumb {
    background-color: #DFE1E4;
    border-radius: 6px;
  }

  .sef-doc-tip-link {
    margin: 10px;
    padding: 6px 12px;
    border-radius: 3px;
    background-color: #00BF8A;
    color: #fff !important;
    display: inline-block;

  }

  .sef-doc-tip-link:hover {
    opacity: 0.8 !important;
  }

  .wiki-content .contentLayout2 {
    margin: 0;
  }
</style>  

<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>


<script type="text/javascript">
  //<![CDATA[
  let kite = function (options) {
    var defaults = {
      namespace: 'kite',
      activeClass: 'active',
      animate: true,
      duration: 300,
      offset: 0,
      container: '#main-content',
      replaceState: false
    };
    const contentBox = document.querySelector('#main-content');
    const allTitle = [...document.querySelectorAll('#main-content h1[id],h2[id],h3[id],h4[id]')]
    allTitle.forEach((l) => {
      const content = l.id;
      l.removeAttribute('id');
      l.setAttribute('data-id', content);
    })

    options = jQuery.extend({}, defaults, options);

    var add = function (ex1, ex2) {
      return parseInt(ex1, 10) + parseInt(ex2, 10);
    };

    var findElements = function (links) {
      var elements = [];
      for (var i = 0; i < links.length; i++) {
        var link = links[i];
        var hash = $(link).attr("href");
        var element = $("[data-id='" + hash.replace('#', '') + "']");
        if (element.length > 0) {
          var top = Math.floor(element.offset().top - 200),
            bottom = top + Math.floor(element.outerHeight());
          elements.push({
            element: element,
            hash: hash,
            top: top,
            bottom: bottom
          });
        }
      }

      return elements;
    };

    var findLink = function (links, hash) {
      for (var i = 0; i < links.length; i++) {
        var link = $(links[i]);
        if (link.attr("href") === hash) return link;
      }
    };

    var resetClasses = function (links) {
      for (var i = 0; i < links.length; i++) {
        var link = $(links[i]);
        link.parent().removeClass(options.activeClass);
      }
    };

    var getActiveHeadingHash = function (elements) {
      var position = {
        top: $('#main-content').scrollTop(),
        left: $('#main-content').scrollLeft()
      };
      var nearest = null;
      for (var i = 0; i < elements.length; i++) {
        var current = elements[i];
        if (position.top >= current.top && position.top <= current.bottom)
          return current.hash;
        else if (position.top > current.bottom) {
          nearest = current.hash;
        }
      }

      return nearest;
    };

    var scrollArea = '';

    return this.each(function () {

      var element = this,
        container = $(options.container),
        links = $(element).find('a');

      for (var i = 0; i < links.length; i++) {
        var link = links[i];
        $(link).on("click", function (e) {
          var target = $(this).attr("href"),
            $target = document.querySelector("[data-id='" + target.replace('#', '') + "']");
          var top = $target.offsetTop - 200;
          if (options.animate) {
            $('#main-content').animate({
              scrollTop: top
            }, options.duration);
          } else {
            contentBox.scrollTo(0, top);
          }
        });

      }

      resetClasses(links);

      var elements = findElements(links);

      var trackChanged = function () {
        var link;
        var hash = getActiveHeadingHash(elements);

        link = findLink(links, hash);

        if (link) {
          if (options.onChange && (scrollArea !== hash)) {
            options.onChange(current.element, $(element), position);
            scrollArea = hash;
          }

          if (options.replaceState) {
            history.replaceState({}, '', '/' + hash);
          }

          resetClasses(links);

          link.parent().addClass(options.activeClass);
        }

        if (!link && (scrollArea !== 'exit') && options.onExit) {
          options.onExit($(element), position);
          resetClasses(links);
          scrollArea = 'exit';
          if (options.replaceState) {
            history.replaceState({}, '', '/');
          }

        }
      };

      container.bind('scroll.' + options.namespace, function () {
        trackChanged();
      });

      $(document).ready(function (e) {
        trackChanged();
      });
    });
  };
  jQuery.fn.extend({ kite });

  var getMenuWidth = function () {
    var mainPadding = ($('#main').innerWidth() - $('#main').width()) / 2;
    var parentWidth = AJS.$(".toc-macro").parent().parent().outerWidth();
    return parentWidth + mainPadding;
  };

  function updateMenu() {

    clearTimeout(window.menuTimer)

    if (AJS.$("#nav").find('a').length) {

      var content_top = AJS.$('#content').offset().top;
      var max_width = AJS.$('.toc-macro').width();
      AJS.$(".toc-macro")
        .css({
          'top': content_top + 10,
          'visibility': 'visible',
          'max-width': max_width || 300
        });

      AJS.$("#main-content")
        .css({
          'height': window.innerHeight - 200
        });
      AJS.$("#nav").kite();

      const tocLinks = [...document.querySelectorAll('.toc-macro a')];
      tocLinks.forEach((l) => {
        tippy(l, { content: l.innerText, placement: 'right' })
      });
      return;
    }

    window.menuTimer = setTimeout(updateMenu, 20)
  }

  AJS.$(window).load(function () {
    AJS.$(".toc-macro")
      .addClass('navigation')
      .attr('id', 'nav');

    updateMenu()
  });

  AJS.$(window).resize(function () {
    AJS.$("div#main-content")
      .css({
        'height': window.innerHeight - 200
      });

  });

  const ob_2 = new ResizeObserver(entries => {
    const ele = document.querySelector('div#main-content');
    if (ele) {

      try {
        ele.style.marginRight = (entries[0].contentBoxSize[0].inlineSize + 20) + 'px';
      } catch (e) {
        console.log(e)
      }
    }
  }
  );

  ob_2.observe(document.querySelector('.toc-macro'))
</script>


Previous
Add external data table
Next
Data Processing - Model Splicing
Last modified: 2024-12-27