====AQL Tabular Data==== When requesting [[points|points]] of data (ie. live values or history), you can also request //tables// of data instead of individual raw channels. There are a few advantages of data tables if you're using data for analytics... ===Data For Every Index=== In tables, you have values for //every channel// for //every time//, unless a sensor was offline or data was unavailable. This helps address issues when different data points have different sample times. Analogue values are **interpolated** and discrete data values are **backfilled** and **forward-filled** to ensure that your data table is ready for use for machine learning, charting, replay or other analytic uses. ===A Range of Output Formats=== While the AQL language always returns data as JSON, you have the option of asking for several different data formats when requesting tables. This helps get data directly into a range of products (such as Excel) without needing to parse or re-interpret the data. ===Endpoint=== The AQL table endpoint is at... /aql/api/table?query=&format= By default, the format used is **CSV**, but it can be overridden with the following options... ^Name^Meaning^ |CSV|Comma-Delimited Text| |HTML|Web-Based Table| |JSON|Javascript Object Notation + Metadata| ===Errors=== If there are any issues reading historical information, these are returned differently depending on the format of your data. If your results are in JSON format, errors are included as part of the response in the **errors** attribute. If your results are in HTML or CSV, they are returned in the **X-ARDI-Failures** header. ===Continue Reading=== [[AQL Language Introduction]]