Home Personal
Category:

Personal

Can you believe how amazing and hectic March has been?! So many community members got to experience some major conferences all next to each other. We had the MVP Summit, SQLBits, and the first ever Microsoft Fabric Conference! And, I had the chance to participate in all three! THANKS to the virtual option for MVP Summit. It made it all possible.

SQL Bits

SQLBits is seriously the best conference ever. In the community keynote, Chris Webb said, “I’ll go until I physically can’t anymore,” and that’s the truth. It’s a bunch of people who love the same stuff, all super hyped to learn, meet new folks, and share ideas. You leave SQLBits feeling inspired and pumped up. I’ve been going since 2012, and I’m not leaving anytime soon!

Sessions:

Did a couple of sessions at SQLBits. The first one was “One Dataset and Three Uses Cases with Microsoft Fabric”, but honestly, the title needs work. I’m definitely going to change it up next time. But the session went great; I got picked to present and had a packed room. I got some fantastic feedback, too! Basically, I showed how I used open data to look at different stuff in MS Fabric and why you’d pick one thing over another. I learned a lot making this session, TBH.
Here are the slides and demos: https://bit.ly/48F2sDF

I also did a beginner session on notebooks. We discussed what Power BI devs do and then talked about Python and Semantic Links. It looks like I can’t help but talk about Semantic links in every Fabric Session. But seriously, I had a blast creating this session and learned a lot about Notebooks in Fabric. Slides – https://infinitydataanalytics-my.sharepoint.com/:f:/g/personal/prathy_infinitydataanalytics_co_uk/En5UqnRjnvVIvJqGtMw50AkBGKUxtGSXwQHDwZKokU5zeg?e=8NGQe5

Awesome SQLBits Party:

It was an aviation theme, and even though I initially wanted to dress like a cloud, I ended up opting to be a first class passenger which needed less effort. It was a blast! I had so much fun with my team members and it felt like a much-needed break. I always love introducing the awesome Guy in a Cube guys to new community members and making their wow moments 🙂

My Favorite Moments:

Meeting my SSIS guru in person after so many years was definitely the highlight of the conference for me. I can’t remember if I’ve met him before, but reconnecting with Jamie Thomson and chatting with him was a pleasure. I think I read every single blog post he wrote about SSIS a long time ago! Obviously hosting London Fabric UG at Bits has to be special. I love how my little thought of starting a user group evolved into this beautiful community. 

Microsoft fabric Conference 2024

WOW, where can I start? First of all, thanks to Rie and Kelly for coordinating with us to participate in this community conference and for being such kind hosts. Huge shoutout to Avanade for supporting me on this, especially to Alan G, Ian M, and Jackie S for their help.

Session:

To make my life a tiny bit more complex, I decided to do a different session at the Fabric Conference. The good thing was I co-presented with Aaron. CoPresenting is always tricky, especially if you don’t know the speaker well. But I think our session was excellent. We used a collaborative approach and it was great, and I’m happy we got excellent feedback on our flow and presentation. Returning to the session, it was about OneLake – Empowering Data Platforms with Microsoft OneLake. Honestly, until the day before, I was learning things about OneLake and security. I remember sitting in the Speaker room with Arthi and other One Lake team discussing how different personas could securely access the data in One Lake. I learned a lot, and it was a great session.

Slides – Link to slides

Overall Conference

Congratulations to the entire team who were part of it, and I honestly didn’t envy the Fabric team. They were always engaged; it could be Partners evening, Keynote, sessions, booth, Ask the Experts or Power Hour. I love how they engaged with passion. 4000+ people under one roof, I feel lucky to have been a part of it as an MVP, speaker, partner, and attendee. Meeting people from all over the world (including my global team!) was so cool. But above all, what stood out to me was how kind and collaborative everyone was. The Microsoft Fabric Team is seriously inspiring, and I feel blessed to have connected with such amazing folks. PS I was in keynote video along with many other community members. Always nice to see yourself on big screen, especially when lighting is in favour 🙂

Beyond Conferences

