diff --git a/_mydocs/api/licensing/courses.md b/_mydocs/api/licensing/courses.md index 1598c5a..af1278c 100644 --- a/_mydocs/api/licensing/courses.md +++ b/_mydocs/api/licensing/courses.md @@ -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. \ No newline at end of file diff --git a/_mydocs/api/licensing/licenses.md b/_mydocs/api/licensing/licenses.md index 572f48c..2955f99 100644 --- a/_mydocs/api/licensing/licenses.md +++ b/_mydocs/api/licensing/licenses.md @@ -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. diff --git a/_mydocs/api/licensing/me.md b/_mydocs/api/licensing/me.md index 015bd7f..44f19c5 100644 --- a/_mydocs/api/licensing/me.md +++ b/_mydocs/api/licensing/me.md @@ -31,7 +31,7 @@ Upon a successful request, the API will return a JSON object containing the deta "email": "info@sqlbi.com", "pools": 13, "licenses": 28, - "untrasferableLicenses": 24, + "untransferableLicenses": 24, "transferableLicenses": 4, "allowedDomainsForTransferableLicenses": [ "sqlbi.com" diff --git a/_mydocs/api/licensing/pools.md b/_mydocs/api/licensing/pools.md index b04b4c8..f476cc7 100644 --- a/_mydocs/api/licensing/pools.md +++ b/_mydocs/api/licensing/pools.md @@ -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. diff --git a/_mydocs/bravo/features/format-dax/index.md b/_mydocs/bravo/features/format-dax/index.md index 3fabae5..50522ea 100644 --- a/_mydocs/bravo/features/format-dax/index.md +++ b/_mydocs/bravo/features/format-dax/index.md @@ -30,7 +30,7 @@ The preview requires a manual action because the DAX Formatter service must rece 2. **Preview All Measures**
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**
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. diff --git a/_mydocs/bravo/features/manage-dates/customize-date-template.md b/_mydocs/bravo/features/manage-dates/customize-date-template.md index 8c4b91e..7a90537 100644 --- a/_mydocs/bravo/features/manage-dates/customize-date-template.md +++ b/_mydocs/bravo/features/manage-dates/customize-date-template.md @@ -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. diff --git a/_mydocs/bravo/features/manage-dates/index.md b/_mydocs/bravo/features/manage-dates/index.md index de4b7a2..ee5c617 100644 --- a/_mydocs/bravo/features/manage-dates/index.md +++ b/_mydocs/bravo/features/manage-dates/index.md @@ -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 @@ -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. diff --git a/_mydocs/bravo/installation.md b/_mydocs/bravo/installation.md index ea00ccb..25cff86 100644 --- a/_mydocs/bravo/installation.md +++ b/_mydocs/bravo/installation.md @@ -12,10 +12,10 @@ Bravo installation provides different options. 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. diff --git a/_mydocs/bravo/user-interface.md b/_mydocs/bravo/user-interface.md index 001c458..b1ae082 100644 --- a/_mydocs/bravo/user-interface.md +++ b/_mydocs/bravo/user-interface.md @@ -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**
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**
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**
*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. diff --git a/_mydocs/contoso-data-generator/databasegenerator.md b/_mydocs/contoso-data-generator/databasegenerator.md index 395cc9b..cf44709 100644 --- a/_mydocs/contoso-data-generator/databasegenerator.md +++ b/_mydocs/contoso-data-generator/databasegenerator.md @@ -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 @@ -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. diff --git a/_mydocs/contoso-data-generator/scripts.md b/_mydocs/contoso-data-generator/scripts.md index b1ec033..9e3371a 100644 --- a/_mydocs/contoso-data-generator/scripts.md +++ b/_mydocs/contoso-data-generator/scripts.md @@ -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 diff --git a/_mydocs/dax-internals/optimization-notes/switch-optimization.md b/_mydocs/dax-internals/optimization-notes/switch-optimization.md index 1e5a80c..61113de 100644 --- a/_mydocs/dax-internals/optimization-notes/switch-optimization.md +++ b/_mydocs/dax-internals/optimization-notes/switch-optimization.md @@ -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 @@ -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). -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. 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. @@ -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] = @@ -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. diff --git a/_mydocs/dax-template/configuration/annotations.md b/_mydocs/dax-template/configuration/annotations.md index 294f6b7..fc8d84b 100644 --- a/_mydocs/dax-template/configuration/annotations.md +++ b/_mydocs/dax-template/configuration/annotations.md @@ -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 diff --git a/_mydocs/dax-template/configuration/config-object/templates.md b/_mydocs/dax-template/configuration/config-object/templates.md index 9871b16..eb91a1e 100644 --- a/_mydocs/dax-template/configuration/config-object/templates.md +++ b/_mydocs/dax-template/configuration/config-object/templates.md @@ -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. diff --git a/_mydocs/dax-template/configuration/dax-placeholders.md b/_mydocs/dax-template/configuration/dax-placeholders.md index 9ba8984..0f9cdc3 100644 --- a/_mydocs/dax-template/configuration/dax-placeholders.md +++ b/_mydocs/dax-template/configuration/dax-placeholders.md @@ -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 diff --git a/_mydocs/dax-template/index.md b/_mydocs/dax-template/index.md index d1ec8a2..a63ddc0 100644 --- a/_mydocs/dax-template/index.md +++ b/_mydocs/dax-template/index.md @@ -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. \ No newline at end of file diff --git a/_mydocs/www/licensing.md b/_mydocs/www/licensing.md index 5ddf9be..eb429c2 100644 --- a/_mydocs/www/licensing.md +++ b/_mydocs/www/licensing.md @@ -11,7 +11,7 @@ At SQLBI, we provide comprehensive licensing options for our video courses and s A license is to be considered a personal authorization to consume premium content, has a duration, and must be assigned to a user, even temporarily, in order to be used. Licenses are either transferable or untransferable. ## Untransferable Licenses -Untransferable licenses are licenses that can only be assigned to one person at all. You do not have to assign them to a user at the time of purchase. This is something you can do from your dashboard later on, as the license manager. This is useful if you aren't sure who needs the license just yet at the time of purchase, or if you're mixing and matching differnet amounts of different courses. +Untransferable licenses are licenses that can only be assigned to one person at all. You do not have to assign them to a user at the time of purchase. This is something you can do from your dashboard later on, as the license manager. This is useful if you aren't sure who needs the license just yet at the time of purchase, or if you're mixing and matching different amounts of different courses. One great, new feature of our untransferable licenses is that you can delegate the assignment of the licenses to the users themselves by creating an auto-enrollment link that you send out. That can represent a significant time saving for you as the license manager, if you purchase a large number of licenses and don't want to be entering everyone's details yourself. diff --git a/docs-sqlbi.code-workspace b/docs-sqlbi.code-workspace index 876a149..35b32c6 100644 --- a/docs-sqlbi.code-workspace +++ b/docs-sqlbi.code-workspace @@ -4,5 +4,24 @@ "path": "." } ], - "settings": {} + "settings": { + "cSpell.words": [ + "anonymization", + "Contoso", + "crossjoin", + "datacache", + "groupby", + "PBIX", + "SQLBI", + "subquery", + "VertiPaq", + "VPAX", + "whitespaces" + ] + }, + "extensions": { + "recommendations": [ + "streetsidesoftware.code-spell-checker" + ] + } } \ No newline at end of file