Useful TenantConfig keys

#1

This is a growing list of TenantConfig keys with a description and hints on why you would need them:

Analytics

Data Integration

  • AsyncProcessingDisabled: a boolean flag to enable/disable asynchronous processing (e.g. refreshing calc fields or ACLs).
    Hint: It might be a good idea to set this to true before uploading data in order to speed data integration, and after that set it back false.
  • FileDataConfig: a json object for configuring File data indexation Enable / disable File Indexing for a tenant
  • JMSEnabled: a boolean flag to enable/disable data loading.
    Hint: by default it’s set to false.

Logging

  • SplunkSlowestActionsQuery: a json that represents queries for getting the slowest actions

Normalization

  • MaxNormalizedPointsLimit: an integer that sets the max limit for the data points that can be normalized.
  • Normalize: a string once set will enable incremental Normalization.
    Hint: Possible values are: ALL, RECENT, ONDEMAND, AFTERQUERY.

Metrics

UI

  • c3ui_environment: a string representing the name of the UI environment which is enabled, if multiple are defined in UIConfig.

Weather

  • MaxWeatherHistoryDays: max history days, e.g. 1125.
  • defaultTimeZone: a string the time zone, e.g. America/Los_Angeles.

Other

  • BucketMetricMapping: a json object.
  • defaultLocale: a string the default locale, e.g. it_IT for italian
  • HierarchyDenormDisabled: a comma separated list of hierarchy denorm type to be disabled

Here is an example on how to set a value for TenantConfig:

TenantConfig.merge({id:"key", value:"val"});
TenantConfig.merge({id:"key", jsonValue:{jsonkey1: jsonval1, jsonkey2: jsonval2}});

It’s also possible to set the TenantConfig on provision by having a json file under seed/TenantConfig:

{
  "name" : "some name",
  "id" : "key",
  "value" : "val"
}
6 Likes
Normalization isIncremental threshold
refreshAcls not working, but populateAcl works
Is There a way to see all the possible TenantConfig Options?
#2

If you do disable async processing (i.e. AsyncProcessingDisabled==true) during dataload, that would stop stored calc/hierarchy denormalization for data that is loaded, that would require rebuilding those after loading is done while async is still disabled.
Typically, this option should only be used for Historical data loads or initial loads.

1 Like
#3

Also using c3ShowType(AnalyticsContainer) in latest server you can see all the tenant configs for analytics :

And you can add MaxWeatherHistoryDays and defaultTimeZone configs for Weather.

And I would recommend to do merge instead of upsert so that we do not override the name for example that could be useful for the description of the config

@pavan.nandikonda we should create a c3doc file that explains all those keys.

1 Like
#4

Perhaps there should be a rule that each global[1] parameter with indefinite extent (be it a config key or whatever) should at all times be bound to something, even null if there is no meaningful value by default, and documented as such.
On the other hand, if a global parameter does not have indefinite extent, it only makes sense during certain time, so it should be unbound outside that time; it should be documented together with code that binds it temporarily and uses it.
[1] Declared in a global lexical or spatial scope, such as tag, tenant, cluster…