Conferences give you a chance to explore beyond the airport and hotel room. I have always been sceptical about Vegas, and as I anticipated, I am not a huge fan of big casinos and hotels. But the conference centre was great, and some parts of Vegas were significant. I also managed to tick an item off my bucket list by going to the Grand Canyon.I love seeing these Amazing natural formations; I think it just makes me feel more grounded.

The delay of my first connecting flight made the trip memorable, which resulted in United Airlines rerouting my journey. This gave me the opportunity to catch my sister by surprise at her home, and her reaction will always remain priceless in my heart.

 

Reflecting on these conferences today in the middle of the night with jet lag makes me realize how much they pushed me out of my comfort zone. Even though the sessions were stressful because of the new concepts they introduced, I left feeling like I had learned a lot. Seeing all the successful and inspiring people there encouraged me to reflect on my own blogging journey once again. 

Until we meet again 🙂

0 comment
0 FacebookTwitterPinterestEmail

A colleague of mine came to me with an interesting use case, “ Switch between a summarized value or selected value with multiple legends”. For example, I have five countries and their GDP values. When the end user goes to the report, the user would like to see the average GDP of all countries, but when the user selects single or multiple countries on the slicers, the line chart should show only selected values. Like below:

Default view
Selected view

There are multiple ways to achieve this; some are more elegant than others.

Layering visuals

First, I create two DAX measures to show values based on selection.

All avg =
VAR V1 = CALCULATE(COUNTROWS(VALUES('Table'[Country])),ALLSELECTED('Table'[Country]))
VAR V2 = CALCULATE(COUNTROWS(VALUES('Table'[Country])),ALL('Table'[Country]))
Return
if(
v1=V2,CALCULATE(AVERAGE('owid-energy-data'[Value]),ALL('Table'[Country])))
selected avg =
VAR V1 = CALCULATE(COUNTROWS(VALUES('Table'[Country])),ALLSELECTED('Table'[Country]))
VAR V2 = CALCULATE(COUNTROWS(VALUES('Table'[Country])),ALL('Table'[Country]))
Return
if(
v1=V2
,BLANK()
,AVERAGE('owid-energy-data'[Value])
)

Then I create two line charts, using the year on the X-axis and one of these measures on the Y-axis. Enable Legend on Visual, where I am using the “selected avg” measure.

Create two other measures for Titles:

Title All =
VAR V1 = CALCULATE(COUNTROWS(VALUES('Table'[Country])),ALLSELECTED('Table'[Country]))
VAR V2 = CALCULATE(COUNTROWS(VALUES('Table'[Country])),ALL('Table'[Country]))
Return
if(
v1=V2,"Average of all countries")

Title Selected =
VAR V1 = CALCULATE(COUNTROWS(VALUES('Table'[Country])),ALLSELECTED('Table'[Country]))
VAR V2 = CALCULATE(COUNTROWS(VALUES('Table'[Country])),ALL('Table'[Country]))
Return
if(
v1<>V2,"showing selected average")

Update respective visuals titles with conditional formatting

Make a few more changes, like disabling Axis titles and making more line charts of the same size. Here I have not updated Min and max axis, but sometimes that needs to be addressed based on data.

Then I get below viz. It nicely shows, Average value by default, and when the user chooses a country, it shows the selected country value.

One main issue with this approach is I can only see tooltips of the top visual. The same goes for all other “More options” of the visual.

Using a single measure

Another approach is to, instead of layering, use one measure to switch between average and selected values.

I create a new measure

Dynamic Avg =
VAR V1 = CALCULATE(COUNTROWS(VALUES('Table'[Country])),ALLSELECTED('Table'[Country]))
VAR V2 = CALCULATE(COUNTROWS(VALUES('Table'[Country])),ALL('Table'[Country]))
Return
if(
v1=V2,[All avg],[selected avg])

Also, create a new Title measure

Title =
VAR V1 = CALCULATE(COUNTROWS(VALUES('Table'[Country])),ALLSELECTED('Table'[Country]))
VAR V2 = CALCULATE(COUNTROWS(VALUES('Table'[Country])),ALL('Table'[Country]))
VAR SelctedCountries = CONCATENATEX(VALUES('Table'[Country]),[Country],",")
Return
if(
v1=V2,"Average of all countries", IF(
COUNTROWS(values('Table'[Country]))=1, "GDP value of "& SelctedCountries&" ",
"GDP values of countries "& SelctedCountries&" "))

