Search Unity

  1. Check out the Unite LA keynote for updates on the Visual Effect Editor, the FPS Sample, ECS, Unity for Film and more! Watch it now!
    Dismiss Notice
  2. The Unity Pro & Visual Studio Professional Bundle gives you the tools you need to develop faster & collaborate more efficiently. Learn more.
    Dismiss Notice
  3. Improved Prefab workflow (includes Nested Prefabs!), 2D isometric Tilemap and more! Get the 2018.3 Beta now.
    Dismiss Notice
  4. Improve your Unity skills with a certified instructor in a private, interactive classroom. Watch the overview now.
    Dismiss Notice
  5. Want to see the most recent patch releases? Take a peek at the patch release page.
    Dismiss Notice

New Data Processing Limits

Discussion in 'Unity Analytics' started by ap-unity, Jan 9, 2017.

  1. ap-unity

    ap-unity

    Unity Technologies

    Joined:
    Aug 3, 2016
    Posts:
    1,046
    We’ve heard your feedback and we are getting rid of Analysis Points!

    TL;DR
    Our old system limited you to only the first 1,000 combinations of event / parameters / values.
    Our new system will show you the 5,000 most frequent combinations of events / parameters / values.


    What are Analysis Points?

    Analysis Points were the old way we imposed limits on Custom Events. Some events are more costly to process, so they cost more Analysis Points. But this resulted in developers doing overly complicated calculations and bending over backwards to fit into our data limits. Analysis Points also limited users to only the first 1,000 event / parameter / value combinations that we received. From now on, you don’t have to worry about doing any messy calculations based on the data types of your custom event parameters.

    What is changing?

    We are moving to a system that prioritizes the most frequently seen events in your game. So you will now see the top (most frequent) 5,000 event / parameter / value combinations in your dashboard. The top 5,000 combinations will be reevaluated daily, so we will always be showing you the most relevant data. We chose that number specifically because it will have the least impact on our existing dashboard users. Currently, 98% of users fall well below this limit.

    One additional benefit of this change is how we calculate numbers. Right now when you send us a number, we aggregate it to give you the count, sum and average of the values you send. However, if you are sending us a level number, then that aggregation isn’t as useful to you.

    For example, if you send us the following event:

    Code (CSharp):
    1.  
    2. Analytics.CustomEvent(“LevelStart”, new Dictionary<string, object>{
    3.     {“level_num”, 5}
    4. });
    5.  
    Rather than just giving you the average of level_num, we will now also display a count for each value for level_num. This is what developers expect to see when they send us these values, so this is what we will be showing them. (We do have to impose a limit on this, since there are a lot of numbers. So we will only do this for the top 500 numbers received.) And to enhance the readability of the dashboard UI, we will show you the top 10 parameter values plus an “others” bucket for the rest, in any parameter view (e.g. pie chart).

    How will this affect you?

    For the vast majority of people (97.862% according to our engineering team), this change will have no effect on your existing dashboard. The biggest benefit is that you can spend less time worrying about Analysis Points. Now developers can focus on tracking the data they want without jumping through extra hoops.

    For a small percentage of users, their dashboards will only show the top 5,000 event / parameter / value combinations, even if they have sent more than that. However, unlike with the Analysis Points system where any events exceeding the limit were discarded, these events are still counted. And every day, the top events will be re-evaluated to make sure your dashboard will always show you the most relevant data.

    What do you need to do?

    This change is in our back end processing, so you don’t have to do anything to get these benefits.

    FAQ:

    *What about the 100 per user per hour limit?

    The client-side limits (100 per user per hour and 10 parameter limit) are unaffected by this change.

    *What is going to happen to the Event Manager?

    The Event Manager will still show you the events and parameters we’ve received from your game. And you will continue to be able to disable them, so they do not appear in the Data Explorer and so they are not counted in the top 5000 values.

    *How will this affect events in Raw Data Export?

    Raw Data Export will not be affected by this change. Raw Data Export will always include every event sent from your app.

    *Is this limit for Personal, Plus or Pro users?

    The same data processing limit applies to all users equally.
     
  2. NicoL3AS

    NicoL3AS

    Joined:
    Oct 7, 2015
    Posts:
    14
    Hello the Unity Team,
    Glad to see you are working hard to give us the best analytics experience, thanks!
    I see in my new dashboard that the events I previously switched OFF on the old dashboard does not appear anymore (not even with the gray switch like before). Is it an expected behavior? It's not a big deal right now, but maybe someday I will need to set them ON again, how can I do that? And today, in the new dashboard, if I switch OFF an event, will it still appear in my dashboard after that (of course, with a gray switch)?
    Regards,
    Nicolas
     
  3. trdinich

    trdinich

    Joined:
    Oct 5, 2016
    Posts:
    9
    My plan was to record some additional data surrounding levels so I had the analytics available to me, but I'm not certain that this new approach by Unity is helpful or hurtful to me. Imagine that I want to do something like this:

    Code (CSharp):
    1. Analytics.CustomEvent("LevelFinished", new Dictionary<string, object>
    2.     {
    3.         { "level_num", levelNumber },
    4.         { "seconds_to_finish", someTimeValue }
    5.     }
    6. );
    Given that seconds_to_finish could end up being anywere in the range of, say, 10 seconds to 1000 seconds, and I have many different levels, then it sounds like this limit of 5000 combinations of events/parameters will hurt me from doing this.

    Am I unable to track analytics in this manner, or am I misunderstanding the new data limits?

    Edit: Actually, it looks like in the raw data export I'm fine. This just affects what shows up in the dashboard. Please let me know if that's correct.
     
    Last edited: Jan 19, 2017
  4. NicoL3AS

    NicoL3AS

    Joined:
    Oct 7, 2015
    Posts:
    14
    As you noted in your edit, I think you misunderstood the system. As far as I understand, "second_to_finish" will be stored as an integer, so only 1 point in the limit, no matter the number of different values.
    However, where you may have difficulties is with "level_num", if this entry is an integer, because you will not have the possibility in the Unity graph tools to display separately the levels (for example making a curve showing the average time to finish the level 6 is not possible like that). You should transform your integer in string to be able to do that:
    Code (CSharp):
    1. Analytics.CustomEvent("LevelFinished", new Dictionary<string, object>
    2.     {
    3.         { "level_num", "Level "+levelNumber },
    4.         { "seconds_to_finish", someTimeValue }
    5.     }
    6. );
    I let the Unity team complete or correct me if necessary.
     
  5. ap-unity

    ap-unity

    Unity Technologies

    Joined:
    Aug 3, 2016
    Posts:
    1,046
    @NicoL3AS
    That is correct; events don't appear in the Event Manager after they have been disabled. We are evaluating how this change impacts developers and we always welcome suggestions about how we can improve the usability of our service.

    @trdinich
    That is a good question and something I didn't specifically touch on in the post.

    First, not that you asked specifically, but I wanted to make sure it's clear. Numbers are tracked separately from string values. So we are tracking the top 500 numbers from your app, which will be kept on a different list than any string values that we are tracking. This is because numeric parameters could take on many more possible values than most string parameters.

    Second, we are tracking numbers in the same way as strings now, so if you send "level_num", you will see a count of each value you send. This previously required you to send the numbers attached with strings (as suggested by NicoL3AS).

    So when you send numbers, such as your "level_num" and "seconds_to_finish" parameters, they will basically be counted as strings and numbers. So in the Data Explorer, you will still see the traditional count, sum, and average (which will be useful for "seconds_to_finish". But you will also see the count for each value of "level_num".

    As for the data limits, I don't think it will affect you very much. An example might clarify things:

    Let's say you send us the following events over the course of a day:

    Code (CSharp):
    1. Analytics.CustomEvent("LevelFinished", new Dictionary<string, object> {  { "level_num", 1}, { "seconds_to_finish", 100} });
    2. Analytics.CustomEvent("LevelFinished", new Dictionary<string, object> {  { "level_num", 1}, { "seconds_to_finish", 115} });
    3. Analytics.CustomEvent("LevelFinished", new Dictionary<string, object> {  { "level_num", 2}, { "seconds_to_finish", 100} });
    4. Analytics.CustomEvent("LevelFinished", new Dictionary<string, object> {  { "level_num", 1}, { "seconds_to_finish", 80} });
    5. Analytics.CustomEvent("LevelFinished", new Dictionary<string, object> {  { "level_num", 2}, { "seconds_to_finish", 95} });
    The combinations that we would track would be:

    Code (CSharp):
    1. (LevelFinished.level_num, 1) - Count: 3
    2. (LevelFinished.level_num, 2) - Count 2
    3. (LevelFinished.seconds_to_finish, 100) - Count 2
    4. (LevelFinished.seconds_to_finish, 115) - Count 1
    5. (LevelFinished.seconds_to_finish, 80) - Count 1
    6. (LevelFinished.seconds_to_finish, 95) - Count 1
    Since we are tracking the most frequent events, I would expect your level numbers to occur more often than any particular completion time, so you should always be able to see your level data.

    It may be the case that you might not see every individual time that has been sent in the Data Explorer, but that is data that is best aggregated, which will still be available.
     
  6. NicoL3AS

    NicoL3AS

    Joined:
    Oct 7, 2015
    Posts:
    14
    Ok so in case it was not clear: in my case it would be good to have the events appear in the Event Manager even if they are disabled.

    A simple example: I have a list of words in my app, which the user can search in. For each search, I send an event with the searched pattern attached. Of course this generate hundreds of possibilities, so it make me use a big part of my Analysis Points. I tested it and disabled it after a while to not explode my point limit, but later I would like to reactivate it without publishing a new version. And this is possible only if I can re-enable the disabled event.
     
  7. v01pe_

    v01pe_

    Joined:
    Mar 25, 2015
    Posts:
    39
    I was looking at how to display data today, and it seems that in the Data Explorer you can select the parameter level_num (that is a number), but treat it as a string parameter (select it as level_num [A] instead of level_num [#]).
    If you do so, you'll have a graph per level.

    If that's what you meant, you won't need to convert to string which would be more flexible.
     
  8. NicoL3AS

    NicoL3AS

    Joined:
    Oct 7, 2015
    Posts:
    14
    You're right @v01pe_, I had never seen this option before. So yes, no need to force the event to a string in your code.
     
  9. alleballe90

    alleballe90

    Joined:
    Jan 9, 2017
    Posts:
    3
    Having a issue where I can't seem to turn off custom events in the Event Manager. I turn them off, save the changes and when I return to the page they're enabled again.
     
  10. ap-unity

    ap-unity

    Unity Technologies

    Joined:
    Aug 3, 2016
    Posts:
    1,046
  11. alisjak

    alisjak

    Joined:
    Apr 3, 2017
    Posts:
    2
    Hi There!

    Since we are being limited on the forn end dashboard to only the top 10 event parameters sent for each custom event, would RAW DATA EXPORT be our only option to be able to get ALL the custom events data from all users and all custom events? we are thinking on using https://github.com/shinyshoe/ua2sql and then model it with Tableau. Any thoughts or recommendations for a simpler solution?

    Thxs!

    Ari
     
  12. rayw24

    rayw24

    Unity Technologies

    Joined:
    May 23, 2016
    Posts:
    52
    @alisjak We recently made some changes to our back end architecture to allow more flexibility when sending custom events. This led to a potential issue in our front-end where data sent would overwhelm our dashboard. As a short-term solution, we limited the dashboard to only displaying 10 parameters but rest assured that we are working on a fix for this.

    To answer your question, Raw Data Export would be your best option for now to get all the custom events. We've never tested the script you linked but I looked it over and it looks like it will get you the results you want (at least in theory).

    Let me know if it ends up working for you!
     
  13. FinalDaniel

    FinalDaniel

    Joined:
    Mar 29, 2017
    Posts:
    2
    Hi

    Is there a way to see all of the parameter values associated with an event on the dashboard? Rather than just the main 10 and an 'others' bucket?

    For example, In my game AuroraBound (http://www.aurorabound.com/) I have a 'world_reached' event and one of its parameters is 'world_name' which is a string such as "world_1". I want to use this as a way to track p upload_2017-5-17_19-52-21.png layer fall off over time - to see if there is a particular world (and associated difficulty) players leave the game after, but my game has a theoretically infinite number of game worlds. Its only been out for a week and some players are already completing world 50! Here is a screenshot of what I mean:

    upload_2017-5-17_19-52-21.png

    I need to explore the bottom 'other' bar there - Most players just try the game for an hour or two and stop by world 10, which I expected as it is a free to play title, but I want to know what the fall off is in the later worlds.
     
    miracledojo likes this.
  14. gesonriovox

    gesonriovox

    Joined:
    Jan 13, 2017
    Posts:
    2
    there is one thing puzzled me, i use code below:
    Code (CSharp):
    1. Analytics.CustomEvent("test_event", new Dictionary<string,object>()
    2.             {
    3.                 { "status",mMapInfoStruct.IsFinished ? 1 : 0 }
    4.             });
    but i can see in the graphic:
    XXX-status
    0
    1
    others

    So,what happened?i didnot upload the "ohters" via "test_event"
     
  15. rikkir

    rikkir

    Joined:
    Feb 11, 2015
    Posts:
    16
    Hi,
    I about 20 Custom Events, each is only a count. I am installing the information into the Unity Analytics web page, but any new Custom Event, past 18 Custom Events, is now, by default, not a Count, but a Calculation.


    Kind of concerned.

    EDIT:
    I think it moves to Count, once you set it to Unique Users.

    Edit Edit:
    It has returned, where some are indeed, Undefined.

    HELP!
     
    Last edited: Jun 6, 2017
  16. JeffDUnity3D

    JeffDUnity3D

    Unity Technologies

    Joined:
    May 2, 2017
    Posts:
    2,639
    @rikkir Making some assumptions, I suspect you have something like Analytics.CustomEvent("MyEvent", 3) and Analytics.CustomEvent("MyEvent", 4) etc ? And you want to know the number of 3's and the number of 4's? Otherwise, can you clarify?
     
  17. festival

    festival

    Joined:
    Feb 3, 2011
    Posts:
    72
    @FinalDaniel Good point with "others". Any solution with the "10 Custom event" limit?
     
  18. anajames86

    anajames86

    Joined:
    Feb 28, 2017
    Posts:
    30
    Looking for it too. 10 custom event
     
  19. festival

    festival

    Joined:
    Feb 3, 2011
    Posts:
    72
    I moved to Game Analytics now which doesn't have a 10 parameter list limit.
     
  20. yuliyF

    yuliyF

    Joined:
    Nov 15, 2012
    Posts:
    132
    I used an analytic(Analytics.CustomEvent) but didn't see any diagrams..((
     
  21. ap-unity

    ap-unity

    Unity Technologies

    Joined:
    Aug 3, 2016
    Posts:
    1,046
    @yuliyF

    Once you integrate Analytics into your project and visit your dashboard, it takes between 4-6 hours before data will appear in your dashboard.

    If it has been longer than that, please send a support ticket with your project ID:
    https://analytics.cloud.unity3d.com/support/
     
    yuliyF likes this.
  22. HarBenly

    HarBenly

    Joined:
    Dec 14, 2016
    Posts:
    32
    I don't think game analytics have that kind of limit now.
     
  23. Bionicl

    Bionicl

    Joined:
    Dec 15, 2016
    Posts:
    2
    Because I'm not 100% sure how does the event/parameter/value combinations calculation work, I'd like to ask for help based on example:

    Code (CSharp):
    1. Analytics.CustomEvent("Event1", new Dictionary<string, object> {
    2.     { "Parameter1", value1 }, //value1 range: 0-9
    3.     { "Parameter2", value2 } //value2 range: 0-9
    4. });
    1. Supposing, that every possible combination will be used, does it count like this:
    value1 * value2 = 10 * 10 = 100

    2. Now I duplicated the same code and only changed it to 'Event2'
    Code (CSharp):
    1. Analytics.CustomEvent("Event2", new Dictionary<string, object> {
    2.     { "Parameter1", value1 }, //value1 range: 0-9
    3.     { "Parameter2", value2 } //value2 range: 0-9
    4. });
    Now the events combinations will be multiplied (10000) or only added (200)? (still supposing, that every possible combination will be used)

    Thanks!
     
  24. marc_tanenbaum

    marc_tanenbaum

    Unity Technologies

    Joined:
    Oct 22, 2014
    Posts:
    320
    @Bionicl

    It's additive per day, so on any given day we report the top 5000 combos of event name/param name/param value. Since Event1 has 100 possible combinations and Event2 has 100 possible combos, you will have counted 200 "points" against the daily limit.
     
    kenwrotethis likes this.
  25. Bionicl

    Bionicl

    Joined:
    Dec 15, 2016
    Posts:
    2
    Ok, now everything is clear, thanks!
     
  26. lifeisfunxyz

    lifeisfunxyz

    Joined:
    Aug 9, 2017
    Posts:
    8
    Hi!
    I have custom event like this:
    Analytics.CustomEvent ("play"); // I call it when user press play button
    If in 1 hour, my user play 105 times, then 5 times last not record by Unity Analytics, is this true?
     
    Last edited: Sep 20, 2017
  27. ap-unity

    ap-unity

    Unity Technologies

    Joined:
    Aug 3, 2016
    Posts:
    1,046
    @lifeisfunxyz

    Yes, that is the default limit for custom events, so any attempts after hitting that limit will not be sent. You can confirm this by checking the result of the analytics method call.

    Code (csharp):
    1. Dictionary<string, object> data = new Dictionary<string, object>{{"level_index", level}};
    2. AnalyticsResult result = Analytics.CustomEvent("level_complete", data);
    3. Debug.Log(result);
    https://docs.unity3d.com/ScriptReference/Analytics.AnalyticsResult.html

    In your example, you would get the TooManyRequests result.

    Our Custom Event limits are in place to ensure that we are able to process, in a timely manner, all of the data that we receive. So we have selected a limit that encompasses most uses of our service. Of course, we understand not every app will fit within these constraints. If you submit a support ticket, we can see what we can do:
    https://analytics.cloud.unity3d.com/support/
     
    lifeisfunxyz likes this.
  28. lifeisfunxyz

    lifeisfunxyz

    Joined:
    Aug 9, 2017
    Posts:
    8
    Hi! I got it, thank you!
     
  29. miracledojo

    miracledojo

    Joined:
    Dec 1, 2016
    Posts:
    8

    Hi there, i have the same problem. In my game, there is a shop with a lot of items that could be bought. I'm sending an event that is triggered anytime someones buy something in the shop with the parameters such as item name or spent amount. The problem: I see only the top 10 items but some items which are expensive are important to track how many times are bought, i can't see because it is triggered just a few times.
    If you have some solution please contact me.
     
  30. ap-unity

    ap-unity

    Unity Technologies

    Joined:
    Aug 3, 2016
    Posts:
    1,046
    @miracledojo

    Unfortunately, there is no update about this issue. Currently, the only way to get this data is via Raw Data Export.
     
  31. antifuzz

    antifuzz

    Joined:
    Feb 22, 2013
    Posts:
    64
    @ap-unity Any update on this "Others" issue? We're hitting the same thing and I'm struggling to believe UA is this limited?
     
  32. iamthejames

    iamthejames

    Joined:
    Mar 23, 2015
    Posts:
    6
    @ap-unity Any update on this "Others" issue?
     
  33. JeffDUnity3D

    JeffDUnity3D

    Unity Technologies

    Joined:
    May 2, 2017
    Posts:
    2,639
    Sorry no updates at this time. The hope is to address this issue before end of year.