Monday, January 17, 2011

DAX Time Intelligence Functions

Time intelligence functions are an advanced feature of DAX. They are typically composite functions built on top of other more basic DAX features and have more stringent requirements for the structure of the underlying database. But since time related calculations are fundamental to almost all BI projects, early adopters of DAX started using the time intelligence functions almost immediately after the first release of DAX. Due to the advanced nature of these functions, questions naturally arise about how they work and why they work that way even when people managed to get the desired results.
Marius Dumitru, architect of AS engine team, gave the following recipe to users of time intelligence functions.
1.            Never use the datetime column from the fact table in time functions.
2.            Always create a separate Time table with contiguous dates (i.e. without missing day gaps in the date values).
3.            Create relationships between fact tables and the Time table.
4.            Make sure that relationships are based on a datetime column (and NOT based on another artificial key column).
5.            Make sure you have full years’ worth of data in the Time table. For instance, even though your transaction table may only have sales data up to May 2010, the Time table should have dates up to December 2010 (same goes for fiscal years).
6.            The datetime column in the Time table should be at day granularity (without fractions of a day).
In this post, I’ll expose more details behind the implementation of time intelligence functions to shed light on the rationale behind Marius’ advice. This post is meant to supplement online documentation of SQL Server 2008 R2. I will not cover basic usage examples of time intelligence functions in typical BI applications. DAX is a young functional language that evolves rapidly. What is covered here applies to SQL Server 2008 R2.
I assume you are already familiar with advanced DAX concepts such as row context, filter context, Calculate function, Values function, measures, etc. I’ll start with some common features across all time intelligence functions before I delve into individual functions.
The <dates> argument
All time intelligence functions have a special <dates> argument. FirstNonBlank and LastNonBlank operate on non-date/time columns but the conversion rules descibed below still apply. With the exception of DatesBetween and DatesInPeriod, the <dates> argument can be one of three forms:
1.       A reference to a date/time column.
2.       A table expression that returns a single column of date/time values.
3.       A boolean expression that defines a single-column table of date/time values.
Internally, all three forms are converted to a DAX table expression in the following fashion:
Format number
<dates> format
Internal table expression
1
T[C]
CalculateTable(Values(T[C]))
2
Single column table expression
As is
3
Well-formed scalar expression
Filter(All(T[C]), <scalar expression>)


What is a well-formed scalar expression? Vaguely speaking, it is a scalar expression that DAX engine can analyze and extract a fully qualified column reference to a date/time column. T[C] = Date(2011, 1, 17) is a well-formed expression as DAX engine can extract T[C] from it. T[C] * 2 is a well-formed expression for the same reason even though it is not a boolean expression DAX engine will cast it to boolean data type implicitly. Date(2011, 1, 17) is not a well-formed scalar expression as no column reference can be extracted from it.
Note that internally inserted CalculateTable in the first format automatically converts current row contexts to filter contexts. So
MaxX(Distinct(DimDate[CalendarYear]), OpeningBalanceYear([m], DimDate[Datekey]))
will give the maximum opening balance among all years, but
                MaxX(Distinct(DimDate[CalendarYear]), OpeningBalanceYear([m], Values(DimDate[Datekey])))
will not as the <dates> argument is in the second format hence not correlated to the current calendar year on the row context.
A special rule regarding datetime filter inside Calculate/CalculateTable
If a Calculate filter has a unique column that is of data type date/time, all previous filters on all columns from the table which contains this date/time column are removed. This hacky feature implies that
                Calculate(<expression>, <TI function>) = Calculate(<expression>, <TI function>, All(DateTable)).
This is the reason behind Marius’ recommendation #4. Let’s say you have some years on the pivot-table row and then you drag a measure which uses time-intelligence function DateAdd to show sales from the previous year. The author of the measure formula may not realize that DateAdd function only returns a single column of Datekey which overwrites existing filter on the same column. This special rule makes sure that the filter on the CalendarYear column, which comes from the pivot-table, is also removed so you get back the expected result. Without this special rule, Calculate(<expression>, <TI function>) would set days of the previous year on the Datekey column but leave the previous year as the filter on the CalendarYear column. The conflicting filters would have produced a blank result.
In PowerPivot v1, the only way to mark a column as unique is to create an incoming relationship to this column, hence Marius’ recommendation #3. You obviously also need a separate Date table in order to create a relationship.
In practice, people want to use integer keys to create relationship between Fact table and Date table. If you want to use time intelligence functions in that case, you must add All(DateTable) filter yourself to the measure expression.
In future versions of PowerPivot, users may be able to mark a date/time column as unique without creating an incoming relationship to the column. When that happens, recommendation #3 would no longer be needed.
Calendar
DAX engine creates an internal calendar data structure for each date/time column used in the time intelligence functions. The calendar contains a hierarchy of year-quarter-month-day. The minimum year and the maximum year in the calendar are determined by the actual dates in the date/time column. Internally, intermediate results are represented as arrays of days. So to represent January 2011, intermediate result would hold the 31 days in that month. Although a calendar contains all days in the years involved, it marks which days actually exist in the column. Calendar member functions return result days only if they are marked as exists. So if you have missing dates in the date/time column, they cannot be returned as a result of time intelligence functions.
When a calendar data structure is initially populated, it raises an error if two values from the date/time column correspond to the same day. So if you have a date/time column below the day granularity, it cannot be used in time intelligence functions.
Obviously calendar is an internal implementation detail which is subject to change in future releases of DAX. I mention it here to explain some of the limitations imposed on the current version of time intelligence functions. I’ll refer to calendar again when I discuss individual functions next.
Primitive time intelligence functions
As I mentioned at the beginning of the post, time intelligence functions are an advanced feature of DAX. They are built on top of other DAX features and functions, so there is nothing primitive about them. But many time-intelligence functions are composed from more basic time-intelligence functions which have their native implementations, I call the latter primitive ones.
FirstDate/LastDate/StartOfMonth/EndOfMonth/StartOfQuarter/EndOfQuarter/StartOfYear/EndOfYear return a table of a single column and a single row. They can be used anywhere a table expression or a scalar expression is needed due to implicit table to scalar cast.
As I described in the section on the <dates> argument, no matter which format the user uses, internally they are all converted to a table expression. From now on I will use <dates table> to denote the table expression equivalent to <dates>. I will use DimDate[Datekey] or simply [Datekey] to denote the date/time column extracted from <dates> expression.
FirstDate(<dates>)
LastDate(<dates>)
These two functions return a single column, single row table with values equivalent to
                MinX(<dates table>, [Datekey]), or
                MaxX(<dates table>, [Datekey]).