This enables the end user to view the average as the default and select value based on slicer selection.

But for User Experience, we need a legend to show what slicer has been selected, and things change as soon as we enable legend. Legend is enabled even when the average is displayed, and it causes confusion for the end user.

Instead of enabling legend, we may enable axis titles, but again for average, it automatically chooses a country based on sort order. This approach is good as long as you don’t want a legend.

Alternative to legend

The following approach is to find an alternative to legend. Instead of showing a legend, I make a copy of the visual, convert it into a tree map, and use it as a legend. Same logic as I blogged here – https://prathy.com/2022/06/using-tree-map-as-legend-on-a-page-in-power-bi/

Make a few more changes. Instead of using the Title on the Line chart, add a text box and show the Title. Group all three visuals and backgrounds to give the illusion of a single visual.

When a user lands on this page, it shows the average GDP value by default. When a value is selected in the slicer, it shows only that country. For usability, I have enough signifiers like Title and legend colour.

I hope this inspires someone out there. Until next time
Prathy 🙂

1 comment
1 FacebookTwitterPinterestEmail

In one of the projects I was working on, I received feedback saying it is hard to understand how many items they have selected in a slicer, and it is not the first time I came across this. It is a valid point, especially when you have quite a few items in a slicer, you use a search bar to look for items, you select a couple, but you were not sure how many were selected.

Obviously, there are many solutions to one problem. I have seen many reports displaying custom labels to handle this situation. Still, after some research for a better UX, I found this example on the dribble, which looked like an excellent design method.

shot.gif (800×600) (dribbble.com)

And 

And doing this in 

 

The logic here, I will use a DAX measure to figure out how many items are selected and count those Items to display in an object. I can display this many ways, but I went for a Shape. Having shape allows me to use a shape type as a background; I can use a dynamic DAX expression to show the value. The only thing to note is, my DAX expression has to be a string type. Hence, I created my measure like below. Next is the slicer visual. By default, I enabled the slicer header and used an empty character as text in the slicer header. If I keep the slicer header off, whenever I hover over a slicer, it jumps down/up to make more options visible. If I keep the slicer header on, that won’t be an issue. The only way to have the slicer header off with no title and no tooltip to display is by using Empty Character. So, I used an empty character as the title for the slicer header. Then I went to change the title to DAX measure. And then I grouped altogether, slicer and the shape. Now when I select multiple items, it nicely shows how many items were selected. When none is selected, it shows all the items available in the slicer. In this example, I don’t have many values, so a nice round shape works but based on several results, I may go for different Shape types and keep my shape. But to make it work perfectly, I mean to make this shape to show the right number irrespective of other visuals cross-filtering can be a tiring job. One way is to make all the rest of the visuals do not interact with this shape. That can be time-consuming when you have a lot of objects on a page. The other way to handle this is by creating a new table and creating a relationship. So, in this example, I have Artists and their Total streams. I am using Artist in my slicer. When I select an Artist in another visual, by default, my measure also gets filters. If I create another table with a distinct Artist use that in my slicer, and use that column to count, and in all other visuals, I use the Artist from a different table; then I get the result I want.1. Created an Artist table2. Create a relationship between my streams table and Artist table3. Update my slicer to get Artist names from Artist table4. Update measure to get Artist name from Artist table now. Cross-filtering doesn’t impact the value I’m showing. I hope this inspires someone out there.

4 comments
2 FacebookTwitterPinterestEmail
POWER BI MOBILE REPORTING

Steadily more users are getting interested in Power BI mobile reports, especially when you design reports for executives; they are more interested in mobile view, of course, they do want to explore the detail data but not always.  Until recently, I was someone who doesn’t pay much attention to mobile reporting unless the user explicitly asks for one. So, when I don’t create a layout for mobile when the user opens the report using Mobile App, it automatically opens the report in landscape mode. Which is fine but it’s not designed for that purpose, it misses the sleek look.

