Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/sql-bi/docs
Browse files Browse the repository at this point in the history
  • Loading branch information
marcosqlbi committed May 25, 2024
2 parents 8ef0b20 + d511518 commit 13d7daa
Show file tree
Hide file tree
Showing 18 changed files with 45 additions and 26 deletions.
2 changes: 1 addition & 1 deletion _mydocs/api/licensing/courses.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ Each `Course` object contains the following fields:
- `id`: The unique identifier for the license pool.
- `start`: The start date and time for the license pool, formatted as an ISO 8601 date string.
- `end`: The expiration date and time of the license pool, also in ISO 8601 format.
- `transferable`: A boolean indicating whether the licenses in this pool are transferable (true) or untrasferable (false). [See the difference](https://www.sqlbi.com/transferable-video-course-licenses/).
- `transferable`: A boolean indicating whether the licenses in this pool are transferable (true) or untransferable (false). [See the difference](https://www.sqlbi.com/transferable-video-course-licenses/).
- `licenses`: The total number of licenses in the pool.
- `assignedLicenses`: The number of licenses from this pool that have been assigned.
- `availableLicenses`: The number of licenses from this pool that are currently available to be assigned.
2 changes: 1 addition & 1 deletion _mydocs/api/licensing/licenses.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ A JSON object detailing the specific license, including the student and course i
### `PATCH` / v1 / license / {id}
Update the expiration date of a license. Note that:
- The update is allowed only if the parent license pool is transferable.
- The uupdate is allowed only if the license is not expired.
- The update is allowed only if the license is not expired.
- If you put a date in the past, the license will be immediately expired and cannot be updated anymore.
- If you put a date in the future, the license cannot be extended further than the pool expiration date.

Expand Down
2 changes: 1 addition & 1 deletion _mydocs/api/licensing/me.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Upon a successful request, the API will return a JSON object containing the deta
"email": "[email protected]",
"pools": 13,
"licenses": 28,
"untrasferableLicenses": 24,
"untransferableLicenses": 24,
"transferableLicenses": 4,
"allowedDomainsForTransferableLicenses": [
"sqlbi.com"
Expand Down
2 changes: 1 addition & 1 deletion _mydocs/api/licensing/pools.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ Each `Pool` object contains the following fields:
- `title`: The name of the course.
- `start`: The start date and time of the license validity period in ISO 8601 format.
- `end`: The end date and time of the license validity period in ISO 8601 format.
- `transferable`: A boolean indicating whether the licenses in this pool are transferable (true) or untrasferable (false). [See the difference](https://www.sqlbi.com/transferable-video-course-licenses/).
- `transferable`: A boolean indicating whether the licenses in this pool are transferable (true) or untransferable (false). [See the difference](https://www.sqlbi.com/transferable-video-course-licenses/).
- `licenses`: The total number of licenses within the pool.
- `assignedLicenses`: The number of licenses that have been assigned to students.
- `availableLicenses`: The number of licenses remaining in the pool that can be assigned to new students.
Expand Down
2 changes: 1 addition & 1 deletion _mydocs/bravo/features/format-dax/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ The preview requires a manual action because the DAX Formatter service must rece
2. **Preview All Measures**<br> Sends all the measures of the model to the DAX Formatter service. The preview is then automatically displayed for any other measure selected for the current model without requiring a confirmation for each measure.
3. **Automatic preview**<br> By enabling the Automatic preview setting, the preview is automatically enabled for all the measures of any model. The choice can be reverted in the [Options](../../configuration/options.md) dialog box.

When the previes is enabled, the measures that are not formatted are highlighted in the list of the measures.
When the preview is enabled, the measures that are not formatted are highlighted in the list of the measures.
Bravo writes in the Power BI the formatted version only of the selected measures.

<img src="images/format-dax-03.png" width="700">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ A **template workspace** is an entire folder hierarchy identified by a file with

A **template package** is a single JSON file that contains a user template (extension *.package.json*). In terms of consumption, for a Bravo user a template is a template package. In order to customize a template, it is necessary to create a template workspace. A template package is obtained by combining the content of several JSON files included in a template workspace.

Bravo creates a new template by copying all the original template files of one of the predefined templates. In order to modify an organization or user template, the corresponding template workspace must be provided by the template author. The template package cannot generate a corresiponding template workspace.
Bravo creates a new template by copying all the original template files of one of the predefined templates. In order to modify an organization or user template, the corresponding template workspace must be provided by the template author. The template package cannot generate a corresponding template workspace.

The JSON files included in the template workapce can be editing using any text editor. However, Bravo is integrated with [Visual Studio Code](https://code.visualstudio.com/) and the [Bravo Template Editor](template-editor.md) extension.
The JSON files included in the template workspace can be editing using any text editor. However, Bravo is integrated with [Visual Studio Code](https://code.visualstudio.com/) and the [Bravo Template Editor](template-editor.md) extension.

In order to edit a template, Bravo opens the template workspace in Visual Studio Code. The workspace includes several files, but only two folders are relevant to customize a Date template:
- The **src** folder contains the source files of the Date template. The content of these files is described in the [Dax Template](../../../dax-template/index.md) documentation.
Expand Down
4 changes: 2 additions & 2 deletions _mydocs/bravo/features/manage-dates/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ The **Manage Templates** link opens the [Templates](../../configuration/options.

- **Regional Format**: Regional format to generate day and month names.
- **Dates Table**: Name of the visible *Date* table, which only includes a reference to another hidden table specified in *Dates Definition Table*.
- **Dates Definition Table**: Name of the hidden caculated table containing the complete DAX code to generates the *Date* table. Because the DAX code required for a *Date* table is very long, the hidden table referenced by *Date* does not hide the report area when any column of the *Date* table is selected in the Fields pane of Power BI.
- **Dates Definition Table**: Name of the hidden calculated table containing the complete DAX code to generates the *Date* table. Because the DAX code required for a *Date* table is very long, the hidden table referenced by *Date* does not hide the report area when any column of the *Date* table is selected in the Fields pane of Power BI.

### Holidays

Expand All @@ -79,7 +79,7 @@ The **Manage Templates** link opens the [Templates](../../configuration/options.

### Time Intelligence

- **Time Intelligence Functions**: enables/disables the generation of time intellignece measures.
- **Time Intelligence Functions**: enables/disables the generation of time intelligence measures.
- **Target Measures**
- *All Measures*: Generates the time intelligence version for all the model measures.
- *Choose Measures*: Generates the time intelligence version only for the selected measures.
4 changes: 2 additions & 2 deletions _mydocs/bravo/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ Bravo installation provides different options.
</div>

The setup programs are available in two categories:
- **Self-contained**: The self-contained portable setup options include the .NET runtime required for the installation. The presence of the .NET runtime increases the size of the setup, but it gurantees that all the required components are installed if necessary.
- **Self-contained**: The self-contained portable setup options include the .NET runtime required for the installation. The presence of the .NET runtime increases the size of the setup, but it guarantees that all the required components are installed if necessary.
- **Framework-dependent**: The setup does not include the required .NET runtime. The setup is smaller, but it will fail if the required .NET runtime framework is not already installed on the target computer.

For each cateory, we have the following variations:
For each category, we have the following variations:
- **Default setup**: requires administrative rights and installs Bravo as an External Tool for Power BI Desktop.
- **User**: does not require administrative rights, but it does not install Bravo as an External Tool in Power BI Desktop.
- **Portable**: there is no setup; just extract the ZIP file content into a local folder and run Bravo straight from the executable included in that folder.
Expand Down
2 changes: 1 addition & 1 deletion _mydocs/bravo/user-interface.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Here is a brief tour of all features:
5. Opens **documentation and help videos**.
6. Opens the **Alert pane** showing important messages like new updates available.
7. Opens the [**Options dialog box**](configuration/options.md) to specify all the settings for Bravo.
8. **Theme selection**<br> Switches beween light theme, dark theme, or automatic. The default setting is automatic, which chooses between light mode and dark mode based on Windows settings.
8. **Theme selection**<br> Switches between light theme, dark theme, or automatic. The default setting is automatic, which chooses between light mode and dark mode based on Windows settings.
9. **Login/logout**<br> *Login* to the Power BI service, required to connect Bravo to a dataset published on Power BI service. The first time, Bravo may request the username to locate the right endpoint for the authentication. During the sign in, a browser window appears to complete the login process. Login is not required to access local files. Bravo remembers log in credentials on following runs, just like Power BI Desktop does: use the same button to explicitly *Logout*.

Other two common elements of the user interface appear in all the operation pages.
Expand Down
4 changes: 2 additions & 2 deletions _mydocs/contoso-data-generator/databasegenerator.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ This file contains the main configuration of the data generator.

- **CustomerActivity** : contains the configuration for customer start/end date

- **StartDateWeightPoints**, **StartDarteWeightValues**: configuration for the spline of customer start date
- **StartDateWeightPoints**, **StartDateWeightValues**: configuration for the spline of customer start date

- **EndDateWeightPoints**, **EndDateWeightValues**: configuration for the spline of customer end dates

Expand All @@ -90,7 +90,7 @@ The Excel configuration file contains both fixed data and parameters to control
The file contains several sheets, further described here. Each sheet contains multiple columns. The software reads some of the columns recognizing them by name. Columns with names that do not follow the standard requirements of the software are ignored. Columns have been conveniently colored in yellow if they are used by the software. Any non-yellow color is considered a comment and it is useful only for human purposes.

### Categories
From here you can configure sales of categories using two curves: W and PPC. “W” define the relative weight of each category in the set of all categories for different periods in the entire timeframe. “PPC” define the variation in the price of items of each category during the whole period (Price percent). Normally the last column is 100%.
From here you can configure sales of categories using two curves: W and PPC. “W” define the relative weight of each category in the set of all categories for different periods in the entire time frame. “PPC” define the variation in the price of items of each category during the whole period (Price percent). Normally the last column is 100%.

### Subcategories
From here you can configure sales of subcategories using a weight curve with columns marked with W. The values are used to define the weight of a subcategory inside its category. Therefore, the numbers are summed by category and then used to weight subcategories inside the category.
Expand Down
4 changes: 2 additions & 2 deletions _mydocs/contoso-data-generator/scripts.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ QuickRun purpose is to create the working folders and then run the **GenerateDat

## GenerateDatabases.ps1

Generate several Contoso databases per run, by iterating over an array of configuration paramters to run in sequence
Generate several Contoso databases per run, by iterating over an array of configuration parameters to run in sequence

- **DatabaseGenerator** to generate the csv files with the orders
- SQL Script to create the datbase, import the data, backup the database and detach the .mdf and .ldf files
- SQL Script to create the database, import the data, backup the database and detach the .mdf and .ldf files
- zip/7-Zip to compress the database files

## Parameters
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ The SWITCH function is syntax sugar for a list of nested IF conditions. Because

[**Optimizing SWITCH on slicer selection with Group By Columns**](https://www.sqlbi.com/articles/optimizing-switch-on-slicer-selection-with-group-by-columns/) explains how to optimize the SWITCH condition whe it reads a Power BI slicer selection.

## Unsopported cases
## Unsupported cases
There are case where the SWITCH optimization is not triggered, or when the presence of the SWITCH function (or an equivalent list of nested IF) produces negative side effects on performance.

### Expressions with operators
Expand Down Expand Up @@ -65,7 +65,7 @@ The server timings pane confirms that there is a single storage engine query (at
If we use CAD as a filter, we get a much longer query plan. The CrossApply operator in this case implements a CrossApplyInteger operation (even though there are no differences in the logical query plan).
<img src="images/SWITCH-queryplan-CAD.png" width=600>

The additional storage engine queries are not a big deal unless they materializa many rows, but the real issue is that the full crossjoin executed in the formula engine can be extremely expensive in the formula engine.
The additional storage engine queries are not a big deal unless they materialize many rows, but the real issue is that the full crossjoin executed in the formula engine can be extremely expensive in the formula engine.
<img src="images/SWITCH-server-timings-CAD.png" width=800>

For example, with 7,695,091 existing combinations, the full cartesian product of 12 * 2,520 * 4,021 * 11 generates 1,337,545,440 combinations in the formula engine, only to ignore all of them that are not included in the existing combinations.
Expand All @@ -92,7 +92,7 @@ It is hard to predict which case favor another, because it really depends on the

In the previous example, the branch for AUD does not produce the optimal formula engine query plan and generates a full crossjoin, even if the the expression matches the pattern that should be optimized (single aggregation, SUMX).

The reason is that the entire SWITCH function must have a single data type as a result, and that result is a CURRENCY (CURRENCY takes precedence over INTEGER when there are different data types; if present, DOUBLE would taks precedence over CURRENCY and INTEGER)
The reason is that the entire SWITCH function must have a single data type as a result, and that result is a CURRENCY (CURRENCY takes precedence over INTEGER when there are different data types; if present, DOUBLE would take precedence over CURRENCY and INTEGER)

```DAX
MEASURE Sales[Test1] =
Expand Down Expand Up @@ -129,7 +129,7 @@ The solution is to apply an explicit conversion to CURRENCY (we use CONVERT, but
This is a separate issue from the [expression with operator](#expressions-with-operators) case we described before, and they could be fixed separately by Microsoft in the future.

### Context transition
If the simple aggregations contains a context transition, the SWITCH evaluation in a SUMMARIZECOLUMNS performs the full crossjoin in the formula engine, as we have seen in the previos [Expressions with operators](#expressions-with-operators) section.
If the simple aggregations contains a context transition, the SWITCH evaluation in a SUMMARIZECOLUMNS performs the full crossjoin in the formula engine, as we have seen in the previous [Expressions with operators](#expressions-with-operators) section.

For example, this code produces a full crossjoin in the formula engine.

Expand Down
2 changes: 1 addition & 1 deletion _mydocs/dax-template/configuration/annotations.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Describes the template that generated the column/table/measure.
### SQLBI_TimeIntelligence
Describes the type of time intelligence implemented by the time intelligence template.
- **Standard**: Use standard DAX time intelligence functions.
- **Monthly**: Use custom DAX code with montly-based calculations, without using the DAX time intelligence functions.
- **Monthly**: Use custom DAX code with monthly-based calculations, without using the DAX time intelligence functions.
- **Weekly**: Use custom DAX code with weekly-based calculations, without using the DAX time intelligence functions.

### SQLBI_CalendarType
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ This way, when clicking a column of the calculated table generated by the templa
Array of strings with the files used for the localization.

### TargetMeasures
Array of criterias used to identify the measures to process. It is relevant only for measure templates.
Array of criteria used to identify the measures to process. It is relevant only for measure templates.

### IsHidden
Flag true/false to specify whether the table created should be hidden. It is relevant only for table templates.
Expand Down
2 changes: 1 addition & 1 deletion _mydocs/dax-template/configuration/dax-placeholders.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Retrieve the name of the holiday specified in the **date** provided as an argume
Returns the IsoFormat specified in the Config object.

### @@GETLASTSTEP()
Retrieves the table expression computed so far in a calculated table expression. It is usueful to iterate the table expression built with the DAX expressions that do not depend on the current expression.
Retrieves the table expression computed so far in a calculated table expression. It is useful to iterate the table expression built with the DAX expressions that do not depend on the current expression.

For example, it can be used to retrieve the first day of a custom fiscal month by writing:
```DAX
Expand Down
2 changes: 1 addition & 1 deletion _mydocs/dax-template/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ The template for a calculated table has these main elements:
- [**Columns**](./templates/custom-template-table.md#columns): List of columns generated in the output table. Each column can have a DAX expression that can reference variables defined in RowVariables and GlobalVariables.
- [**Hierarchies**](./templates/custom-template-table.md#hierarchies): List of hierarchies create in the Tabular model. It is optional and there is only one hierarchy created in the previous example.

There is no need to worry about the order in which steps and variables are defined. The DAX Template engine automatically arrange the proper sort order based on dependencies found in the calculations. Circualr dependencies are not allowed.
There is no need to worry about the order in which steps and variables are defined. The DAX Template engine automatically arrange the proper sort order based on dependencies found in the calculations. Circular dependencies are not allowed.

## Calendar templates
The [Calendar templates](./calendar-templates/index.md) are examples of date templates implementing common calendars that are also used by Bravo for Power BI.
Loading

0 comments on commit 13d7daa

Please sign in to comment.