DAX For Relationships in Power BI
Hi everyone in this blog we will see the different DAX that are used to define or use the relationship between two tables. In Power BI there are two type of relationships 1. One to One (1:1) 2. One to Many (1:*) Now lets look at the DAX functions that we can use with these relationships. USERELATIONSHIP- Specifies the relationship to be used in a specific calculation as the one that exists between columnName1 and columnName2. Syntax USERELATIONSHIP(<columnName1>,<columnName2>) Where, columnName1 The name of an existing column, using standard DAX syntax and fully qualified, that usually represents the many side of the relationship to be used; if the arguments are given in reverse order the function will swap them before using them. This argument cannot be an expression. columnName2 The name of an existing column, using standard DAX syntax and fully qualified, that usually represents the one side or lookup side of the relationship to be used; if the arguments are given in reverse order the function will swap them before using them. This argument cannot be an expression. Key Point The function returns no value; the function only enables the indicated relationship for the duration of the calculation. Example = CALCULATE(SUM(ISales[SalesAmount]), USERELATIONSHIP(Sales[ShippingDate], DateTime[Date])) Limitations USERELATIONSHIP can only be used in functions that take a filter as an argument. USERELATIONSHIP cannot be used when row level security is defined for the table in which the measure is included. RELATED – Returns a related value from another table. Syntax RELATED(<column>) Where, column – The column that contains the values you want to retrieve. Key Point A single value that is related to the current row. Example FILTER( ‘Sales_USD’, RELATED(‘Territory'[TerritoryCountry])<>”United States”) RELATEDTABLE Evaluates a table expression in a context modified by the given filters. Where, tableName – The name of an existing table using standard DAX syntax. It cannot be an expression. Key Point A table of values. Example = SUMX( RELATEDTABLE(‘Sales_USD’) , [Amount_USD]) Limitation The RELATEDTETABLE function changes the context in which the data is filtered, and evaluates the expression in the new context that you specify. This function is a shortcut for CALCULATETABLE function with no logical expression. This function is not supported for use in Direct Query mode when used in calculated columns or row-level security (RLS) rules. Hope this helps.
Share Story :
Create new aggregate measurement / Entity store in D365 Finance and Operation to be consumed in Power BI report in D365 Finance and Operations
In D365 there are several option to export/Import data like Data Entities, BYOD, Aggregate measurements/Entity store. In this blog we will learn How to create entity store in D365 Finance and operations. Aggregate Measurements/Entity Stores are use to create Power Bi reports with nearly Live data where user have option to set its recurrence that is how often you want to refresh entity store there is no need to manually refresh the data as per suggested Batch job will run for respective entity stores. You can also forcefully refresh data by pressing refresh button on entity store page. So lets start with development of aggregate measurements, aggregate dimensions. Add New aggregate measurements object to the project where we required Add required attributes Add required measures Add required dimensions Add dimensions where view of dimension and aggregate measurements are different Build The Model Refresh Entity store from D365 Finance and Operation Environment Verify that respected view is created for aggregate measurement Add New aggregate measurements object to the project where we required. In this step we need to right click on new item Now select aggregate measurement and name it as per requirement in our case its “CFSAggregateMeasrure” Now assign required views in table property of the aggregate measurement as follow In my case I have selected “InventOnHandByWarehouse” view. Add required attributes Now add required attribute by right click on Attributes and assign required field in attributes as follows Add required measures After adding attributes add dimensions same how we added other attributes as follows After adding measure assign required field to it and operation which you want to perform on that field (for example. :- count, Average, etc. ) Add required dimensions By default some of the dimensions are provided like company and date which are showed in screen shot. And assign required fields in relation of dimensions Add dimensions where view of dimension and aggregate measurements are different If dimensions needs different view we need to create new aggregate dimension as follows In my case name of aggregate dimension is “CFSAggregateDimension ” Now assign required view to dimension as follows. After this create new attributes and assign fields to that attributes as follows After adding new dimension attribute if required you can assign more than one field reference as follows After this step assign fields to the respective field reference as follows. Now select the respected attribute and select its usage property and change it as key which will make it as dimensional key which will be helpful while making relations. There are 3 options under usage property description of each as follows Key If you specify usage property as “key” system will define the key of the dimension using this attribute Parent If you specify usage property as “parent” system will parent child hierarchy with this field as parent level. Regular If you specify usage property as “Regular” ,this is an attribute without any special behavior and it is default value. After setting usage property attach this dimension to our aggregate measurement by dropping required aggregate measurement on dimension section of it. Now define its dimension attribute property as follows After this you need to make relationship among the views as follows Fact Dimension If you want to make desired aggregate dimension as fact dimension go to desired dimension in aggregate measurement and make set “is fact dimension” property to yes/No as follows Build The Model After this case build the model which is used for this development of project as follows Refresh Entity store from D365 Finance and Operation Environment After successful build go to environment page’s Entity store section using following navigation System administration >> setup >> entity store and refresh the desired entity On required entity please press the refresh button You can also set schedule to refresh this entity by selecting edit button and enable its automatic refresh toggle and the set its recurrence as follows Verify that respected view is created for aggregate measurement In final step go to your VM’s SSMS and look for Axdw database in which in view section look for views with your aggregate measurement and dimension and name as follows After select query you can see the data of that view Now your entity store is ready to consume by power bi reporting service. Thank You!
Share Story :
Create and Populate Word Template Using Power Automate
Introduction: We are aware of dynamics 365 CRM’s Document template functionality. However document templates do not need XML Mapping which limit the fields that we can populate in template. SO here’s a way to use Power Automate and SharePoint and implement the Document template functionality. Steps: Create Word Template with content controls and Upload to SharePoint. Enable the Developer tab and click on Design Mode. From the available controls add the Content controls, repeating controls(For data table). Click on properties and add title, tag. Once done save the word and upload to SharePoint. In you Power Automate (You can trigger the power automate as per your requirements). Action 1: Get File Content. Site Address: your SharePoint link File Identifier: Your uploaded document template. Action2: Populate a Microsoft Word Template. Location: SharePoint Location. Document Library: Share Point Site Contents. File: Your uploaded document template. Content control: the content controls from your template will be visible here. Action 3: Create file. File Name: Should end with .docx File Content: will be the populated word template. Conclusion: Thus when your power automate runs, a Document will be created in SharePoint from the document template. It is easy to populate a Content control, to know about how to populate a repeating control- check my blog. Populate Repeating Control of Word Template using Power Automate.
Share Story :
Populate Repeating Control of Word Template using Power Automate
Introduction: Power Automate makes it easy to populate word template, we can have table (Repeating control) that can be populated using Power Automate, For information on how to create and Populate Word Template- Refer my Blog: Create and Populate Word Template Using Power Automate Steps: Create a table and add content controls for each cell. After adding content controls, select the entire row and add repeating control. In Power Automate initialize an array Variable, Use append to array action and create the table you wish to populate in the Word Template. Note: Value for the array variable will be {“title in content control properties” : “actual value”} In Action populate the word template, you will see repeating control, Change the form to accept an array input, by clicking on the symbol highlighted in below screenshot. Now Add your array as input in populate word template action. Conclusion: You can populate any of your CRM Data to Word Template by using Power Automate.
Share Story :
Import CSV file in D365 for Finance and Operation using X++
Below is a simple example for importing data from CSV file in D365 FO using X++: /// <summary> /// import color code /// </summary> class CFSImportColorCode { /// <summary> /// main /// </summary> /// <param name = “_args”>_args</param> public static void main(Args _args) { AsciiStreamIo file; Array fileLines; FileUploadTemporaryStorageResult fileUpload; CFSEcoResColorCode colorCode; CFSImportColorCode importColorCode = new CFSImportColorCode(); Counter counter = 0; EcoResColorName color; #OCCRetryCount try { //Upload a file fileUpload = File::GetFileFromUser() as FileUploadTemporaryStorageResult; file = AsciiStreamIo::constructForRead(fileUpload.openResult()); if (file) { if (file.status()) { throw error(“@SYS52680”); } file.inFieldDelimiter(‘;’); //separator file.inRecordDelimiter(‘\r\n’); } //Read a CSV File container rec; ttsbegin; while (!file.status()) { counter++; rec = file.read(); if (conLen(rec)) { color = conPeek(rec, 2); colorCode = CFSEcoResColorCode::find(color); if(!colorCode.RecId) { colorCode.clear(); colorCode.Name = color; colorCode.Code = conPeek(rec, 1); colorCode.insert(); } } } ttscommit; info(“Operation complete.”); } catch (Exception::Deadlock) { retry; } catch (Exception::UpdateConflict) { if (appl.ttsLevel() == 0) { if (xSession::currentRetryCount() >= #RetryNum) { throw Exception::UpdateConflictNotRecovered; } else { retry; } } else { throw Exception::UpdateConflict; } } } }
Share Story :
Insert Images in Canvas Power App
Introduction: In this blog we will see how to add/insert images in Canvas App. Step 1: Click on Media icon as shown below: Step 2: Select Upload -> Upload images Uploaded images will be shown under the “Images”. Step 3: Click on ellipsis -> Select Add to Canvas Output Screen: Hope this helps !
Share Story :
Custom Card in Canvas Power Apps
In this blog will see custom cards in Power Apps Use Case: I wanted to separate fields on form by label and it was looking like below: here what i am came up with add custom card on form and try adding label on the Card. Add Custom Card Select form -> Click on edit fields Click on Add a custom Card Custom card will look like this, now change the position of card and try to move it below Name field. To change the position refer this blog: After Changing the Position of card: Now change the width of Card Add Label on Card and change color or style accordingly. and now add fields on the form Here is the final Output: Conclusion: in this we way we can separate fields by adding labels on the form in Canvas Power Apps.
Share Story :
What are Short Cuts in PowerApps Portal
Introduction: Shortcuts are used to place child nodes(child links) throughout the portal’s sitemap(navigation) which simply points to other nodes that exist in your sitemap, or to URLs external to your portal. Use Case: We have two parent pages- “Hardware” and “Support”. Both are child pages of another page- “Home”. “Support” page has a child page named- “Support Create”. Let’s say we want to add the “Support Create” child page under “Hardware” in the Sitemap(navigation). Steps to create a shortcut Go to the “Portal Management” app. Go to Shortcuts Click on “+New” to create new record Enter following details on the form Attribute Details: Name: Name for the shortcut. For internal use only. Website: The website that the shortcut belongs to. Parent Page: The parent webpage of the shortcut entity in the sitemap. The shortcut will be added to the sitemap as a child of this page. External URL: URL outside of your organization. Web Page: internal webpage of the portal Web File: web file of the portal Title: The title for the shortcut. This is the name that will appear in the sitemap and child navigation view areas. If left blank, the title (or name) of the target entity will be shown instead. After adding all the details save the record Navigate to the portal to see changes you should see new child node named “Raise Support” under “Hardware” If you click on “Raise Support” it will redirect you to the “Create New Support” page NOTE: A shortcut can only have value in one of the ‘Target’ fields (External URL, Web Page, Web File). If more than one target attribute exists for a shortcut, the shortcut will just take the first one, ignoring all others. Reference Article: https://docs.microsoft.com/en-us/powerapps/maker/portals/configure/place-child-nodes
Share Story :
Create Guid In Ms Flow
Have you faced a situation where a you need to create Guid for a record while working with Power Automate?? As we all know Guid is auto generated by CRM in most cases. So in case you wan to generate a Guid using Power Automate Here is the Solution: Add compose in flow and Add guid() in expression. Output: In this way we can generate Guid in Ms flow Hope this helps !
Share Story :
How you can prevent yourself from coming into the defaulter list
In this blog we will see how you can prevent yourself from coming into the defaulter list. Lets first understand the different criteria for a user to fall in defaulter list. The follow up date of the case is less than today’s date. The day difference between last notes added and follow up date is greater than 5 days. For critical priority case notes not added after every two hours. Now since we know the criteria we can make a habit of always looking at our assigned cases either when we logged in or while logging out so that our follow up dates will not miss. As notes on the case are very important not just for the defaulter list but for clients and management to get insights of what is happening on the case, we should put notes on every action we do on the case. Hope this helps.