Creating a mobile report is pretty easy in Power BI but creating a good one is not that easy. In this blog post, I want to show how I approach mobile reports in Power BI.

Few things to note before we look into mobile reports:

First of all how to design a mobile report; docs has an excellent explanation including considerations here – https://docs.microsoft.com/en-us/power-bi/desktop-create-phone-report

then a few factors to highlight:

  • You can only use visible visuals which are available on a report page
  • Power BI background images won’t auto fit for mobile layout
  • You can not overlay visuals

By considering above let’s see how we can design a proper Power BI mobile report:

To start, I have a Power BI Model with the below report page. In this page, I used page backgrounds, default paper colour with a background image with a fit layout.

Users can view this report correctly in mobile in landscape mode. However; there is a lot of detail in this report, so I want to show only a few visuals in the mobile layout.

Few other things to consider, I am using a dark background, so as I blogged here – #POWERBI FOCUS MODE AND DARK BACKGROUND IMAGES, I am not able to see most of my visuals correctly in the focus mode or mobile view. Next, in my desktop layout, I am using a beautiful grid layout which makes my report look tidy. However, when it comes to mobile design, I am losing the grid layout.

So creating a report based on existing visuals is pretty straightforward. However, it feels not right. To make it beautiful, we need to find a few workarounds.

  • Background

I am a huge fan of background images but if you need to create mobile layouts then probably it’s good to not to use them if they are not working for mobile design. Instead, use visual backgrounds and Titles with backgrounds.

  • Separators

It always makes sense to separate the visuals, with a sensible gap or a line. I like to separate visuals with a thin line but while you are working with mobile reporting every bit of space is essential and probably, having dedicated space for a line is not great. Notably, the line takes like three cells. With the latest PBI desktop, we get a blank gap between each visual in Mobile Layout. But in the older versions, all visuals were attached. ( I don’t know since when we are getting this separator, but it’s excellent! It’s was not there before)

  • Visual Backgrounds

Visual backgrounds come handy when you don’t want to use separators. Having visuals with different background colour next to each kind of gets separated because of diverse backgrounds. But these won’t look great in the desktop/web view.

  • Visual Borders

One way we can get away with the same background which looks nice on both mobile and web layout is by using borders. We can use the border as background, so you don’t see the border in the desktop/web layout but will see them in the mobile report.

  • Overlay of visuals

Or another way is having two visuals of same overlayed one on the other. One to use in Mobile layout and others to use in desktop/web layout. This works significant but, it can impact on the performance. Remember the more visuals we have more time it takes to load the report. (Hopefully one day, I will blog about debugging a report). Overlaying visuals is excellent, but when it comes to slicers, they may not work exactly the way we want. But we can use Sync Slicers advanced options and get away with it as I blogged here – SYNC SLICERS & SYNC SLICERS ADVANCED OPTIONS

Lets’ see how we can use the above workarounds with our example.

For the same report page we saw earlier, I updated all backgrounds of the visuals to the same as a report background image I was using. Now the mobile layout looks a tiny bit better. As I mentioned earlier, with the latest release, we do get a nice gap between all visuals. So, now my mobile layout looks a lot better by just placing all visuals and titles, like below:

It already looks great, but if we want to make it better, we can try overlaying visuals.  For example, slicers; checkboxes are not significant to tap in the mobile screen. So, I can duplicate that slicer and change the orientation to horizontal, hide it behind the same slicer and put these two slicers in the same Sync slicers group like below. Now, in my mobile view, I can use a horizontal slicer, in web layout checkbox. Because they are in the same group, when the user changes the mobile orientation, visuals still make sense.

Next, the wide table, Instead of showing those many values, I want to show a few with multi-row card visual. Used the same method, created another visual with fewer attributes and hidden that under the table.

And now my mobile report looks a lot better and more readable. when I change the orientation, I can see detail view and in the mobile layout, I can see fewer rows.

In summary, don’t ignore mobile viewers while designing a report page. Few simple changes help to design excellent mobile reports. Hope it gave some inspiration.

Until next time,

Prathy 🙂

1 comment
2 FacebookTwitterPinterestEmail
Dynamically update Offset value for API calls using Power BI:

