The CDR data that 3CX can optionally create provides a good summary of each call. Essentially, it results in a single row summary of each call. There is a lot of useful data in these files, but it doesn't provide much in the way of queue statistics for example. Further, there is the issue of obtaining easy access to these files especially when 3CX is hosted in the cloud.
You might be tempted to use the IP socket approach to obtaining the CDR data, but I think this approach has a significant shortcoming -- if your socket goes down for any reason, even briefly, you will lose data and your reports will be inaccurate, and there is no way to recover the lost data.
In contrast, using the file based approach ensures that data is never lost. If your service used to process the CDR files goes down (perhaps for a software upgrade for example), you can simply start where you left off because the files containing the call information are still being created and are there waiting to be processed.
If you want to build custom reports and need access to all the same data 3CX uses for the built-in reports, I encourage you to take at our
3CX Exporter tool. Not only can it automate the parsing of the optional CDR files, we can also replicate ALL the 3CX data automatically to either SQL Server or MySQL. CDR files are replicated in real-time and the rest of the data is (by default) replicated every 60 seconds.
Exporter removes the complexities of processing the CDR files by eliminating the challenges of accessing remote files and automates the entire process of parsing, exporting, and replicating the data directly into a database for easy access via PowerBi, Crystal Reports, or even Microsoft Excel.