Build better products with our product team
After updating a CDATA REST datasource from version 22.0.8257.0 to version 22.0.8539.0 ; the data source is broken. When syncing the datasource, the following error appears:Keyword not supported: 'credentials location'When using the exact same REST settings but provider version 22.0.8257.0 , the datasource works fine.It looks like the connection string for the data provider is not created correctly, probably because there is a space in ‘credentials location’; most likely this needs to be parsed into the connection string as ‘credentials_location’.Can you please fix this en for all, be aware not to update REST datasource to version 22.0.8539.0 as this will break the datasource and it is not possible to downgrade (so you need to re-add the datasource from scratch).
In the old Business Units situation, the system fields are created in the ODX. The ODX Server is focused on extracting only the raw data from the data sources.In some cases you like to use the DW_SourceCode to in data selection rules combined with conditions to filter the Test and Production datasource, based on the environment variable. This is not possible when using the ODX Server, because the DW_SourceCode is created in the MDW instance. Only option left (as far is I know). Add a extra data area/datawarehouse layer, map Test and Production datasources in the same table, in the next data area/datawarehouse layer, filter on DW_SourceCode.
Data type filterWhen you use the “Set up primary keys” function on a data source, there are a few quick wins to implement to enhance the automation experience. In our case we needed to define the primary key when the column name was like %_pk_%. However, keeping the Data type set at “Unknown” did not work (it did not define any primary key). We needed to explicitly make a rule per data type. A fix would be to make the “Data type” field optional. SortingSecondly, the list of tables and suggested primary keys are not sorted at all. It would be convenient if this list was alphabetically sorted. This screenshot explains both annoyances:
When the data source it’s Synapse Analytics Server less pool and try a full load of a table, TX send to the server two queries, the first to obtain the MAX(incremental value) and the second to obtain the records with <= MAX(incremental value).The cost it’s double. It would be better to send only the second query without the WHERE clausule.
For compliance reasons, it would be good if we could add users in our client’s organization to the portal and have them input credentials to their data sources, without anyone else being allowed to view their passwords.If I am not misstaken, I have heard talks about this feature. Is this something that’s in the works?Even if a client user has created the data source, I can still see the password in the data source settings by clicking on the "eye" icon:Is there any setting that can be configured to keep passwords secret?
In an Execution Package, clearly indicate in the "All Steps" section which tables or other types of steps have already been included or excluded in the package.This allows for a clear view of the included tables, as well as any that may have been omitted. To enhance the user's experience, it would be helpful to allow for a view of only the tables that have not been included or excluded.
It would be very useful to have the possibility to use instance variables in the definition of fragments.Sometimes I use a user function to get a fixed value from a table, but it would be faster to use it as a variable if possible.
Add a search function in views and scripts (e.g. by using CTRL-F)
Whenever you implement data movements in TimeXtender some objects get created to support this. TimeXtender gives these objects automatic names which is usually fine. In the case of modern ERPs like Business Central with added features (4PS and other vendors), there are additional tables with extra fields added onto existing BC tables. These usually get rather long table names, sometimes including a GUID, which then cause problems when you pull data into a Data Area or Datawarehouse layer due to the name of the usp_xxx object.The idea is to add some settings to TimeXtender that allow you to deal with this:Do nothing (same as now), may fail if the source table name is too long Warning, tell the user that this table may fail if copied to a further layer Handle automatically, shorten names in ODX/DWH Data Area automatically if required. This could be as simple as disabling the automatic prefixes that get added.Given that more and more products will have data stored in systems with less restrictive table names than SQL Server it will be very useful to have some way of dealing with this. This idea comes from a ticket #26993 , I have seen the same with some other Business Central-based ERPs where you either have BYODB or Data Lake replication.
Each time you save an instance (e.g. after deploying a table) you are presented with a screen to add a version note. Please add the functionality to automatically add log information of changes made since the last saved version. This could be in bullet style. Maybe the user could choose between short and long descriptions. I could imagine it to be present something like (as an example):Added table [DSA].[Sales] Added field [Amount] in table [DSA].[Sales] Added description to field [Amount] in table [DSA].[Sales]: “Amount of Products sold” Changed Transformation on field [Profit] in table [DSA].[Sales]: from Custom Value: ‘…….’ to Custom Value: ‘…...’The obvious benefit would be that it saves developers time writing down all changes (version notes) manually. And this would actually encourage developers to add a log note for each change made as I am pretty sure that currently a lot of version notes are left blank. Obviously you would still need to be able to add a custom note.
Each time you save an instance (e.g. after deploying a table) you are presented with a screen to add a version note.Please add a functionality to automatically add log information such as:name developer, date, a description of all changes (maybe a short or long version) made since last saved version and in which data area it was.This would save all developers a lot of time writing down all changes (version notes) manually. And this would actually encourage developers to add a log note for each change made as I am pretty sure that currently a lot of version notes are left blank. Obviously you would still need to have to possibility to add a custom note. You could think about AI helping out to add version notes. (And even in your own language). I get carried away… just a button to add your own initials and a button to add the current date, would be a good start.
Using the Object Level Security, it allows you to set Grant and Deny permissions on Tables, Views and Schema's. I would be great you will be able to set permissions ons Stored Procedures as well. Use case is discussed in the following article:
I'd like to be able to search for a specific tag name in the Find screen and have it include all the fields having that tag in the Find Results.
Allow drag and drop of sources within the ODX layer to adjust the order. Similarly, the synchronize task, transfer task and storage management task should have a possibility to be sorted manually.
It would be very useful something like this:
Now that SQL Server 2022 support is here, there is an opportunity to make use of DATE_BUCKET and/or DATETRUNC to allow for date/time grouping that can make use of the sorting of an appropriate index. While the deployments of SQL Server 2022 may be few, all Azure SQL PaaS databases can make use of this already.As an example: An Aggregate table derived from a transactional table where you want to create monthly aggregates for timestamped transactions will currently always require either an explicit Sort or HashMatch operation in the query plan (boilerplate SQL removed from the code TX generates):There is an index here on [OrderDate] Including [LineTotal] but the Index Scan operator is using False for the Ordered property - I have a separate idea on automatically generating covering indexes for Aggregate tables.If you make use of DATE_BUCKET, you see that the query plan can make use of Stream Aggregate and uses an Ordered Index Scan: The resulting plan costs less than 50% of the original plan. See: https://sqlperformance.com/2022/10/t-sql-queries/date-bucket-datetrunc-improve-time-based-grouping
I am setting up a table relation where the tables join based on a date range (see screenshot below)In setting this up in TimeXtender, I noticed that I can only set this up on the lookup field and not as the default relation between the tables.Can this be reviewed and added as a new feature in a future release of TX?(NOTE: I have edited the table names and columns for this post)
Currently in 20.10.x Incremental tables with deletion handling get an Is Tombstone field that is a bit type, History tables with deletion handling get an Is Tombstone field that is a bigint.In 6xxx I cannot seem to get any kind of Is Tombstone field, so the inconsistency is more that there is no way to know that a record was deleted in sourceIf you add history to an existing incremental table with soft deletes, you will be forced to use the history soft deletes which will change the type to bigint. I think it would be good to make this uniform and add some kind of check to the upgrade advisor tool. You'd really want users to get a reminder that they need to check dependent project objects.Apart from this issue there is also the fact that a bigint is fairly expensive for a field that has a boolean meaning. Given that less that 9 bit types mean the values are stored in the same byte, this would be a performance benefit, especially for large Fact tables. If users want to count deletions they can cast to an appropriate int subtype in their transformations.So in summary: choose the same type for both incremental and history soft deletes. Evaluate which type would be best, my suggestion would be bit.
Now in the new version it’s possible to get multiple schedules: It would be good to be able to enable/disable them.
Create option to schedule jobs on specific times/days.For example, if I want to schedule a job at 9:00, 10:00 and 17:00 this is (in my opinion) not possible at the moment within one job.
Is the information we could get from ‘Tx Dictionary’ somehow still available in Timextender NG?With Tx Dictionary you could (in the previous Tx version):Provide an always up-to-date Data Dictionary to your business users in the reporting tool of your choice including custom object definitions & data lineage. Analyze execution packages in detail to improve performance & pinpoint problem areas. See detailed execution messages over time. Report on validation errors and warnings counts over time.
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.