If you are a Power BI user group organiser, then it’s kind of obligatory to create a Power BI dashboard on Meet up data. Like many, I thought I would create a Power BI template for London PUG Power BI Meet Up (That’s another blog post!). However, pulling data from API services is never fun. When I started importing data from Meet Up API, at first it was seamless; quite quickly I pulled members data from London PUG Meetup site. Not far after that, I realised, I only had 200 members. I increased Page value to 1500, but still, still, I could see only 200 rows. After a bit of searching, I found this forum – https://stackoverflow.com/questions/35121504/get-more-than-200-group-members-from-the-meetup-api  .

Based on this, I could get only 200 results.  So I need to find a way to call the API with a dynamic offset value using Power Query. The total number of Offset value depends upon the page size and number of members. So first I need to find the total number of members in London PUG Meetup Group then calculate how many offsets I needed. Like any other language, there are many ways I could do this but I decided to go for List.generate() function.

Dynamically update Offset value for API calls using Power BI:

I read so many nice things about M function List.Generate(), but I don’t think I have ever used it properly. There are some really nice blog posts explaining list.Generate() function functionality. These are my favourite: PowerPivotPro, DataChant, Excel Inside and Excelando. If you want to understand the function, these blog posts are a good place to start. What I am showing in this blog post is to show how we can use this with API. Very similar to what they mentioned in their blog posts just a different data source, but I kinda have to write this post so I can remember for my reference.

Here is the M code I used :

let
    URL = "https://api.meetup.com/"&MeetupID&"/members?&sign=true&photo-host=public&page=200&offset=",

    //Get total number of memebers
    TotalNumber = let
                    Source = Json.Document(Web.Contents("https://api.meetup.com/2/members?&sign=true&photo-host=public&group_urlname=London-PUG&key=" & APIKey)),
                    #"meta" = Source[meta],
                    #"Converted to Table" = Record.ToTable(#"meta"),
                    #"Filtered Rows" = Table.SelectRows(#"Converted to Table", each ([Name] = "total_count")),
                    Value = #"Filtered Rows"{0}[Value]
                in
                Value,

    //Find number of calls and Round up
    APICalls = Number.RoundUp(TotalNumber /200),

    //List.Generate - To create the dynamic URL 
    LG=List.Select(List.Generate(
                        ()=>[i=-1,newURL = null], 
                        each [i] <= APICalls,
                        each [i=[i]+1,newURL=URL & Number.ToText(i)&"&Key="&APIKey],
                        each try CallAPIURL([newURL]) otherwise null
            ), each _ <> null),

    
    #"Converted to Table" = Table.FromList(LG, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Expanded Column1" = Table.ExpandListColumn(#"Converted to Table", "Column1"),
    #"Expanded Column2" = Table.ExpandRecordColumn(#"Expanded Column1", "Column1", {"id", "name", "status", "joined", "city", "country", "localized_country_name", "state", "lat", "lon", "photo", "group_profile", "bio"}, {"id", "name", "status", "joined", "city", "country", "localized_country_name", "state", "lat", "lon", "photo", "group_profile", "bio"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Expanded Column2",{{"joined", Int64.Type}}),

    //Added custom column to update UNIX date time to normal date format
    #"Added Custom" = Table.AddColumn(#"Changed Type", "DateJoined", each #datetime(1970, 1, 1, 0, 0, 0) + #duration(0, 0, 0,[joined]/1000)),

    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"joined"}),
    #"Expanded photo" = Table.ExpandRecordColumn(#"Removed Columns", "photo", {"id", "highres_link", "photo_link", "thumb_link", "type", "base_url"}, {"photo.id", "photo.highres_link", "photo.photo_link", "photo.thumb_link", "photo.type", "photo.base_url"}),
    #"Expanded group_profile" = Table.ExpandRecordColumn(#"Expanded photo", "group_profile", {"role", "intro"}, {"group_profile.role", "group_profile.intro"})
in
    #"Expanded group_profile"

I created two Parameters, one for MeetupID and another one for API Key. Then I kind of used a subquery to find TotalMembers. I divided the Total number with 200 to calculate the number of API calls I needed. After that List.Generate() handles all the hard work.

