User Profile
D_PBI
Post Partisan
Joined 6 years ago
User Widgets
Contributions
What visual to show timeframe of events?
Hi, I would like to ask for your suggestions on choosing a Power BI visual to show events in chronological order. I have the following columns: Event (contains values like 'Buying a laptop' or 'selling a car', etc..) Event Date (the date the event happens) Event Reference (a Event code) Event Name (a title for the Event) Event Link (a hyperlink to the Event documentation) Event Contact ID (GUID for the Event Contact) Event Contact (name of the Event Contact) Event Contact Involvement (is the Contact acting as a Buyer or Seller) My aim is for a report user to select a Event Contact GUID from a list/search box visual which will show the list of Events in chronological order for that Contact. It is this visual to use that I am asking for your suggestions on. It would be nice if the Event, at its Date point, is able to pop-up/show the Events details (like Event Name, Reference, etc.. and maybe the option to click on the Hyperlink that opens the record). Is there a Power BI visual that can achieve this? Is there a Power BI report online that presents the same that I can view to take some ideas? Thanks.119Views2likes3CommentsRe: Can I filter the 1st fact table which then filters a 2nd fact table?
kushanNa - hi again. Unfortunately, what I thought was working, isn't. May I trouble you to view the below DAX measure. It's the DAX measure I'm using to try and achieve my aim. It has slightly chanfged since your help as I needed to expand on it to incorporate my wider need. ------------------------------------------------- ------------------------------------------------- ShowRow = VAR CurrentPage = SELECTEDVALUE( 'Budget Forecast'[Column to filter through] ) VAR CurrentAAgreementPostDealManager = SELECTEDVALUE( 'Budget Forecast'[oagreement.Agreement / Post-Deal Manager] ) VAR CurrentAAgreementStatus = SELECTEDVALUE( 'Budget Forecast'[oagreement.Agreement Status] ) VAR CurrentAAgreementType = SELECTEDVALUE( 'Budget Forecast'[oagreement.Agreement Type] ) VAR CurrentOAccountType = SELECTEDVALUE( 'Budget Forecast'[oobligation.Account Type] ) VAR CurrentOType = SELECTEDVALUE( 'Budget Forecast'[oobligation.Type] ) VAR CurrentOTermType = SELECTEDVALUE( 'Budget Forecast'[oobligation.Term Type] ) VAR CurrentORStatusReason = SELECTEDVALUE( 'Budget Forecast'[oobligationreminders.Status Reason] ) VAR CurrentCCaseStatus = SELECTEDVALUE( 'Budget Forecast'[ocase.Case Status] ) VAR CurrentCCaseType = SELECTEDVALUE( 'Budget Forecast'[ocase.Case Type] ) -------------------------------------------------------------------------------------------------------- -- DETERMINE IF SLICERS HAVE BEEN FILTERED -------------------------------------------------------------------------------------------------------- VAR Is_TTOAccountType_filtered = ISFILTERED( 'TT O Account Type'[oobligation.Account Type] ) VAR Is_TTAAgreementType_filtered = ISFILTERED( 'TT A Agreement Type'[oagreement.Agreement Type] ) VAR Is_TTAAgreementPostDealManager_filtered = ISFILTERED( 'TT A Agreement / Post-Deal Manager'[oagreement.Agreement / Post-Deal Manager] ) VAR Is_TTOType_filtered = ISFILTERED( 'TT O Type'[oobligation.Type] ) VAR Is_TTORStatusReason_filtered = ISFILTERED( 'TT OR Status Reason'[oobligationreminders.Status Reason] ) --VAR Is_TTOReferenceNumber_filtered = ISFILTERED( 'TT O Reference Number'[oobligation.Reference Number] ) VAR Is_MilestonesOType_filtered = ISFILTERED( 'Milestones O Type'[oobligation.Type] ) VAR Is_MilestonesOTermType_filtered = ISFILTERED( 'Milestones O Term Type'[oobligation.Term Type] ) --VAR Is_MilestonesIsObligationEndDateNull_filtered = ISFILTERED( 'Milestones Is Obligation End Date null?'[Is Obligation End Date null?] ) VAR Is_MilestonesCCaseStatus_filtered = ISFILTERED( 'Milestones C Case Status'[ocase.Case Status] ) VAR Is_MilestonesAAgreementStatus_filtered = ISFILTERED( 'Milestones A Agreement Status'[oagreement.Agreement Status] ) --VAR Is_MilestonesOReferenceNumber_filtered = ISFILTERED( 'Milestones O Reference Number'[oobligation.Reference Number] ) VAR Is_RoyaltiesOType_filtered = ISFILTERED( 'Royalties O Type'[oobligation.Type] ) VAR Is_RoyaltiesOTermType_filtered = ISFILTERED( 'Royalties O Term Type'[oobligation.Term Type] ) VAR Is_RoyaltiesAAgreementType_filtered = ISFILTERED( 'Royalties A Agreement Type'[oagreement.Agreement Type] ) VAR Is_RoyaltiesAAgreementStatus_filtered = ISFILTERED( 'Royalties A Agreement Status'[oagreement.Agreement Status] ) VAR Is_RoyaltiesCCaseType_filtered = ISFILTERED( 'Royalties C Case Type'[ocase.Case Type] ) VAR Is_RoyaltiesAAgreementPostDealManager_filtered = ISFILTERED( 'Royalties A Agreement / Post-Deal Manager'[oagreement.Agreement / Post-Deal Manager] ) --VAR Is_RoyaltiesOReferenceNumber_filtered = ISFILTERED( 'Royalties O Reference Number'[oobligation.Reference Number] ) --VAR Is_RoyaltiesAReferenceNumber_filtered = ISFILTERED( 'Royalties A Reference Number'[oagreement.Reference Number] ) -------------------------------------------------------------------------------------------------------- -- RETURN RESULT BASED ON CURRENT PAGE CONTEXT -------------------------------------------------------------------------------------------------------- RETURN SWITCH( CurrentPage, "TT", IF( ( NOT( Is_TTOAccountType_filtered ) || CurrentOAccountType IN VALUES( 'TT O Account Type'[oobligation.Account Type] ) ) && ( NOT( Is_TTAAgreementType_filtered ) || CurrentAAgreementType IN VALUES( 'TT A Agreement Type'[oagreement.Agreement Type] ) ) && ( NOT( Is_TTAAgreementPostDealManager_filtered ) || CurrentAAgreementPostDealManager IN VALUES( 'TT A Agreement / Post-Deal Manager'[oagreement.Agreement / Post-Deal Manager] ) ) && ( NOT( Is_TTOType_filtered ) || CurrentOType IN VALUES( 'TT O Type'[oobligation.Type] ) ) && ( NOT( Is_TTORStatusReason_filtered ) || CurrentORStatusReason IN VALUES( 'TT OR Status Reason'[oobligationreminders.Status Reason] ) ), 1, 0 ), "Milestones", IF( ( NOT( Is_MilestonesOType_filtered ) || CurrentOType IN VALUES( 'Milestones O Type'[oobligation.Type] ) ) && ( NOT( Is_MilestonesOTermType_filtered ) || CurrentOTermType IN VALUES( 'Milestones O Term Type'[oobligation.Term Type] ) ) && ( NOT( Is_MilestonesCCaseStatus_filtered ) || CurrentCCaseStatus IN VALUES( 'Milestones C Case Status'[ocase.Case Status] ) ) && ( NOT( Is_MilestonesAAgreementStatus_filtered ) || CurrentAAgreementStatus IN VALUES( 'Milestones A Agreement Status'[oagreement.Agreement Status] ) ), 1, 0 ), "Royalties", IF( ( NOT( Is_RoyaltiesOType_filtered ) || CurrentOType IN VALUES( 'Royalties O Type'[oobligation.Type] ) ) && ( NOT( Is_RoyaltiesOTermType_filtered ) || CurrentOTermType IN VALUES( 'Royalties O Term Type'[oobligation.Term Type] ) ) && ( NOT( Is_RoyaltiesAAgreementType_filtered ) || CurrentAAgreementType IN VALUES( 'Royalties A Agreement Type'[oagreement.Agreement Type] ) ) && ( NOT( Is_RoyaltiesAAgreementStatus_filtered ) || CurrentAAgreementStatus IN VALUES( 'Royalties A Agreement Status'[oagreement.Agreement Status] ) ) && ( NOT( Is_RoyaltiesCCaseType_filtered ) || CurrentCCaseType IN VALUES( 'Royalties C Case Type'[ocase.Case Type] ) ) && ( NOT( Is_RoyaltiesAAgreementPostDealManager_filtered ) || CurrentAAgreementPostDealManager IN VALUES( 'Royalties A Agreement / Post-Deal Manager'[oagreement.Agreement / Post-Deal Manager] ) ), 1, 0 ), 0 ) ---------------------------------------------------------------------- ---------------------------------------------------------------------- The relationship model is below. To recap on the need. I have a TT page, a Milestones page, and a Royalties page. These separate pages have their own individual slicers - you can see this through the relationships. Each page will show the records filtered by their own slicers. All works as expected on this. I then need the head page named Budget Forecast to have a table visual that shows the filtered records from the TT, Milestones, and Royalties pages in an appended form. The fields used in this visual are taken from the Budget Forecast table. The DAX measure shown above is (intended to be) used to flag the records to show in the table visual. This is achieve by adding it to the table filter property and only showing records with 1. If absolutely no filters are applied to, say for example, the TT page then all records from the TT table should show in the Budget Forecast table. This is the same logic for the Milestones and Royalties pages. One last thing. One of the filters on the Milestones page is to include a Start Date range from the user selected start date and later, and is to include nulls too values (records that have blank dates too). I have a DAX measure that achieves this and it is below. It works on the Milestones page but it will also need to work on the Budget Forecast page for the Milestones records. ---------------------------------------------------- ---------------------------------------------------- __Milestones Obligation Start Date to show = VAR _minDate = MIN( 'Milestones O Start Date'[obligation.Start Date] ) VAR _RowsDate = MAX( 'Budget Forecast - Milestones'[obligation.Start Date] ) RETURN IF( OR( _RowsDate >= _minDate, ISBLANK( _RowsDate ) ), 1, 0 ) ------------------------------------------------------- ------------------------------------------------------- The outstanding issue is the Budget Forecast page isn't showing the filtered records. It's showing no records. For example, if I filter the TT page/table to return/show a single record, I would expect that the Budget Forecast page/table to append only that same single record from the filtered TT page. If I remove the measure flag from the filter pane, then all records show. This strikes me that the DAX measure is not flagging/assigning any records with a 1 (If I set the DAX measure flag to 1 in the filter pane then NO records are shown. If I set the DAX measure to 0 in the filter pane then ALL records are shown). If anyone can help that will be great. I'm starting to wonder if it is possible (but I still this it is). Thanks.224Views0likes0CommentsRe: Can I filter the 1st fact table which then filters a 2nd fact table?
kushanNa thank you very much for you example report. I see it working as I need. I will look to implement you method into my real-world report this coming Monday. However, and I will ask this now to save any time wastage, the example requirement I gave only included a UK Dim table filtering a UK Fact table, the same for the US side, which both Fact tables needed to filter a 'Fact World' table. Your most recent example nails this - thanks again. I wonder if your DAX approach will be suitable for my real-world report. I shall explain this real-world scnerario now (I will keep the UK and US naming going for familarity). The following dimension tables have to physical relationships: Dim UK Type{Type] >> filters >> Fact UK[Type] Dim UK Model[Model] >> filters >> Fact UK{Model] Dim UK Person[Persion] >> filters >> Fact UK[Person] Dim UK Start Date[Start Date] >> filters >> Fact UK[Start Date] (the Start Date filtering will be equal >= and to includes nulls) Dim US Type{Type] >> filters >> Fact US[Type] Dim US Start Date[Start Date] >> filters >> Fact US[Start Date] (the Start Date filtering will be equal >= and to includes nulls) Dim US End Date[End Date] >> filters >> Fact UK[End Date] (the End Date filtering will be equal <= and to exclude nulls) The Fact UK table, with the Dim UK slicers, will appear on a page named 'UK'. The Fact US table, with then Dim US slicers, will appear on a page named 'US'. The results from the filtered Fact UK table and the Fact US table must both show in the Fact World table which will be on its own page too. Taking your DAX, I'm thinking I would need to amend to be something similar to the below (The UK or US wording appearing before or after the field is interchangle when discussing - saves repositioning the text just to explain the scernaio). --------------------------------- --------------------------------- ShowRow2 = VAR UKType = ISFILTERED('Dim Type UK'[Type]) VAR UKModel = ISFILTERED('Dim Model UK'[Model]) VAR UKPerson = ISFILTERED('Dim Person UK'[Person]) VAR UKStartDate = ISFILTERED('Dim Start Date UK'[Start Date]) ------------------- VAR USType = ISFILTERED('Dim Type US'[Type]) VAR USStartDate = ISFILTERED('Dim Start Date US'[Start Date]) VAR USEndDate = ISFILTERED('Dim End Date US'[End Date]) -------------------- RETURN IF( ( NOT UKFilter && NOT USFilter ) || ( UKFilter && MAX('Fact world'[Country]) = "UK" && MAX('Fact world'[Type]) IN VALUES('Dim Type UK'[Type]) && MAX('Fact world'[Model]) IN VALUES('Dim Model UK'[Model]) && MAX('Fact world'[Person]) IN VALUES('Dim Person UK'[Person]) && OR ( MAX('Fact world'[Start Date]) >= 'Dim Start Date UK'[Start Date]), ISBLANK(MAX('Fact world'[Start Date]) ) ) ) || ( USFilter && MAX('Fact world'[Country]) = "US" && MAX('Fact world'[Type]) IN VALUES('Dim Type US'[Type]) && OR ( MAX('Fact world'[Start Date]) >= 'Dim Start Date US'[Start Date]), ISBLANK(MAX('Fact world'[Start Date])) ) ) && OR ( MAX('Fact world'[End Date]) >= 'Dim End Date US'[End Date]), NOT( ISBLANK(MAX('Fact world'[End Date]))) ) ) ), 1, 0 ) ----------------------------- ----------------------------- Would this work? Would you be king enough to provide an example with my full need working? Thank you again.679Views0likes0CommentsRe: Can I filter the 1st fact table which then filters a 2nd fact table?
kushanNa - many thanks for taking the time to produce a mock-up report. It's most helpful of you. However, it isn't working as required. I'll provide more clarity below. When configuring your version so the UK Type is filtered to Plastic alone. The UK (fact) table show only Plastic records - which is correct. The US (fact) shows all records - which is correct. However, the Word (fact) table is also filtered to show Plastic records from both fact tables - this isn't correct/wanted. If the US Type filter is not filtered, then I would expect the Word (fact) table to only show Plastic records from the UK (fact) table. When configuring your version so the US Type is filtered to Metal and Wood. The US (fact) table shows only Metal and Wood records - which is correct. The UK (fact) shows all records - which is correct. However, the Word (fact) table is also filtered to show Metal and Wood records from both fact tables - this isn't correct/wanted. If the UK Type filter is not filtered, then I would expect the Word (fact) table to only show Metal and Wood records from the US (fact) table. When configuring your version so the UK Type is filtered to Plastic, and the US Type filter is filtered to Metal and Wood. The UK (fact) table shows only Plastic records - which is correct. The US (fact) shows only Metal and Wood records - which is correct. However, the Word (fact) table shows no records - this isn't correct/wanted. The Word (fact) table should show the Plastic records from the UK (fact) table and the Metal and Wood records from the US (fact) table. How do I achieve this? Please can you amend your report so it reflects me aim? Many thanks.894Views0likes1CommentRe: Can I filter the 1st fact table which then filters a 2nd fact table?
kushanNa - thanks for replying. I've tried your filter suggestion and it still doesn't work as intended. In fact, the Fact World doesn't alter in any way. I'm using a work laptop and I don't have the means to create a Google Drive or One Drive account on it (not yet anyway) so can't upload. What I'm trying to achieve, I think, is a simple request but for some reason it isn't working. Would you, anyone, mind creating a dummy report using my screenshots in the opening post to mimic my dummy report and post it on here for me to download. I should then be able to review and see why mine isn't working. Thanks.1.2KViews0likes3CommentsTraining course recommendation on learning Natural Language to SQL within SQL Server?
Hi (I hope this is a suitable forum), We currently get our insights through Power BI (PBI) accessing data within SQL Server. Producing thsese reports/insights is labour intensive. With the introduction of AI, I've been tasked to find our if we are able to write questions (in Natural Language) of our data (held within SQL Server) and have the answers returned. If this is possible then it may negate the need for PBI reports to be generated to achieve the same insights. I have no understanding of AI at present. My gut is telling me the data model will have to be specific and very descriptive, and then we'd have to rely on customers (end-users) asking their questions in a regimented way - all challenges. I've been reading various online articles on the subject but each article, it seems, recommends different software and I'm gaining no momentum. Therefore, I am here to ask if you can advise on any training courses that would take me from a complete novice to someone who can, either, get the aim working or is equipped to advise it wouldn't work with our setup. We are a Microsoft (MS) house (SQL Server, Dynamics, etc...) and all in Azure. Any training material should follow using MS technologies otherwise the I.T. dept may put a blocker on it. Your suggestions will be most welcome. Thanks.Solved1.5KViews3likes6Comments
Data Privacy
Microsoft Fabric Community and Privacy
To learn more about how we manage your data, please review the Microsoft Fabric Community Data Privacy guide.