FirstNonBlank(<column>, <expression>)
LastNonBlank(<column>, <expression>)
These two functions are not pure time-intelligence functions as the first argument is not limited to <dates> as in all other time-intelligence functions. They are internally rewritten as
                Top1(Filter(<column table>, Not(IsBlank(<expression>)), [column]), and
                Bottom1(Filter(<column table>, Not(IsBlank(<expression>)), [column]) respectively.
Top1 and Bottom1 are internal functions similar to MinX and MaxX functions but support all DAX data types include boolean and string data types.
Note that <expression> is not automatically wrapped in Calculate, therefore,
                FirstNonBlank(DimDate[Datekey], Sum(FactSales[SalesAmount]))
does not give you what you want, but
                FirstNonBlank(DimDate[Datekey], Calculate(Sum(FactSales[SalesAmount])))
will produce the expected result.
StartOfMonth(<dates>)
StartOfQuarter(<dates>)
StartOfYear(<dates>, <year_end_date>)
Although not implemented this way, these functions first find FirstDate(<dates>), then jump to first day that exists in the same month/quarter/year.
EndOfMonth(<dates>)
EndOfQuarter(<dates>)
EndOfYear(<dates>, <year_end_date>)
Although not implemented this way, these functions first find LastDate(<dates>), then jump to the last day that exists in the same month/quarter/year.
DateAdd(<dates>, <number_of_intervals>, <interval>)
ParallelPeriod(<dates>, <number_of_intervals>, <interval>)
SamePeriodLastYear(<dates>)
SamePeriodLastYear(<dates>) is identical to DateAdd(<dates>, -1, Year).
Both DateAdd and ParallelPeriod invoke a function, Move, on the calendar object. The only difference is that ParallelPeriod requires the result days to fill an entire month/quarter/year, while DateAdd does not have this requirement.
Currently, DateAdd has a limitation that <dates table> must contain continuous days so that the result days can be continuous too.  We have this limitation because when you move all 28 days in February one month forward, like below,
                DateAdd(filter(All(DimDate[Datekey]), Year([Datekey]) = 2006 && Month([Datekey]) = 2), 1, Month)
you get back 31 days in March! As we mentioned in the section about Calendar, all intermediate results of time intelligence functions are represented as an array of days. So there is no difference between all days in February and February itself. But what if you have one day missing in the middle of February? Should we return one day missing in March or 27 days in March? This seems to be a tricky but less important question, so we left it undecided and raised an error instead.
The calendar object’s Move function is the most intelligent part of all time intelligence functions. It knows that moving both 3/30 and 3/31 one month forward end up on the same day 4/30. Internally it only moves by number of days or months, number of quarters or years is simply translated to corresponding number of months. Sometimes the Move function can be too smart for the user. When it moves a continuous range of days forward N months, it checks the start day and the end day of the range to see if you are moving whole months or just individual days. This works well when all days exist in the date/time column. But if you have missing days, the Move logic still tries to guess whether you are moving whole months based on days that exist, this may not be what you would expect, hence Marius’ recommendation #2.
DatesBetween(<dates>, <start_date>, <end_date>)
DatesInPeriod(<dates>, <start_date>, <number_of_intervals>, <interval>)
These two functions are different from the other time intelligence functions in that the <dates> argument can only be a fully-qualified column reference to a date/time column. Note that online document incorrectly states that the <dates> argument in DatesInPeriod can be any of the three formats.
Internally, both functions are rewritten as
                Filter(All(DimDate[Datekey]), DatesRange([Datekey], Earlier(<start_date>), Earlier(<end_date>))) or
                Filter(All(DimDate[Datekey]), DatesRange([Datekey], Earlier(<start_date>, Earlier(<number_of_intervals>), <interval>))
In the formulas above, Earlier is an internal extended version of the public Earlier function that evaluates an entire DAX expression by skipping the last row context. DatesRange is an internal boolean function that returns true if the value of the first argument falls within an interval. In case of DatesRange(<date_value>, <start_date>, <end_date>), the interval is defined as [start_date, end_date]. In case of DatesRange(<date_value>, <start_date>, <number_of_intervals>, <interval>), the interval is defined as [start_date, end_date) where end_date is calculated by calling the Move function on the calendar object, so it is a smart moveJ Note that since <number_of_intervals> can be a negative number, like when you move backwards in time, the interval specified by DatesInPeriod can be in the reverse order. DatesBetween does not allow reversed end points.
Also note that All(DimDate[Datekey]) implies that existing filter context does not apply to the date/time column, unlike when all other time intelligence functions use the name-pair syntax.
PreviousDay(<dates>)
PreviousMonth(<dates>)
PreviousQuarter(<dates>)
PreviousYear(<dates>, <year_end_date>)
Although not implemented this way, these function are equivalent to
FirstDate(DateAdd(<dates>, -1, Day)) in case of PreviousDay, or
DatesInPeriod(
<dates>,
StartOfMonth/StartOfQuarter/StartOfYear(
DateAdd(<dates>, -1, Month/Quarter/Year)
),
1,
Month/Quarter/Year
) in case of PreviousMonth/PreviousQuarter/PreviousYear.
NextDay(<dates>)
NextMonth(<dates>)
NextQuarter(<dates>)
NextYear(<dates>, <year_end_date>)
Although not implemented this way, these functions are equivalent to
LastDate(DateAdd(<dates>, 1, Day)) in case of NextDay, or
DatesInPeriod(
<dates>,
EndOfMonth/EndOfQuarter/EndOfYear(
DateAdd(<dates>, 1, Month/Quarter/Year)
),
-1,
Month/Quarter/Year
) in case NextMonth/NextQuarter/NextYear.

Composite time intelligence functions
The remaining time intelligence functions listed below are always internally rewritten using other time intelligence function.
DatesMTD(<dates>)
                DatesBetween(<dates>, StartOfMonth(LastDate(<dates>)), LastDate(<dates>))
DatesQTD(<dates>)
                DatesBetween(<dates>, StartOfQuarter(LastDate(<dates>)), LastDate(<dates>))
DatesYTD(<dates>, <year_end_date>)
                DatesBetween(<dates>, StartOfYear(LastDate(<dates>), <year_end_date>), LastDate(<dates>))
TotalMTD(<expression>, <dates>, <filter>)
                Calculate(<expression>, DatesMTD(<dates>), <filter>)
TotalQTD(<expression>, <dates>, <filter>)
                Calculate(<expression>, DatesQTD(<dates>), <filter>)
TotalYTD(<expression>, <dates>, <filter>, <year_end_date>)
                Calculate(<expression>, DatesYTD(<dates>, <year_end_date>), <filter>)           

OpeningBalanceMonth(<expression>, <dates>, <filter>)
                Calculate(<expression>, PreviousDay(StartOfMonth(<dates>)), filter)
OpeningBalanceQuarter(<expression>, <dates>, <filter>)
                Calculate(<expression>, PreviousDay(StartOfQuarter(<dates>)), filter)
OpeningBalanceYear(<expression>, <dates>, <filter>, <year_end_date>)
                Calculate(<expression>, PreviousDay(StartOfYear(<dates>, <year_end_date>)), filter)

ClosingBalanceMonth(<expression>, <dates>, <filter>)
                Calculate(<expression>, EndOfMonth(<dates>), <filter>)
ClosingBalanceQuarter(<expression>, <dates>, <filter>)
                Calculate(<expression>, EndOfQuarter(<dates>), <filter>)
ClosingBalanceYear(<expression>, <dates>, <filter>, <year_end_date>)
                Calculate(<expression>, EndOfYear(<dates>, <year_end_date>), <filter>)

546 comments:

  1. attractive piece of information, I had come to know about your blog from my friend arjun, ahmedabad,i have read atleast eleven posts of yours by now, and let me tell you, your website gives the best and the most interesting information. This is just the kind of information that i had been looking for, i'm already your rss reader now and i would regularly watch out for the new posts, once again hats off to you! Thanks a lot once again, Regards, Single Row Function


    ReplyDelete
  2. Thanks for sharing this wonderful article on database which helped me a lot and i guess i will implementing in my Big Data Hadoop Training in Chennai

    ReplyDelete
  3. Nice blog, here I had an opportunity to learn something new in my interested domain.
    Hadoop training chennai
    I have an expectation about your future post so please keep updates.

    ReplyDelete
  4. Nice article i was really impressed by seeing this article, it was very interesting and it is very useful for Learners..
    AWS Training in chennai | AWS Training chennai | AWS course in chennai

    ReplyDelete
  5. Thanks for sharing this valuable information to our vision. You have posted a trust worthy blog keep sharing.
    VMWare course chennai | VMWare certification in chennai | VMWare certification chennai


    ReplyDelete
  6. Thanks for the notes that you have published here. Though it looks familiar, it's a very good approach you have implemented here. Thanks for posting content in your blog. I feel awesome to be here.

    Cloud computing course in Chennai
    Cloud computing training chennai
    hadoop training in chennai

    ReplyDelete

  7. This technical post helps me to improve my skills set, thanks for this wonder article I expect your upcoming blog, so keep sharing..
    Regards,
    Best Informatica Training In Chennai|Informatica training center in Chennai

    ReplyDelete
  8. Looking for real-time training institue.Get details now may if share this link visit Oracle Training in chennai ,

    ReplyDelete
  9. I was looking about the Oracle Training in Chennai for something like this ,
    Thank you for posting the great content..I found it quiet interesting, hopefully you will keep posting such blogs…
    Greens Technologies In Chennai

    ReplyDelete
  10. if learned in this site.what are the tools using in sql server environment and in warehousing have the solution thank .. Msbi training In Chennai

    ReplyDelete

  11. I have read your blog and I got very useful and knowledgeable information from your blog. It’s really a very nice article Spring training In Chennai

    ReplyDelete
  12. fantastic presentation .We are charging very competitive in the market which helps to bring more Microstrategy professionals into this market. may update this blog . Microstrategy training In Chennai

    ReplyDelete
  13. Whatever we gathered information from the blogs, we should implement that in practically then only we can understand that exact thing clearly,
    but it’s no need to do it, because you have explained the concepts very well. It was crystal clear, keep sharing..
    Websphere Training in Chennai

    ReplyDelete
  14. This information is impressive; I am inspired with your post writing style & how continuously you describe this topic. After reading your post, thanks for taking the time to discuss this, I feel happy about it and I love learning more about this topic..
    Informatica Training in chennai | QTP Training in Chennai



    ReplyDelete
  15. This information is impressive..I am inspired with your post writing style & how continuously you describe this topic. After reading your post, thanks for taking the

    time to discuss this, I feel happy about it and I love learning more about this topic..
    Dataguard Training In Chennai

    ReplyDelete
  16. Truely a very good article on how to handle the future technology. This content creates a new hope and inspiration within me. Thanks for sharing article like this. The way you have stated everything above is quite awesome. Keep blogging like this. Thanks :)

    Software testing training in chennai | Testing courses in chennai | Software testing course

    ReplyDelete
  17. Thanks for posting such a interesting blog and it is really informative. If you are interested in taking java as a professional carrier visit this website.JAVA Training in Chennai

    ReplyDelete
  18. Thanks for this article, Managing a business data is not an easy thing, it is very complex process to handle the corporate information both Hadoop and cognos doing this in a easy manner with help of business software suite, thanks for sharing this useful post….
    Fita Chennai reviews
    Hadoop Training in Chennai
    Big Data Training in Chennai

    ReplyDelete
  19. Oracle database management system is a very secure and reliable platform for storing database and secured information.Due its reliable and trustworthy factor oracle DBA is famous all around the globe and is prefered by many large MNC which are using database management system.
    oracle training in Chennai | oracle dba training in chennai | oracle training institutes in chennai

    ReplyDelete
  20. Database means to maintain and organize all the files in a systematic format where the data can be easily accessible when needed.
    Oracle DBA training in chennai | Oracle training in chennai | Oracle course in Chennai

    ReplyDelete
  21. Nice concept. I like your post. Thanks for sharing.

    Primavera Training in Kuwait

    ReplyDelete

  22. Well Said, you have furnished the right information that will be useful to anyone at all time. Thanks for sharing your Ideas.
    digital marketing course in Chennai | digital marketing training in Chennai

    ReplyDelete
  23. Yes in this particular example adding a date column works as you’ve mentioned.
    However if the table to join be something else (not date dimension) then fetching the key through Power Query would be the way to go. R Programming Training | DataStage Training | SQL Training | SAS Training | Android Training | SharePoint Training

    ReplyDelete
  24. Nice concept. I like your post. Thanks for sharing.
    MQ training in chennai

    ReplyDelete
  25. Thanks for posting such a interesting blog and it is really informative.
    SOAP UI training in chennai

    ReplyDelete
  26. Thanks for sharing this information and keep updating us. This is more informatics and it really helped me to know the Hadoop developing.
    Hadoop Training in Chennai
    Big Data Training in Chennai
    Hadoop Training Chennai


    ReplyDelete
  27. GREEN WOMEN HOSTELGreen Women hostel is one of the leading Ladies hostel in Adyar and we serving an excellent service to Staying people, We create a home atmosphere, it is the best place for Working WomenOur hostel Surrounded around bus depot, hospital, atm, bank, medical Shop & 24 hours Security Facility



    ReplyDelete
  28. Really it was an awesome article...very interesting to read..You have provided an nice article....Thanks for sharing..
    Web Design Company
    Web Development Company

    ReplyDelete
  29. Great post!I am actually getting ready to across this information,i am very happy to this commands.Also great blog here with all of the valuable information you have.Well done,its a great knowledge.
    SQL Server Training in Chennai

    ReplyDelete

  30. I wondered upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I’ll be subscribing to your feed and I hope you post again soon.
    iOS App Development Company

    ReplyDelete
  31. This comment has been removed by the author.

    ReplyDelete
  32. Your posts is really helpful for me.Thanks for your wonderful post.It is really very helpful for us and I have gathered some important information from this blog. so keep sharing..
    SEO Company in Chennai | SEO Services in Chennai

    ReplyDelete
  33. This comment has been removed by the author.

    ReplyDelete
  34. This comment has been removed by the author.

    ReplyDelete
  35. Thanks a lot very much for the high quality and results-oriented help. I won’t think twice to endorse your blog post to anybody who wants and needs support about this area.
    Best Java Training Institute Chennai

    ReplyDelete
  36. Thank you again for all the knowledge you distribute,Good post. I was very interested in the article, it's quite inspiring I should admit. sap abap online training india

    ReplyDelete
  37. This was an nice and amazing and the given contents were very useful and the precision has given here is good.
    Selenium Training Institute in Chennai

    ReplyDelete
  38. تیک بان خرید بلیط هواپیماخرید اینترنتی بلیط هواپیمابلیط هواپیما آنلاین, تیک بان نه ادعا می کند که بزرگترین است که مدعی می شود یک سایت معتبر سایت خرید بلیط هواپیما در ایران است که توانسته بدون هیاهو و تبلیغات الکی سهمی درخور از مشتریان وفادار داشته باشد

    ReplyDelete
  39. Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.

    Data Science Training in Chennai
    Data science training in bangalore
    Data science online training
    Data science training in pune
    Data science training in kalyan nagar

    ReplyDelete
  40. This comment has been removed by the author.

    ReplyDelete
  41. This comment has been removed by the author.

    ReplyDelete
  42. Thanks for sharing nice article. This is Very Informative Article we get a lot of Information from this genuinely esteem your collaboration keep it up and keep composing such edifying article

    ac service ambattur

    ReplyDelete

  43. This is most informative and also this post most user friendly and super navigation to all posts... Thank you so much for giving this information to me.. 

    angularjs Training in online

    angularjs Training in bangalore

    angularjs Training in bangalore

    angularjs Training in btm

    ReplyDelete
  44. Inspiring writings and I greatly admired what you have to say , I hope you continue to provide new ideas for us all and greetings success always for you..Keep update more information..

    angularjs Training in online

    angularjs Training in bangalore

    angularjs Training in bangalore

    angularjs Training in btm

    ReplyDelete
  45. Some us know all relating to the compelling medium you present powerful steps on this blog and therefore strongly encourage contribution from other ones on this subject while our own child is truly discovering a great deal. Have fun with the remaining portion of the year.
    python online training
    python training course in chennai
    python training in jayanagar

    ReplyDelete
  46. Greetings. I know this is somewhat off-topic, but I was wondering if you knew where I could get a captcha plugin for my comment form? I’m using the same blog platform like yours, and I’m having difficulty finding one? Thanks a lot.


    Amazon Web Services Training in Pune | Best AWS Training in Pune

    AWS Online Training | Online AWS Certification Course - Gangboard

    ReplyDelete
  47. This is a good post. This post give truly quality information. I’m definitely going to look into it. Really very useful tips are provided here. thank you so much. Keep up the good works.
    Angularjs Training in Chennai
    Angularjs Training Chennai
    Angularjs courses in Chennai
    Angular Training in Chennai
    Best Angularjs training in chennai
    Angular 6 training in Chennai

    ReplyDelete
  48. I prefer to study this kind of material. Nicely written information in this post, the quality of content is fine and the conclusion is lovely. Things are very open and intensely clear explanation of issues
    python training in pune
    python training institute in chennai
    python training in Bangalore

    ReplyDelete
  49. Existing without the answers to the difficulties you’ve sorted out through this guide is a critical case, as well as the kind which could have badly affected my entire career if I had not discovered your website.
    industrial course in chennai

    ReplyDelete
  50. It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful to me...


    Selenium online Training | Selenium Training in Pune | Selenium Training in Bangalore

    ReplyDelete
  51. We are Offerining DevOps Training in Bangalore,Chennai, Pune using Class Room. myTectra offers Live Online DevOps Training Globally

    ReplyDelete
  52. Nice post. By reading your blog, i get inspired and this provides some useful information. Thank you for posting this exclusive post for our vision. 

    angularjs Training in chennai
    angularjs Training in chennai

    angularjs-Training in tambaram

    angularjs-Training in sholinganallur

    angularjs-Training in velachery

    ReplyDelete
  53. You have provided a nice article, Thank you very much for this one. And I hope this will be useful for many people. And I am waiting for your next post keep on updating these kinds of knowledgeable things
    RPA Training in Chennai
    Selenium Training in Chennai
    RPA course
    Robotic Process Automation Certification
    Selenium Courses in Chennai
    Selenium training Chennai

    ReplyDelete
  54. Have you been thinking about the power sources and the tiles whom use blocks I wanted to thank you for this great read!! I definitely enjoyed every little bit of it and I have you bookmarked to check out the new stuff you post
    python course in pune | python course in chennai | python course in Bangalore

    ReplyDelete
  55. This is most informative and also this post most user friendly and super navigation to all posts... Thank you so much for giving this information to me.. 
    Online DevOps Certification Course - Gangboard

    ReplyDelete
  56. Thanks for such a great article here. I was searching for something like this for quite a long time and at last I’ve found it on your blog. It was definitely interesting for me to read about their market situation nowadays. please follow our article. android quiz questions and answers | android code best practices | android development for beginners | future of android development 2018 | android device manager location history

    ReplyDelete
  57. Thank you for sharing such great information with us. I really appreciate everything that you’ve done here and am glad to know that you really care about the world that we live in

    Data Science Training in Indira nagar
    Data Science training in marathahalli
    Data Science Interview questions and answers

    ReplyDelete
  58. Thanks first of all for the useful info.
    the idea in this article is quite different and innovative please update more.
    AWS Certification Training in Bangalore
    AWS Training in Mogappair
    AWS Training in Amjikarai

    ReplyDelete
  59. And indeed, I’m just always astounded concerning the remarkable things served by you. Some four facts on this page are undeniably the most effective I’ve had.
    industrial course in chennai

    ReplyDelete
  60. Great Article… I love to read your articles because your writing style is too good, its is very very helpful for all of us and I never get bored while reading your article because, they are becomes a more and more interesting from the starting lines until the end.
    angularjs Training in bangalore

    angularjs Training in bangalore

    angularjs Training in chennai

    automation anywhere online Training

    angularjs interview questions and answers

    ReplyDelete
  61. Good job! Fruitful article. I like this very much. It is very useful for my research. It shows your interest in this topic very well. I hope you will post some more information about the software. Please keep sharing!!
    SEO Training Center in Chennai
    SEO Institutes in Chennai
    SEO Course Chennai
    Best digital marketing course in chennai
    Digital marketing course chennai
    Digital Marketing Training Institutes in Chennai

    ReplyDelete
  62. Those guidelines additionally worked to become a good way to recognize that other people online have the identical fervor like mine to grasp great deal more around this condition.
    iosh course in chennai

    ReplyDelete
  63. Thanks for sharing with us and please add more information's.

    Guest posting sites
    Education

    ReplyDelete
  64. I have gone through your blog, it was very much useful for me and because of your blog, and also I gained much unknown information, the way you have clearly explained is really fantastic. Kindly post more like this, Thank You.
    airport ground staff training courses in chennai
    airport ground staff training in chennai
    ground staff training in chennai

    ReplyDelete
  65. Good job!you were given an interesting and innovative information's. I like the way of expressing your ideas and i assure that it will make the readers more enjoyable while reading.
    Cloud Computing Training in Perambur
    Cloud Computing Training in Mogappair
    Cloud Computing Training in Saidapet
    Cloud Computing Training in Ashok Nagar
    Cloud Computing Training in Navalur
    Cloud Computing Training in Karapakkam

    ReplyDelete
  66. Actually i am searching information on AWS on internet. Just saw your blog on AWS and feeling very happy becauase i got all the information of AWS in a single blog. Not only the full information about AWS but the quality of data you provided about AWS is very good. The person who is looking for the quality information about AWS , its very helpful for that person.Thank you for sharing such a wonderful information on AWS .
    Thanks and Regards,
    aws solution architect training in chennai
    best aws training in chennai
    best aws training institute in chennai
    best aws training center in chennai
    aws best training institutes in chennai
    aws certification training in chennai
    aws training in velachery

    ReplyDelete
  67. Actually i am searching information on AWS on internet. Just saw your blog on AWS and feeling very happy becauase i got all the information of AWS in a single blog. Not only the full information about AWS but the quality of data you provided about AWS is very good. The person who is looking for the quality information about AWS , its very helpful for that person.Thank you for sharing such a wonderful information on AWS .
    Thanks and Regards,
    aws solution architect training in chennai
    best aws training in chennai
    best aws training institute in chennai
    best aws training center in chennai
    aws best training institutes in chennai
    aws certification training in chennai
    aws training in velachery

    ReplyDelete
  68. Really this is a good information. I reallly appreciate your work . The information you have given is awesome thnak you for sharing the information.

    Regards
    Katherine

    ReplyDelete
  69. Thank you so much for your information,its very useful and helful to me.Keep updating and sharing. Thank you.
    RPA training in chennai | UiPath training in chennai

    ReplyDelete
  70. Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work.

    machine learning training center in chennai
    machine learning course in Chennai
    Android training in velachery

    PMP training in chennai

    ReplyDelete
  71. Hi, Thanks a lot for your explanation which is really nice. I have read all your posts here. It is amazing!!!
    Keeps the users interest in the website, and keep on sharing more, To know more about our service:
    Please free to call us @ +91 9884412301 / 9600112302

    Openstack course training in Chennai | best Openstack course in Chennai | best Openstack certification training in Chennai | Openstack certification course in Chennai | openstack training in chennai omr | openstack training in chennai velachery

    ReplyDelete
  72. Very interesting content which helps me to get the indepth knowledge about the technology. To know more details about the course visit this website.
    Digital Marketing Training in Chennai
    JAVA Training in Chennai
    core Java training in chennai

    ReplyDelete
  73. Thanks for sharing this information and keep updating us.

    web design company chennai

    ReplyDelete
  74. Very nice post here thanks for it .I always like and such a super contents of these post.Excellent and very cool idea and great content of different kinds of the valuable information's.

    machine learning training center in Chennai
    machine learning training in velachery
    machine learning certification course in Chennai
    Android training in chennai
    PMP training in chennai

    ReplyDelete
  75. Learned a lot from your blog. Good creation and hats off to the creativity of your mind. Share more like this.
    Loadrunner Training in Chennai
    French Classes in Chennai
    JAVA Training in Chennai
    selenium certification in chennai

    ReplyDelete
  76. This comment has been removed by the author.

    ReplyDelete
  77. Superb. I really enjoyed very much with this article here. Really it is an amazing article I had ever read. I hope it will help a lot for all. Thank you so much for this amazing posts and please keep update like this excellent article.thank you for sharing such a great blog with us. expecting for your.
    PHP Training in Chennai
    web designing course in chennai
    JAVA Training in Chennai
    Hadoop Training in Chennai
    Selenium Training in Chennai
    German Classes in chennai
    PHP Training in Chennai
    PHP Training in Adyar

    ReplyDelete
  78. Thanks for such a great article here. I was searching for something like this for quite a long time and at last, I’ve found it on your blog. It was definitely interesting for me to read about their market situation nowadays.angularjs best training center in chennai | angularjs training in velachery | angularjs training in chennai | best angularjs training institute in chennai

    ReplyDelete
  79. This is the exact information I am been searching for, Thanks for sharing the required infos with the clear update and required points. To appreciate this I like to share some useful information regarding Microsoft Azure which is latest and newest,

    Regards,
    Ramya

    Azure Training in Chennai
    Azure Training Center in Chennai
    Best Azure Training in Chennai
    Azure Devops Training in Chenna
    Azure Training Institute in Chennai
    Azure Training in Chennai OMR
    Azure Training in Chennai Velachery
    Azure Online Training
    Azure Training in Chennai Credo Systemz

    ReplyDelete

  80. Hello, I read your blog occasionally, and I own a similar one, and I was just wondering if you get a lot of spam remarks? If so how do you stop it, any plugin or anything you can advise? I get so much lately it’s driving me insane, so any assistance is very much appreciated.
    Android Course Training in Chennai | Best Android Training in Chennai
    Selenium Course Training in Chennai | Best Selenium Training in chennai
    Devops Course Training in Chennai | Best Devops Training in Chennai

    ReplyDelete
  81. Thank you so much for your information,its very useful and helpful to me.Keep updating and sharing. Thank you.
    Selenium Training in Chennai | SeleniumTraining Institute in Chennai

    ReplyDelete
  82. Enjoyed your approach to explaining how it works, hope to see more blog posts from you. thank you!

    Guest posting sites
    Education

    ReplyDelete
  83. This post is really nice and pretty good maintained.
    R Programming Training in Chennai

    ReplyDelete
  84. This comment has been removed by the author.

    ReplyDelete
  85. It has been simply incredibly generous with you to provide openly what exactly many individuals would’ve marketed for an eBook to end up making some cash for their end, primarily given that you could have tried it in the event you wanted.
    Data Science Training in Chennai | Data Science Course in Chennai
    Python Course in Chennai | Python Training Course Institutes in Chennai
    RPA Training in Chennai | RPA Training in Chennai
    Digital Marketing Course in Chennai | Best Digital Marketing Training in Chennai

    ReplyDelete
  86. Let’s see some awesome features which could have caused that it is so popular. If you are also a QuickBooks user and wants to find out more concerning this software you may turn to the QuickBooks Customer Service Number. Work from Anywhere: Since QuickBooks Enterprise works with every OS then it'll make the work easier for the users. They are able to use QuickBooks Enterprise anywhere any time.

    ReplyDelete
  87. great and nice blog thanks sharing..I just want to say that all the information you have given here is awesome...Thank you very much for this one.

    MySql DBA Interview Questions and Answers

    MySql Interview Questions and Answers

    ReplyDelete
  88. It is really very helpful for us and I have gathered some important information from this blog.

    PHP Interview Questions and Answers


    Power BI Interview Questions and Answers

    ReplyDelete
  89. I think things like this are really interesting. I absolutely love to find unique places like this. It really looks super creepy though!!
    Check out : big data hadoop training cost in chennai | hadoop training in Chennai | best bigdata hadoop training in chennai | best hadoop certification in Chennai

    ReplyDelete
  90. Outstanding blog thanks for sharing such wonderful blog with us ,after long time came across such knowlegeble blog. keep sharing such informative blog with us.
    hadoop training in chennai cost
    hadoop certification training in chennai
    big data hadoop course in chennai with placement
    big data training in chennai

    ReplyDelete
  91. Thank you for sharing useful information.

    Bleap Digital marketing agency Chennai

    ReplyDelete
  92. QuickBooks Payroll Support Phone Number could be the toll-free quantity of where our skilled, experienced and responsible team are available 24*7 at your service.

    ReplyDelete
  93. Outstanding blog thanks for sharing such wonderful blog with us ,after long time came across such knowlegeble blog. keep sharing such informative blog with us.

    big data hadoop training in chennai | big data training and placement in chennai | big data certification in chennai

    ReplyDelete
  94. The experts at our QuickBooks Enterprise Support Phone Number have the required experience and expertise to manage all issues pertaining to the functionality for the QuickBooks Enterprise.

    ReplyDelete
  95. Such a very useful article about time functions. Very interesting to read this article. I would like to thank you for the efforts you had made for writing this awesome article.


    Data Science Courses Bangalore

    ReplyDelete
  96. We've got many businessmen who burn up our QuickBooks Enterprise Support Number service. It is possible to come in order to find the ideal service for your requirements.

    ReplyDelete
  97. Just saying thanks will not just be sufficient, for the fantastic lucidity in your writing. I will instantly grab your rss feed to stay informed of any updates.

    Data Science Course

    ReplyDelete
  98. I found Hubwit as a transparent s ite, a social hub which is a conglomerate of Buyers and Sellers who are ready to offer online digital consultancy at decent cost.
    python training in bangalore

    ReplyDelete
  99. Really appreciate this wonderful post that you have provided for us.Great site and a great topic as well i really get amazed to read this. Its really good.
    date analytics certification training courses
    data science courses training
    data analytics certification courses in Bangalore

    ReplyDelete
  100. We plan to give you the immediate support by our well- masterly technicians. A group of QuickBooks tech Support dedicated professionals is invariably accessible to suit your needs so as to arranged all of your problems in an attempt that you’ll be able to do your projects while not hampering the productivity.
    visit : https://www.customersupportnumber247.com/

    ReplyDelete
  101. Avail our QuickBooks Tech Support Phone Number available twenty-four hours a day to solve any QuickBooks related issues instantly.

    ReplyDelete
  102. QuickBooks Tech Support Phone Number troubleshooting team can help you in eradicating the errors which will pop-up quite often. There is common conditions that are encountered on daily basis by QuickBooks users.

    ReplyDelete
  103. It Will Makes Your Bank Account Job Easy And Most Important, It Isn't Complicated, And Yes It Is A Fact. QuickBooks Tech Support Number Is Certainly One The Most Consistent Enterprise Software, Its Recent Version QuickBooks Enterprise 2018.

    ReplyDelete
  104. QuickBooks Payroll Tech Support Number helps you in calculating the complete soon add up to be paid to a worker depending through to the number of hours he/she has contributed in their work. The amazing feature with this application is direct deposit which may be done any time 1 day.

    ReplyDelete
  105. Outstanding blog thanks for sharing such wonderful blog with us ,after long time came across such knowlegeble blog. keep sharing such informative blog with us.

    Check out : big data training in chennai chennai tamilnadu | big data hadoop training in velachery | big data training in velachery | big data hadoop interview quesions and answers pdf| mapreduce interview questions

    ReplyDelete
  106. We QuickBooks Technical Support Number, are leading tech support team provider for all of your QuickBooks related issues. Either it is day or night, we provide hassle-free technical support for QuickBooks and its particular associated software in minimum possible time.

    ReplyDelete
  107. You ought not worries, if you are facing trouble using your software you will end up just a call away to your solution. Reach us at QuickBooks Customer Service Number at and experience our efficient tech support team of numerous your software related issues.

    ReplyDelete
  108. Intuit Online Payroll exports transactions to QuickBooks Payroll Support Number Desktop in addition to Quickbooks Online as standalone software.

    ReplyDelete
  109. Quickbooks Customer QuickBooks Suppor serving a number of users daily , quite possible you will definitely hand up or need to watch for long time in order to connect with all the Help Desk team .

    ReplyDelete
  110. As QuickBooks Support Phone Nummber has various industry versions such as retail, manufacturing & wholesale, general contractor, general business, Non-profit & Professional Services, there clearly was innumerous errors that may make your task quite troublesome. At QuickBooks Support, you will discover solution each and every issue that bothers your projects and creates hindrance in running your company smoothly. Our team is oftentimes willing to allow you to when using the best support services you could feasibly ever experience.

    ReplyDelete
  111. In certain updates and new introductions, QuickBooks keeps enhancing the buyer experience by offering them more facilities than before. Payroll is amongst the important the various components of accounting, therefore the QuickBooks leaves no stone unturned in making it more & more easier for users. There are numerous payroll options made available due to the online kind of QuickBooks varying upon the need of accounting professionals and subscription plans. Quickbooks Support as well provides all possible help with the users to utilize it optimally. An individual who keeps connection with experts is able to realize about the latest updates.

    ReplyDelete

  112. An astounding web diary I visit this blog, it's inconceivably magnificent. Strangely, in this current blog's substance made point of fact and sensible. The substance of information is instructive.

    Regrds,

    cloud computing courses in chennai | advanced java training institute in chennai | best j2ee training in chennai

    ReplyDelete
  113. QuickBooks has played a very important role in redefining how you look at things now. QuickBooks Payroll Phone Number By introducing so many versions namely Pro, Premier, Enterprise, Accountant, Payroll, POS etc.

    ReplyDelete
  114. Stuck in a few basic issue? Will likely not think twice to offer us a call at QuickBooks Support Phone Number
    Since quantity of issues are enormous on occasion, they might seem very basic to you personally so when an effect might make you're taking backseat and you may not ask for every help. Let’s update you aided by the indisputable fact that this matter is immensely faced by our customers. Do not worry most likely and e mail us at our Support For QuickBooks. Our customer service executives are particularly customer-friendly helping to make certain that our customers are pleased about our services.

    ReplyDelete
  115. This QuickBooks Error Code 3371 can occur while the users try running the program after the reconfiguration of these systems happens to be carried out. The application is more essentially susceptible to the QuickBooks error 3371 when the hard disk is cloned.

    ReplyDelete
  116. Call our QuickBooks Enhanced Payroll Support Phone Number to aid telephone number to be able to speak to our certified team of professional QuickBooks experts and know your options.

    ReplyDelete
  117. QuickBooks Support Telephone Number Is Here to assist ease Your Accounting Struggle QuickBooks Enterprise provides end-to end business accounting experience. With feature packed tools and features

    ReplyDelete
  118. The QuickBooks Payroll Support Phone Number team at site name is held accountable for removing the errors that pop up in this desirable software. We look after not letting any issue can be found in between your work and trouble you in undergoing your tasks.

    ReplyDelete
  119. It will help to build and manage the estimates at a QuickBooks Payroll Technical Support Number rate. It is possible to sync your money with bank and keep your time from entering bank details if you make any transaction. It is possible to quite easily calculate the pay checks in terms of employees.

    ReplyDelete
  120. The support specialist will identify the problem. The deep real cause is likely to be found out. All the clients are extremely satisfied with us. We've got many businessmen who burn off our QuickBooks Enterprise Support Phone Number.

    ReplyDelete
  121. QuickBooks Enterprise by Intuit offers extended properties and functionalities to users. It really is specially developed when it comes to wholesale, contract, nonprofit retail, and related industries. QuickBooks Enterprise Support Number is advised for users to provide you with intuitive accounting treatment for SMEs running enterprise kind of QuickBooks.

    ReplyDelete
  122. Get the most advanced RPA Course by RPA Professional expert. Just attend a FREE Demo session about how the RPA Tools get work.
    For further details call us @ 9884412301 | 9600112302

    RPA training in chennai | UiPath training in chennai

    ReplyDelete
  123. Nice information, valuable and excellent design, as share good stuff with good ideas and concepts, lots of great information and inspiration, both of which I need, thanks to offer such a helpful information here.

    what are solar panel and how to select best one
    learn about iphone X
    top 7 best washing machine
    iphone XR vs XS max



    ReplyDelete
  124. Our QuickBooks Support Phone Number is always there to repair your QuickBooks Software. The top-notch solutions is going to be in your hand within a couple of minutes.

    ReplyDelete
  125. Incorrect Reports Generation Unable to recover Data File Bank Reconciliation Issues Inventory Reconciliation Issue Sync issue with Bank Feeds QuickBooks Enterprise Support Number Instant option will be essential for these types of issue,

    ReplyDelete
  126. Are QuickBooks errors troubling you? Struggling to install QuickBooks? If yes then it’s time to get technical help from certified and verified professionals .by dialing, it is possible to access our twenty-four hours a day available QuickBooks Support Number 2019 for QuickBooks that too at affordable price. Don't assume all problem informs you before coming. Same is true of QuickBooks. imagine yourself when you look at the situation where you stand filling tax forms just before the due date. although the process is being conducted, you suddenly encounter an error along with your QuickBooks shuts down on its own. This problem could be frustrating and hamper your work to a good extent. You can also get penalized for not filling taxes return on time. If so ,all you want is a dependable and helpful support channel who can allow you to resume your work as quickly as possible .

    ReplyDelete
  127. Everyone knows that for the annoying issues in QuickBooks Enterprise Tech Support software, you will need an intelligent companion who can enable you to get rid of the errors instantly.

    ReplyDelete
  128. QuickBooks Payroll Support Phone Number management quite definitely easier for accounting professionals. There are so many individuals who are giving positive feedback when they process payroll either QB desktop and online options.

    ReplyDelete
  129. QuickBooks Error 15270 messages could show up during program installation, while an Intuit Inc.-related software program (eg. QuickBooks) is running, during Windows start-up or closure, or simply just through the setup about the Windows operating system. Keeping monitoring of when in addition to where your 15270 error occurs is an essential item of information in fixing the problem.

    ReplyDelete