It’s not only Meetup API, there are many API services which use filters like pages and offset, and List.Generate() works pretty well.

Prathy 🙂

 

 

3 comments
0 FacebookTwitterPinterestEmail

A few years ago when I was searching for a free dimensional modelling tool, through some forum; I saw this fantastic Dimensional Modelling tool.  I thought I was the only one who doesn’t know about this workbook, but surprisingly many others are not familiar with this tool. It is not new; it’s been there for ages. It was something created as a resource than a tool, so buggy 🙁 Let me not over complicate this by calling a tool; it just a super simple Excel workbook with macros.

You can download the file from Kimball Group website. As Kimball Group explains, it has the annotated data model. With the above link, you can download a zipped file which has a blank model and a pre-populated model with the detailed explanation of each sheet. It is already very well documented. There are few changes I have made to file, so it works for me. Here I am just going to show, how I used it and how it could be so useful in our day to day BI development world and what are the changes I made (So I can remember my changes for next use 😉 )

As a BI Developer, our work progresses through different stages. Once we have requirements ready, next step is to create that perfect model, well it will never be perfect. Most of the times model changes a lot. But making sure we document the changes and make our fellow developers happy could be a difficult task. Not every project will have lush of a data modeller, developer gets involved in modelling many times, that’s when Kimball Modelling Spread Sheets comes handy

Kimball Modelling Tool:

In simple words, this workbook helps us to generate scripts to create the database for the data warehouse. We give all the properties of the database in the workbook and use a macro to generate the script based on the given properties. I am going to walk through by taking MDWToolkit_Datamodel_4.0_2008R2 Blank as an example. Let’s create a simple Product dimension and Sales Fact Table using this workbook.

2016-10-24_09-22-13_02.jpg

First three sheets (Home, ReadMe and ChangeLog) in the file has credits, notes and some useful information about the database we are going to create. I prefer to delete ReadMe and Change Log sheets and create my Notes and Versions sheets.

Home sheet is where we give Database name and schema name for views. I created a copy of Blank dimension and Blank Fact which already have dummy rows populated. Each sheet has four categories.

2016-10-24_21-33-24.jpg

1 – where we give the target table information

 

2 – Column Information

 

3- Target Table Columns information

 

4 – Souce Table columns Information

Workbook already includes notes. However, I would like to highlight few properties/options which I consider useful.

Table Display Name – It used for views, such as here my Table name DimProducts. Apparently Dim does not make sense to business users, so whatever I gave in Display name will become view name, and I am going to use views in my CUBE.

BizFilterLogic – Very useful when we have table level filter which we need to use while extracting data from your source in the ETL

GenerateScript – Y / N, Yes mean include this table in the script, and N mean do not

Column Display Name – Again same as Table display name used in the view creation script.

Column Display Folder – Display folder of the column, this is excellent for Folder option in SSAS CUBE. This feature could be used to exclude columns from auto generated view.  N.B. In the pre-populated model, it has value Exclude From The CUBE, but the underlined code only prohibits columns which have value exclude. So either change the macro code or alter the value in the cell.

Column Description – Great way to explain what the value of each column means. It is very nice to have a very documented database so that it would not be a black box

ETL Rules – Again another convenient option, this enables ETL developers to understand what exactly needed for a particular column. I use this column more like, if there is a filter or anything you want to filter at the source I put them under BizFilter or Table level comments and transformations I wanted to do inside SSIS will go under ETL Rules. 

All Source Fields – All these fields could be  a bit overwhelming or can be very useful. It depends on the type of data warehouse you are creating. If it is a single source than yeah, this is very helpful, but if you have several sources, then I don’t think this can be very handy. However, I like source field name, because if we have power users who are already familiar with source column names but we renamed that column with friendly names, then you can use this column as a tool tip or just for documentation purpose.

That all, by clicking Generate script button from the home sheet, we can create entire database design script. If you look at database, table and column properties, we can see extended properties at all levels

2016-10-26_01-26-09.jpg

The downloadable from Kimball site does not include extended properties for views and does not let you create the view when your table schema does not default to dbo. Description extended property do not get populated. I updated few bits of VB with my very little knowledge of VB Script. For example, adding extended properties for views which will enable us to sync descriptions using BIDS Helper. I think, so far in my life, I used VB only when I worked with this workbook, that’s why I need this blog post, so I don’t need to remember it.

Once we done with creating our original database using the workbook, you can import the database into SSDT.  You may ask, why don’t we just create in SSDT? Of course, we can, but editing in Excel is a lot easier than editing in SSDT. We can use SSDT Schema compare functionality to merge changes quite easily.  Now we have a very well-populated database

2016-10-26_01-44-20

Once all done we can quite easily create an interactive data dictionary using your favourite reporting tool.

2016-10-26_02-13-30

So if you are a consultant who works on several data warehouse projects, then this can be very helpful. You create your model one time and data dictionary, documentation, etc. For next project are all there, you just have to refresh your existing SSRS or power BI model for the data dictionary. You will know where to look when you are creating ETL or CUBE using change log sheet. You can even put more business logic in the spread sheet or whatever you want. This is better than creating several pages of Pdf document, which no one ever read.  If you are good with VB, not like me; then you can extend it much more and look into some of these known issues…

Known Issues:

  • If you want to create a foreign key to a column, and if that table does not have default schema; then the script macro created will not work
  • If you chose the first column to exclude in the view, it would anyway include it, just because that’s how macro designed.

Workbook with all the changes I have made can be download from here – https://1drv.ms/x/s!Avm7gbgZtlMlpjENQrWZX-lpoEl9. Hope it is useful, let me know what you think?

Prathy ?

2 comments
0 FacebookTwitterPinterestEmail

October 1st, 2016, 03:00 PM. I was in our car with my family on our way to Harveys and email notification pop up while I was doing something on my mobile. Instantly with a bundle of a laugh, I was yelling OMG OMG OMG; I could feel tears in my eyes, and my family looks at me like “what’s wrong with her ;)”

Fast Forward >>

untitled-4

Thank you everyone, who nominated and congratulated me. It is nice to see congratulations from individuals who I admire a lot. There are so many people I want to thank, not because I got the MVP award, it’s because I am here in this position doing what I love and feeling proud of myself for just because of their influence. Long ago, I remember telling my colleagues in a daily scrum that one day I will become an MVP, that time I don’t even know who gets the MVP award, but I was following some great MVP’s. When I compare myself with the MVP’s I admire, I feel like I don’t deserve this award.

But this award is an answer to so many situations I have been. First of all, the guilty of being away from my daughter. Parenting is an amazing thing; it doesn’t come with a manual; saying what to do and what not. But I am sure that there are so many parents who sometimes felt guilty about not fulfilling their wishes. There is no such thing as work-life balance, it is very unlikely and doing these extra community activities is much more challenging. I really appreciate every individual who put their efforts towards community sharing their knowledge different ways. It is great to see Microsoft recognising them. I am saying it is not easy, but at the same time, it is something I enjoyed greatly in the recent years. However, I thank my family especially my daughter for letting me do everything I do. While I was preparing for #TechDaysOnline, she was not allowing my husband to talk to me and asked him to cook so I can focus on my work. Thank you 🙂 I also want to thank my husband Ravi and Divya for everything.

Next, comes SQLFamily, I actually kind of like calling SQLFriends than SQLFamily. There are soooooo many people I want to thank. Many inspired me, and there are some who introduced me to speaking life, encouraged me and guided me. I am not gonna name each here, but if they read this, they will know. Thank you 🙂

And Thank you Microsoft. Getting this award is like a pat on the back. I come from a non-English speaking background. I did my schooling in my native language; I started learning English alphabets when I was ten yrs. When I came to the UK for my masters, I was too scared to talk to a Job Centre Plus person on the phone. Now to be in a position to speak in front of many people, I am very proud of myself. This award feels like a reward for all the effort. At this moment I feel Awesome, I thank you every single person who helped me to be here plus huge special thanks to Microsoft and lovely people at Microsoft. I am thrilled, honoured and humbled 🙂

Thank you!

If you have come this far, thank you for reading 🙂

Prathy

2 comments
0 FacebookTwitterPinterestEmail