<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://help.odatalink.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ash</id>
	<title>OdataLink - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://help.odatalink.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ash"/>
	<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=Special:Contributions/Ash"/>
	<updated>2026-10-26T14:16:43Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://help.odatalink.com/index.php?title=Default_Page_Size&amp;diff=4721</id>
		<title>Default Page Size</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=Default_Page_Size&amp;diff=4721"/>
		<updated>2026-10-22T02:44:02Z</updated>

		<summary type="html">&lt;p&gt;Ash: updated Xero developer page URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Default_Page_size_setting.png|300px|thumb|right|Page Size in Model settings]]&lt;br /&gt;
A &#039;&#039;&#039;Query or call&#039;&#039;&#039; sent to [[MYOB]] or [[Xero]] returns a &#039;&#039;&#039;Page&#039;&#039;&#039; of results &#039;&#039;wherever Pagination is possible&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
The Default Page Size setting controls the number of &#039;&#039;&#039;Records&#039;&#039;&#039; returned per page.&lt;br /&gt;
&lt;br /&gt;
A Record contains &#039;&#039;&#039;all Line Items details&#039;&#039;&#039; for that particular endpoint.&lt;br /&gt;
&lt;br /&gt;
Increasing the default page size decreases the calls required to fetch data, which in turn makes refreshes faster.&lt;br /&gt;
&lt;br /&gt;
== How to change the Default Page Size for a model ==&lt;br /&gt;
&lt;br /&gt;
To change the default page size for a [Models|model]] details, follow these steps.&lt;br /&gt;
&lt;br /&gt;
# Click on &#039;&#039;&#039;Models&#039;&#039;&#039; on the menu in the left-hand side;&lt;br /&gt;
# Find the [[Models|model]] you want to work on and click &#039;&#039;&#039;View&#039;&#039;&#039;;&lt;br /&gt;
# Select the &#039;&#039;&#039;Settings&#039;&#039;&#039; tab;&lt;br /&gt;
# Click on the &#039;&#039;&#039;Edit Model&#039;&#039;&#039; button;&lt;br /&gt;
# Select the required &#039;&#039;&#039;[[Default Page Size]]&#039;&#039;&#039;.&lt;br /&gt;
#: This controls the number of records that will be returned on a single call for most endpoints. See the recommended page size below for more information.&lt;br /&gt;
# Click &#039;&#039;&#039;Save&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Recommended Default Page Size ==&lt;br /&gt;
&lt;br /&gt;
The recommended default page size varies based on the type of model or data file you are pulling from.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== MYOB Models ===&lt;br /&gt;
&lt;br /&gt;
The recommended page size for MYOB Business API is 400 records per page, with a values ranging from 50 to 1000 results per page.&lt;br /&gt;
&lt;br /&gt;
* Smaller data files will perform faster using a larger page size (1000).&lt;br /&gt;
* Larger data files will perform more reliably using a smaller number (200).&lt;br /&gt;
* MYOB recommends a value of 400 to resolve [[OdataLink Error Code 8002: MYOB timed out while servicing the request|error 8002]] or [[OdataLink Error Code 8003: MYOB encountered a runtime exception while servicing the request|error 8003]].&lt;br /&gt;
&lt;br /&gt;
The page size settings apply to all the endpoints &#039;&#039;except&#039;&#039; the following:&lt;br /&gt;
&lt;br /&gt;
*[[MYOB Endpoint: Company|Company]]&lt;br /&gt;
*[[MYOB Endpoint: CompanyPreferences|CompanyPreferences]]&lt;br /&gt;
*[[MYOB Endpoint: TaxCodes|TaxCodes]]&lt;br /&gt;
*[[MYOB Endpoint: BalanceSheetSummaryReport|BalanceSheetSummaryReport]], &lt;br /&gt;
*[[MYOB Endpoint: BalanceSheetSummaryReportTable|BalanceSheetSummaryReportTable]], &lt;br /&gt;
*[[MYOB Endpoint: BalanceSheetSummaryReportMultiPeriodTable|BalanceSheetSummaryReportMultiPeriodTable]]&lt;br /&gt;
*[[MYOB Endpoint: PayrollTaxes|PayrollTaxes]]&lt;br /&gt;
*[[MYOB Endpoint: PayrollTaxTables|PayrollTaxTables]]&lt;br /&gt;
*[[MYOB Endpoint: PayrollWages|PayrollWages]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Xero Accounting Models ===&lt;br /&gt;
&lt;br /&gt;
The recommended page size for Xero Accounting models is 1000 with values ranging from 50 to 1000.&lt;br /&gt;
&lt;br /&gt;
The Page size settings apply to the following endpoints:&lt;br /&gt;
&lt;br /&gt;
*[[Xero Accounting Endpoint: BankTransactions|BankTransactions]]&lt;br /&gt;
*[[Xero Accounting Endpoint: BankTransactionsExpanded|BankTransactionsExpanded]]&lt;br /&gt;
*[[Xero Accounting Endpoint: ContactsExpanded|ContactsExpanded]]&lt;br /&gt;
*[[Xero Accounting Endpoint: CreditNotesExpanded|CreditNotesExpanded]]&lt;br /&gt;
*[[Xero Accounting Endpoint: InvoicesExpanded|InvoicesExpanded]]&lt;br /&gt;
*[[Xero Accounting Endpoint: InvoicesExpandedTable|InvoicesExpandedTable]]&lt;br /&gt;
*[[Xero Accounting Endpoint: ManualJournalsExpanded|ManualJournalsExpanded]]&lt;br /&gt;
*[[Xero Accounting Endpoint: OverpaymentsExpanded|OverpaymentsExpanded]]&lt;br /&gt;
*[[Xero Accounting Endpoint: Payments|Payments]]&lt;br /&gt;
*[[Xero Accounting Endpoint: PaymentsTable|PaymentsTable]]&lt;br /&gt;
*[[Xero Accounting Endpoint: PrepaymentsExpanded|PrepaymentsExpanded]]&lt;br /&gt;
*[[Xero Accounting Endpoint: PurchaseOrders|PurchaseOrders]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Xero Assets Models ===&lt;br /&gt;
&lt;br /&gt;
The recommended page size for Xero Assets API is 200 with possible values ranging from 10 to 200 records per page.&lt;br /&gt;
&lt;br /&gt;
The Page size settings apply to the following endpoints:&lt;br /&gt;
*[[Xero Assets Endpoint: Assets|Assets]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Xero Projects Models ===&lt;br /&gt;
&lt;br /&gt;
The recommended page size for Xero Projects API is 500 with values ranging from 50 to 500.&lt;br /&gt;
&lt;br /&gt;
The Page size settings apply to the following endpoints:&lt;br /&gt;
*[[Xero Projects Endpoint: Projects|Projects]]&lt;br /&gt;
*[[Xero Projects Endpoint: Tasks|Tasks]]&lt;br /&gt;
*[[Xero Projects Endpoint: Times|Times]]&lt;br /&gt;
*[[Xero Projects Endpoint: GetTasks|GetTasks]]&lt;br /&gt;
*[[Xero Projects Endpoint: GetTimes|GetTimes]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
&lt;br /&gt;
[[Editing a model&#039;s details]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[https://odatalink.com/2025-03-increase-the-performance-of-your-xero-odata-feed-using-the-page-size-setting/ Increase the performance of your Xero OData Feed using the Page Size setting]&lt;br /&gt;
&lt;br /&gt;
[https://developer.xero.com/documentation/best-practices/api-call-efficiencies/paging/#overview Xero Paging Overview]&lt;br /&gt;
&lt;br /&gt;
[https://developer.myob.com/api/myob-business-api/api-overview/retrieving-data/#PAGING MYOB Paging Overview]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=Optimizing_Your_Model_Settings_for_Performance_and_Security&amp;diff=4671</id>
		<title>Optimizing Your Model Settings for Performance and Security</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=Optimizing_Your_Model_Settings_for_Performance_and_Security&amp;diff=4671"/>
		<updated>2026-07-08T10:45:26Z</updated>

		<summary type="html">&lt;p&gt;Ash: correcting wiki links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A [[Models|Model]] is a configuration layer that controls the &#039;&#039;&#039;performance, security and access&#039;&#039;&#039; to the [[MYOB]] and [[Xero]] data connected to it.&lt;br /&gt;
&lt;br /&gt;
OdataLink recommends the following changes to the configuration of your model in order to get the best performance while maintaining secure access according to the roles and permissions for each user.&lt;br /&gt;
&amp;lt;br \&amp;gt;&lt;br /&gt;
= Security =&lt;br /&gt;
OdataLink includes 2 types of security options that can be configured independent of each other:&lt;br /&gt;
&amp;lt;br \&amp;gt;&lt;br /&gt;
; Firewall-based security&lt;br /&gt;
: Enabling the &#039;&#039;&#039;inbuilt Firewall&#039;&#039;&#039; restricts &#039;&#039;&#039;&#039;&#039;unknown IP Addresses&#039;&#039;&#039;&#039;&#039; which are not authorised to query data.&lt;br /&gt;
: The &#039;&#039;&#039;System Type&#039;&#039;&#039; IP addresses are essential for querying data successfully when the reports are published online.&lt;br /&gt;
: The Admin [[Users|User]] of the account can add new [[IP Addresses]] or approve new [[IP Addresses]] for other users.&lt;br /&gt;
: Please refer to [[Configuring IP addresses|How to Configure IP addresses in your OdataLink account]] for more information on how to add a specific or a range of [[IP Addresses]].&lt;br /&gt;
&lt;br /&gt;
; Basic Authentication&lt;br /&gt;
: Setting a &#039;&#039;&#039;[[Model Login Type|Model&#039;s Login Type]] to Basic&#039;&#039;&#039; enforces users to enter their &#039;&#039;&#039;&#039;&#039;OdataLink credentials&#039;&#039;&#039;&#039;&#039; in order to access [[MYOB]] or [[Xero]] data through that model.&lt;br /&gt;
: Your [[OData client]] such as Excel, Power BI, or Power Query in Fabric will require the user credentials in order to start fetching the data into the Report or Dashboard.&lt;br /&gt;
&amp;lt;br \&amp;gt;&lt;br /&gt;
= Performance =&lt;br /&gt;
; Hybrid Archive / Cut Off Date&lt;br /&gt;
: OdataLink includes a Hybrid Archive feature that you can activate and use to cache historical data in OdataLink.&lt;br /&gt;
: This reduces the load on [[MYOB]] and [[Xero]] servers, ensuring upto 10x faster data refreshes.&lt;br /&gt;
&lt;br /&gt;
; Page Size&lt;br /&gt;
: The Page Size setting in a model instructs the source server to return the selected number of records per page.&lt;br /&gt;
: For [[Xero]], OdataLink recommends setting the highest value available for Page size according to your model type.&lt;br /&gt;
: For [[MYOB]], OdataLink recommends setting the Page Size to &#039;&#039;&#039;900&#039;&#039;&#039; and reduce it until &#039;&#039;&#039;400&#039;&#039;&#039;, and select the most optimal setting according to your dataset.&lt;br /&gt;
&lt;br /&gt;
; Page By&lt;br /&gt;
: The Page By setting instructs OdataLink to download data paged one month at a time, one quarter at a time, one calendar year at a time, or default as paged by the source servers&lt;br /&gt;
: OdataLink recommends using &#039;&#039;&#039;&#039;&#039;Page By Month&#039;&#039;&#039;&#039;&#039; or &#039;&#039;&#039;&#039;&#039;Page By Quarter&#039;&#039;&#039;&#039;&#039; in most cases. The &#039;&#039;&#039;&#039;&#039;Page By Year&#039;&#039;&#039;&#039;&#039; option should only be used for smaller data files.&lt;br /&gt;
: The &#039;&#039;&#039;&#039;&#039;Default&#039;&#039;&#039;&#039;&#039; option is there for those that build more complex queries where you do not want OdataLink to page the by a time dimension.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br \&amp;gt;&lt;br /&gt;
= Related Topics =&lt;br /&gt;
:[[Archive Types|Model&#039;s Archive Type Setting]]&lt;br /&gt;
:[[Editing a model&#039;s details|Edit Model Settings]]&lt;br /&gt;
:[[Model Login Type|Login Type Settings for a Model]]&lt;br /&gt;
:[[Configuring IP addresses#Tasks|Firewall Related Configurations]]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_subscribe_to_OdataLink_with_a_Complimentary_license&amp;diff=4670</id>
		<title>How to subscribe to OdataLink with a Complimentary license</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_subscribe_to_OdataLink_with_a_Complimentary_license&amp;diff=4670"/>
		<updated>2026-07-02T11:37:50Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To continue using OdataLink after your trial, a subscription is required.&lt;br /&gt;
&lt;br /&gt;
A Complimentary license can be provided by the OdataLink team in specific cases.&lt;br /&gt;
&lt;br /&gt;
A Complementary license includes 1 data file license.&lt;br /&gt;
&lt;br /&gt;
Complementary licenses are free of charge and there would be no invoices generated for a complementary license subscription.&lt;br /&gt;
[[File:ComplementaryLicense.png|300px|thumb|right|Subscribe to OdataLink with a Complementary License]] &lt;br /&gt;
== Steps ==&lt;br /&gt;
To subscribe to OdataLink with a Complementary license, follow these steps.&lt;br /&gt;
# If you have multiple accounts, activate the one you wish to subscribe to&lt;br /&gt;
# Select Account / Subscription item in the menu.&lt;br /&gt;
# Click on the Subscribe button.&lt;br /&gt;
# Click on Edit Account Details button to update your details.&lt;br /&gt;
#: See [[Editing my account&#039;s details]] for more information.&lt;br /&gt;
# Click Select Billing User button&lt;br /&gt;
#: See [[Selecting the billing admin user]] for more information.&lt;br /&gt;
# Select Subscription Type as Complementary.&lt;br /&gt;
# Tick the checkbox to confirm you agree with the Terms and Conditions.&lt;br /&gt;
# Click on the Subscribe button.&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
[[Managing my account]]&amp;lt;br \&amp;gt;&lt;br /&gt;
[[Subscribing to OdataLink]]&lt;br /&gt;
&lt;br /&gt;
== Key Words ==&lt;br /&gt;
Complementary License&lt;br /&gt;
&amp;lt;br \&amp;gt;Complementary&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_subscribe_to_OdataLink_with_a_Complimentary_license&amp;diff=4669</id>
		<title>How to subscribe to OdataLink with a Complimentary license</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_subscribe_to_OdataLink_with_a_Complimentary_license&amp;diff=4669"/>
		<updated>2026-07-02T11:37:24Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To continue using OdataLink after your trial, a subscription is required.&lt;br /&gt;
&lt;br /&gt;
A Complimentary license can be provided by the OdataLink team in specific cases.&lt;br /&gt;
&lt;br /&gt;
A Complementary license includes 1 data file license.&lt;br /&gt;
&lt;br /&gt;
Complementary licenses are free of charge and there would be no invoices generated for a complementary license subscription.&lt;br /&gt;
[[File:ComplementaryLicense.png|300px|thumb|right|Subscribe to OdataLink with a Complementary License]] &lt;br /&gt;
== Steps ==&lt;br /&gt;
To subscribe to OdataLink with a Complementary license, follow these steps.&lt;br /&gt;
# If you have multiple accounts, activate the one you wish to subscribe to&lt;br /&gt;
# Select Account / Subscription item in the menu.&lt;br /&gt;
# Click on the Subscribe button.&lt;br /&gt;
# Click on Edit Account Details button to update your details.&lt;br /&gt;
#: See [[Editing my account&#039;s details]] for more information.&lt;br /&gt;
# Click Select Billing User button&lt;br /&gt;
#: See [[Selecting the billing admin user]] for more information.&lt;br /&gt;
# Select Subscription Type as Complementary.&lt;br /&gt;
# Tick the checkbox to confirm you agree with the Terms and Conditions.&lt;br /&gt;
# Click on the Subscribe button.&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
[[Managing my account]]&amp;lt;br \&amp;gt;&lt;br /&gt;
[[Subscribing to OdataLink]]&lt;br /&gt;
&lt;br /&gt;
== Key Words ==&lt;br /&gt;
Complementary License&lt;br /&gt;
Complement&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=File:ComplementaryLicense.png&amp;diff=4668</id>
		<title>File:ComplementaryLicense.png</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=File:ComplementaryLicense.png&amp;diff=4668"/>
		<updated>2026-07-02T11:35:46Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_subscribe_to_OdataLink_with_a_Complimentary_license&amp;diff=4667</id>
		<title>How to subscribe to OdataLink with a Complimentary license</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_subscribe_to_OdataLink_with_a_Complimentary_license&amp;diff=4667"/>
		<updated>2026-07-02T11:35:27Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To continue using OdataLink after your trial, a subscription is required.&lt;br /&gt;
&lt;br /&gt;
A Complimentary license can be provided by the OdataLink team in specific cases.&lt;br /&gt;
&lt;br /&gt;
A Complementary license includes 1 data file license.&lt;br /&gt;
&lt;br /&gt;
Complementary licenses are free of charge and there would be no invoices generated for a complementary license subscription.&lt;br /&gt;
[[File:ComplementaryLicense.png|300px|thumb|right|Subscribe to OdataLink with a Complementary License]] &lt;br /&gt;
== Steps ==&lt;br /&gt;
To subscribe to OdataLink with a Complementary license, follow these steps.&lt;br /&gt;
# If you have multiple accounts, activate the one you wish to subscribe to&lt;br /&gt;
# Select Account / Subscription item in the menu.&lt;br /&gt;
# Click on the Subscribe button.&lt;br /&gt;
# Click on Edit Account Details button to update your details.&lt;br /&gt;
#: See [[Editing my account&#039;s details]] for more information.&lt;br /&gt;
# Click Select Billing User button&lt;br /&gt;
#: See [[Selecting the billing admin user]] for more information.&lt;br /&gt;
# Select Subscription Type as Complementary.&lt;br /&gt;
# Tick the checkbox to confirm you agree with the Terms and Conditions.&lt;br /&gt;
# Click on the Subscribe button.&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
[[Managing my account]]&lt;br /&gt;
[[Subscribing to OdataLink]]&lt;br /&gt;
&lt;br /&gt;
== Key Words ==&lt;br /&gt;
Complementary License&lt;br /&gt;
Complement&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_subscribe_to_OdataLink_with_a_Complimentary_license&amp;diff=4666</id>
		<title>How to subscribe to OdataLink with a Complimentary license</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_subscribe_to_OdataLink_with_a_Complimentary_license&amp;diff=4666"/>
		<updated>2026-07-02T11:35:13Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To continue using OdataLink after your trial, a subscription is required.&lt;br /&gt;
&lt;br /&gt;
A Complimentary license can be provided by the OdataLink team in specific cases.&lt;br /&gt;
&lt;br /&gt;
A Complementary license includes 1 data file license.&lt;br /&gt;
&lt;br /&gt;
Complementary licenses are free of charge and there would be no invoices generated for a complementary license subscription.&lt;br /&gt;
[File:ComplementaryLicense.png|300px|thumb|right|Subscribe to OdataLink with a Complementary License]] &lt;br /&gt;
== Steps ==&lt;br /&gt;
To subscribe to OdataLink with a Complementary license, follow these steps.&lt;br /&gt;
# If you have multiple accounts, activate the one you wish to subscribe to&lt;br /&gt;
# Select Account / Subscription item in the menu.&lt;br /&gt;
# Click on the Subscribe button.&lt;br /&gt;
# Click on Edit Account Details button to update your details.&lt;br /&gt;
#: See [[Editing my account&#039;s details]] for more information.&lt;br /&gt;
# Click Select Billing User button&lt;br /&gt;
#: See [[Selecting the billing admin user]] for more information.&lt;br /&gt;
# Select Subscription Type as Complementary.&lt;br /&gt;
# Tick the checkbox to confirm you agree with the Terms and Conditions.&lt;br /&gt;
# Click on the Subscribe button.&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
[[Managing my account]]&lt;br /&gt;
[[Subscribing to OdataLink]]&lt;br /&gt;
&lt;br /&gt;
== Key Words ==&lt;br /&gt;
Complementary License&lt;br /&gt;
Complement&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_subscribe_to_OdataLink_with_a_Complimentary_license&amp;diff=4665</id>
		<title>How to subscribe to OdataLink with a Complimentary license</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_subscribe_to_OdataLink_with_a_Complimentary_license&amp;diff=4665"/>
		<updated>2026-07-02T11:32:39Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To continue using OdataLink after your trial, a subscription is required.&lt;br /&gt;
&lt;br /&gt;
A Complimentary license can be provided by the OdataLink team in specific cases.&lt;br /&gt;
&lt;br /&gt;
A Complementary license includes 1 data file license.&lt;br /&gt;
&lt;br /&gt;
Complementary licenses are free of charge and there would be no invoices generated for a complementary license subscription.&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
To subscribe to OdataLink with a Complementary license, follow these steps.&lt;br /&gt;
# If you have multiple accounts, activate the one you wish to subscribe to&lt;br /&gt;
# Select Account / Subscription item in the menu.&lt;br /&gt;
# Click on the Subscribe button.&lt;br /&gt;
# Click on Edit Account Details button to update your details.&lt;br /&gt;
#: See [[Editing my account&#039;s details]] for more information.&lt;br /&gt;
# Click Select Billing User button&lt;br /&gt;
#: See [[Selecting the billing admin user]] for more information.&lt;br /&gt;
# Select Subscription Type as Complementary.&lt;br /&gt;
# Tick the checkbox to confirm you agree with the Terms and Conditions.&lt;br /&gt;
# Click on the Subscribe button.&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
[[Managing my account]]&lt;br /&gt;
[[Subscribing to OdataLink]]&lt;br /&gt;
&lt;br /&gt;
== Key Words ==&lt;br /&gt;
Complementary License&lt;br /&gt;
Complement&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_subscribe_to_OdataLink_with_a_Complimentary_license&amp;diff=4664</id>
		<title>How to subscribe to OdataLink with a Complimentary license</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_subscribe_to_OdataLink_with_a_Complimentary_license&amp;diff=4664"/>
		<updated>2026-07-02T11:31:53Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To continue using OdataLink after your trial, a subscription is required.&lt;br /&gt;
&lt;br /&gt;
A Complimentary license can be provided by the OdataLink team in specific cases.&lt;br /&gt;
&lt;br /&gt;
A Complementary license includes 1 data file license.&lt;br /&gt;
&lt;br /&gt;
Complementary licenses are free of charge and there would be no invoices generated for a complementary license subscription.&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
To subscribe to OdataLink with a Complementary license, follow these steps.&lt;br /&gt;
# If you have multiple accounts, activate the one you wish to subscribe to&lt;br /&gt;
# Select Account / Subscription item in the menu.&lt;br /&gt;
# Click on the Subscribe button.&lt;br /&gt;
# Click on Edit Account Details button to update your details.&lt;br /&gt;
#; See [[Editing my account&#039;s details]] for more information.&lt;br /&gt;
# Click Select Billing User button&lt;br /&gt;
#; See [[Selecting the billing admin user]] for more information.&lt;br /&gt;
# Select Subscription Type as Complementary.&lt;br /&gt;
# Tick the checkbox to confirm you agree with the Terms and Conditions.&lt;br /&gt;
# Click on the Subscribe button.&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
[[Managing my account]]&lt;br /&gt;
[[Subscribing to OdataLink]]&lt;br /&gt;
&lt;br /&gt;
== Key Words ==&lt;br /&gt;
Complementary License&lt;br /&gt;
Complement&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_subscribe_to_OdataLink_with_a_Complimentary_license&amp;diff=4663</id>
		<title>How to subscribe to OdataLink with a Complimentary license</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_subscribe_to_OdataLink_with_a_Complimentary_license&amp;diff=4663"/>
		<updated>2026-07-02T11:31:21Z</updated>

		<summary type="html">&lt;p&gt;Ash: Created page with &amp;quot;To continue using OdataLink after your trial, a subscription is required.  A complimentary license can be provided by the OdataLink team in specific cases.  A complementary li...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To continue using OdataLink after your trial, a subscription is required.&lt;br /&gt;
&lt;br /&gt;
A complimentary license can be provided by the OdataLink team in specific cases.&lt;br /&gt;
&lt;br /&gt;
A complementary license includes 1 data file license.&lt;br /&gt;
&lt;br /&gt;
Complementary licenses are free of charge and there would be no invoices generated for a complementary license subscription.&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
To subscribe to OdataLink with a Complementary license, follow these steps.&lt;br /&gt;
# If you have multiple accounts, activate the one you wish to subscribe to&lt;br /&gt;
# Select Account / Subscription item in the menu.&lt;br /&gt;
# Click on the Subscribe button.&lt;br /&gt;
# Click on Edit Account Details button to update your details.&lt;br /&gt;
#; See [[Editing my account&#039;s details]] for more information.&lt;br /&gt;
# Click Select Billing User button&lt;br /&gt;
#; See [[Selecting the billing admin user]] for more information.&lt;br /&gt;
# Select Subscription Type as Complementary.&lt;br /&gt;
# Tick the checkbox to confirm you agree with the Terms and Conditions.&lt;br /&gt;
# Click on the Subscribe button.&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
[[Managing my account]]&lt;br /&gt;
[[Subscribing to OdataLink]]&lt;br /&gt;
&lt;br /&gt;
=== Key Words ===&lt;br /&gt;
Complementary License&lt;br /&gt;
Complement&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=Editing_my_account%27s_details&amp;diff=4662</id>
		<title>Editing my account&#039;s details</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=Editing_my_account%27s_details&amp;diff=4662"/>
		<updated>2026-07-02T11:25:24Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By editing your [[Account|accout&#039;s]] details, you will be able to configure it&#039;s &#039;&#039;&#039;Name&#039;&#039;&#039; and &#039;&#039;&#039;Account Code&#039;&#039;&#039; as well as &#039;&#039;&#039;Address&#039;&#039;&#039; fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Steps =&lt;br /&gt;
&lt;br /&gt;
To edit your [[Account|account&#039;s]] details, follow these steps.&lt;br /&gt;
&lt;br /&gt;
# Select &#039;&#039;&#039;Account / Subscription&#039;&#039;&#039; item in the menu.&lt;br /&gt;
# Click on the &#039;&#039;&#039;Edit Account Details&#039;&#039;&#039; button.&lt;br /&gt;
# Enter the &#039;&#039;&#039;Account Name&#039;&#039;&#039;.&lt;br /&gt;
#: This is the display name of the [[Account|account]] and is only used within the OdataLink website.&lt;br /&gt;
# Enter your &#039;&#039;&#039;Company Address&#039;&#039;&#039;.&lt;br /&gt;
# Select the &#039;&#039;&#039;Time Zone&#039;&#039;&#039; for the account.&lt;br /&gt;
#: Some [[OData Feeds]] will use this information to format dates in a readable format.&lt;br /&gt;
# Tick / untick the &#039;&#039;&#039;Enabled&#039;&#039;&#039; checkbox.&lt;br /&gt;
#: Controls whether all [[OData Feed URLs|OData feed urls]] for this [[Account|account]] are usable.&lt;br /&gt;
# Click &#039;&#039;&#039;Save&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Related Topic =&lt;br /&gt;
&lt;br /&gt;
[[Managing my account]] &amp;lt;br /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=Subscribing_to_OdataLink&amp;diff=4661</id>
		<title>Subscribing to OdataLink</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=Subscribing_to_OdataLink&amp;diff=4661"/>
		<updated>2026-07-02T11:25:02Z</updated>

		<summary type="html">&lt;p&gt;Ash: updated the name of the button from &amp;quot;Change address&amp;quot; button to &amp;quot;Edit Account Details&amp;quot; button on subscribe page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To continue using OdataLink after your trial a subscription is required&lt;br /&gt;
&lt;br /&gt;
A subscription can be setup within the OdataLink app via the Accounts tab&lt;br /&gt;
&lt;br /&gt;
The subscription process involves choosing the number of MYOB Companys or Xero Organisations (data files) required in total, confirming the edition that you require and then entering your credit card details&lt;br /&gt;
&lt;br /&gt;
Subscription fees will be process monthly. Your able cancel at any time&lt;br /&gt;
&lt;br /&gt;
When choosing the number of data files. Enter the total number you require. ie if you already have 1 and require 5 then choose 5. A pro rata invoice will be generated for the additional 4 data files&lt;br /&gt;
&lt;br /&gt;
The most cost effective edition will be selected by default based on the number of data files selected&lt;br /&gt;
&lt;br /&gt;
= Steps =&lt;br /&gt;
&lt;br /&gt;
To subscribe to OdataLink, follow these steps. &lt;br /&gt;
&lt;br /&gt;
# If you have multiple accounts, activate the one you wish to subscribe to&lt;br /&gt;
# Select &#039;&#039;&#039;Account / Subscription&#039;&#039;&#039; item in the menu.&lt;br /&gt;
# Click on the &#039;&#039;&#039;Subscribe&#039;&#039;&#039; button.&lt;br /&gt;
# Click on &#039;&#039;&#039;Edit Account Details&#039;&#039;&#039; to update your details.&lt;br /&gt;
#: See [[Editing my account&#039;s details]] for more information.&lt;br /&gt;
# Click &#039;&#039;&#039;Select Billing User&#039;&#039;&#039; button.&lt;br /&gt;
#: See [[Selecting the billing admin user]] for more information.&lt;br /&gt;
# Select the &#039;&#039;&#039;Subscription Type&#039;&#039;&#039;.&lt;br /&gt;
# Enter the number of &#039;&#039;&#039;Data File Licenses&#039;&#039;&#039; required in total. &lt;br /&gt;
# Tick to confirm you agree with the &#039;&#039;&#039;Terms&#039;&#039;&#039;.&lt;br /&gt;
# Click on the &#039;&#039;&#039;Proceed to Payment&#039;&#039;&#039; or &#039;&#039;&#039;Subscribe&#039;&#039;&#039; button.&lt;br /&gt;
&lt;br /&gt;
If subscribing to paid edition, you will then need to [[Selecting the licensed data files|select the licensed data files]].&lt;br /&gt;
&lt;br /&gt;
= Related Topic =&lt;br /&gt;
&lt;br /&gt;
[[Managing my account]] &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Search Words =&lt;br /&gt;
Subscribe to OdataLink&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=HelpID:LocalArchive&amp;diff=4659</id>
		<title>HelpID:LocalArchive</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=HelpID:LocalArchive&amp;diff=4659"/>
		<updated>2026-06-22T05:29:32Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
In some use cases, it is not possible to use OdataLink&#039;s inbuilt archive to improve performance and reduce refresh time.&lt;br /&gt;
&lt;br /&gt;
This may be due to organisational policies, subject to approval, or operational decisions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;Local Archive&#039;&#039;&#039; keeps previously downloaded data in your report (Power BI or Excel) and fetches only the most recent period live from your [[Data Filed | Data Files]] on each refresh. &lt;br /&gt;
&lt;br /&gt;
Older records are read from the archive instead of being downloaded again.&lt;br /&gt;
&lt;br /&gt;
==Why create a Local Archive==&lt;br /&gt;
=== 1. Lower Data Usage and Egress ===&lt;br /&gt;
By default, every refresh re-downloads your full history. Older transactions rarely change, so re-fetching them each time spends your monthly usage allowance for no benefit. &lt;br /&gt;
&lt;br /&gt;
A local archive fetches only the recent window live and keeps the rest locally. See [[How to track my OdataLink Usage#Usage|What is Usage]].&lt;br /&gt;
&lt;br /&gt;
===2. Stay within Xero&#039;s API limits===&lt;br /&gt;
Xero throttles data file refreshes (for example 5,000 calls per day and 60 per minute), and some endpoints are paged (Journals return 100 records per page regardless of your model&#039;s page size). &lt;br /&gt;
&lt;br /&gt;
Pulling only recent data on each refresh keeps you comfortably under these limits and avoids rate-limit errors (9004 to 9008).&lt;br /&gt;
&lt;br /&gt;
===3. Faster, more reliable refreshes===&lt;br /&gt;
Less data per refresh means quicker refreshes and fewer timeouts, especially for larger datasets.&lt;br /&gt;
&lt;br /&gt;
===4. Preserve history===&lt;br /&gt;
Your data stays in the [[Models|model]] even if it ages beyond your OdataLink model&#039;s [[Default Date Range|Default Start Date]], exceeds a report limit, or the live connection is temporarily unavailable.&lt;br /&gt;
&lt;br /&gt;
===5. If historical data does not change, do not re-download it===&lt;br /&gt;
Posted historical transactions are stable, and Xero journals are immutable (a correction is posted as a new journal, never an edit). &lt;br /&gt;
&lt;br /&gt;
Downloading the same historical rows on every refresh is redundant.&lt;br /&gt;
&lt;br /&gt;
== How to build a Local Archive ==&lt;br /&gt;
# Create a parameter in your Power Query, &#039;&#039;&#039;MonthsToRefresh&#039;&#039;&#039; which indicates how many recent months&#039; data is fetched live.&lt;br /&gt;
# A cut-off date &#039;&#039;&#039;ArchiveFrom&#039;&#039;&#039; can be calculated by reducing the MonthsToRefresh from today&#039;s date.&lt;br /&gt;
# Rows recorded on or after &#039;&#039;&#039;ArchiveFrom&#039;&#039;&#039; will be considered &#039;&#039;&#039;Live&#039;&#039;&#039; (re-fetched on each refresh).&lt;br /&gt;
# Rows before &#039;&#039;&#039;ArchiveFrom&#039;&#039;&#039; date are &#039;&#039;&#039;history&#039;&#039;&#039; (retained from the archive).&lt;br /&gt;
# The two datasets are then combined into the final table.&lt;br /&gt;
&lt;br /&gt;
== Power Query == &lt;br /&gt;
====STEP 1: Create ArchiveFrom parameter ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powerquery&amp;quot;&amp;gt;MonthsToRefresh = 3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====STEP 2: Calculate Cut-off date====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powerquery&amp;quot;&amp;gt;&lt;br /&gt;
let&lt;br /&gt;
     Today = Date.From(DateTimeZone.FixedLocalNow()),&lt;br /&gt;
     ArchiveFrom = Date.AddMonths(Today, -MonthsToRefresh)&lt;br /&gt;
in&lt;br /&gt;
    ArchiveFrom&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====STEP3: Split the dataset and combine ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powerquery&amp;quot;&amp;gt;&lt;br /&gt;
let&lt;br /&gt;
    // Live data: the most recent MonthsToRefresh months&lt;br /&gt;
    KeepLive = Table.SelectRows(Source, each Date.From([Date]) &amp;gt;= ArchiveFrom),&lt;br /&gt;
&lt;br /&gt;
    // History: older than the cut-off&lt;br /&gt;
    KeepHistory = Table.SelectRows(Source, each Date.From([Date]) &amp;lt; ArchiveFrom),&lt;br /&gt;
&lt;br /&gt;
    // Combine history + live&lt;br /&gt;
    Combined = Table.Combine({KeepHistory, KeepLive})&lt;br /&gt;
in&lt;br /&gt;
    Combined&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; Apply this filter right &#039;&#039;&#039;after Navigation&#039;&#039;&#039; step  so that the filter flows though OdataLink and filters data at the source.&lt;br /&gt;
See &#039;&#039;&#039;[[Model Date Filters and Report Date Filters]]&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Make it a True Archive ==&lt;br /&gt;
In a single file, &amp;lt;code&amp;gt;KeepHistory&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;KeepLive&amp;lt;/code&amp;gt; read from the same &amp;lt;code&amp;gt;Source&amp;lt;/code&amp;gt;, so they recombine the same rows. To actually persist history and fetch only recent data live, point each branch at a different source:&lt;br /&gt;
* &#039;&#039;&#039;KeepHistory&#039;&#039;&#039;: a stored copy that is not refreshed (a Power BI dataflow, a saved CSV/Parquet, or a separate archive query).&lt;br /&gt;
* &#039;&#039;&#039;KeepLive&#039;&#039;&#039;: the live OdataLink feed, filtered to &amp;lt;code&amp;gt;&amp;gt;= ArchiveFrom&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In Power BI, the productionised equivalent is &#039;&#039;&#039;Incremental Refresh&#039;&#039;&#039;, which uses RangeStart/RangeEnd parameters to retain old partitions and refresh only recent ones.&lt;br /&gt;
&lt;br /&gt;
== Related topics ==&lt;br /&gt;
* [[Model Date Filters and Report Date Filters]]&lt;br /&gt;
* [[How_to_track_my_OdataLink_Usage#Usage | Usage]]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=HelpID:LocalArchive&amp;diff=4656</id>
		<title>HelpID:LocalArchive</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=HelpID:LocalArchive&amp;diff=4656"/>
		<updated>2026-06-18T07:47:37Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
In some use cases, it is not possible to use OdataLink&#039;s inbuilt archive to improve performance and reduce refresh time.&lt;br /&gt;
&lt;br /&gt;
This may be due to organisational policies, subject to approval, or operational decisions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;Local Archive&#039;&#039;&#039; keeps previously downloaded data in your report (Power BI or Excel) and fetches only the most recent period live from your [[Data Filed | Data Files]] on each refresh. &lt;br /&gt;
&lt;br /&gt;
Older records are read from the archive instead of being downloaded again.&lt;br /&gt;
&lt;br /&gt;
==Why create a Local Archive==&lt;br /&gt;
=== 1. Lower Data Usage and Egress ===&lt;br /&gt;
By default, every refresh re-downloads your full history. Older transactions rarely change, so re-fetching them each time spends your monthly usage allowance for no benefit. &lt;br /&gt;
&lt;br /&gt;
A local archive fetches only the recent window live and keeps the rest locally. See [[https://help.odatalink.com/index.php?title=How_to_track_my_OdataLink_Usage#Usage|What is Usage]].&lt;br /&gt;
&lt;br /&gt;
===2. Stay within Xero&#039;s API limits===&lt;br /&gt;
Xero throttles data file refreshes (for example 5,000 calls per day and 60 per minute), and some endpoints are paged (Journals return 100 records per page regardless of your model&#039;s page size). &lt;br /&gt;
&lt;br /&gt;
Pulling only recent data on each refresh keeps you comfortably under these limits and avoids rate-limit errors (9004 to 9008).&lt;br /&gt;
&lt;br /&gt;
===3. Faster, more reliable refreshes===&lt;br /&gt;
Less data per refresh means quicker refreshes and fewer timeouts, especially for larger datasets.&lt;br /&gt;
&lt;br /&gt;
===4. Preserve history===&lt;br /&gt;
Your data stays in the [[Models|model]] even if it ages beyond your OdataLink model&#039;s [[Default Date Range|Default Start Date]], exceeds a report limit, or the live connection is temporarily unavailable.&lt;br /&gt;
&lt;br /&gt;
===5. If historical data does not change, do not re-download it===&lt;br /&gt;
Posted historical transactions are stable, and Xero journals are immutable (a correction is posted as a new journal, never an edit). &lt;br /&gt;
&lt;br /&gt;
Downloading the same historical rows on every refresh is redundant.&lt;br /&gt;
&lt;br /&gt;
== How to build a Local Archive ==&lt;br /&gt;
# Create a parameter in your Power Query, &#039;&#039;&#039;MonthsToRefresh&#039;&#039;&#039; which indicates how many recent months&#039; data is fetched live.&lt;br /&gt;
# A cut-off date &#039;&#039;&#039;ArchiveFrom&#039;&#039;&#039; can be calculated by reducing the MonthsToRefresh from today&#039;s date.&lt;br /&gt;
# Rows recorded on or after &#039;&#039;&#039;ArchiveFrom&#039;&#039;&#039; will be considered &#039;&#039;&#039;Live&#039;&#039;&#039; (re-fetched on each refresh).&lt;br /&gt;
# Rows before &#039;&#039;&#039;ArchiveFrom&#039;&#039;&#039; date are &#039;&#039;&#039;history&#039;&#039;&#039; (retained from the archive).&lt;br /&gt;
# The two datasets are then combined into the final table.&lt;br /&gt;
&lt;br /&gt;
== Power Query == &lt;br /&gt;
====STEP 1: Create ArchiveFrom parameter ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powerquery&amp;quot;&amp;gt;MonthsToRefresh = 3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====STEP 2: Calculate Cut-off date====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powerquery&amp;quot;&amp;gt;&lt;br /&gt;
let&lt;br /&gt;
     Today = Date.From(DateTimeZone.FixedLocalNow()),&lt;br /&gt;
     ArchiveFrom = Date.AddMonths(Today, -MonthsToRefresh)&lt;br /&gt;
in&lt;br /&gt;
    ArchiveFrom&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====STEP3: Split the dataset and combine ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powerquery&amp;quot;&amp;gt;&lt;br /&gt;
let&lt;br /&gt;
    // Live data: the most recent MonthsToRefresh months&lt;br /&gt;
    KeepLive = Table.SelectRows(Source, each Date.From([Date]) &amp;gt;= ArchiveFrom),&lt;br /&gt;
&lt;br /&gt;
    // History: older than the cut-off&lt;br /&gt;
    KeepHistory = Table.SelectRows(Source, each Date.From([Date]) &amp;lt; ArchiveFrom),&lt;br /&gt;
&lt;br /&gt;
    // Combine history + live&lt;br /&gt;
    Combined = Table.Combine({KeepHistory, KeepLive})&lt;br /&gt;
in&lt;br /&gt;
    Combined&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; Apply this filter right &#039;&#039;&#039;after Navigation&#039;&#039;&#039; step  so that the filter flows though OdataLink and filters data at the source.&lt;br /&gt;
See &#039;&#039;&#039;[[Model Date Filters and Report Date Filters]]&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Make it a True Archive ==&lt;br /&gt;
In a single file, &amp;lt;code&amp;gt;KeepHistory&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;KeepLive&amp;lt;/code&amp;gt; read from the same &amp;lt;code&amp;gt;Source&amp;lt;/code&amp;gt;, so they recombine the same rows. To actually persist history and fetch only recent data live, point each branch at a different source:&lt;br /&gt;
* &#039;&#039;&#039;KeepHistory&#039;&#039;&#039;: a stored copy that is not refreshed (a Power BI dataflow, a saved CSV/Parquet, or a separate archive query).&lt;br /&gt;
* &#039;&#039;&#039;KeepLive&#039;&#039;&#039;: the live OdataLink feed, filtered to &amp;lt;code&amp;gt;&amp;gt;= ArchiveFrom&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In Power BI, the productionised equivalent is &#039;&#039;&#039;Incremental Refresh&#039;&#039;&#039;, which uses RangeStart/RangeEnd parameters to retain old partitions and refresh only recent ones.&lt;br /&gt;
&lt;br /&gt;
== Related topics ==&lt;br /&gt;
* [[Model Date Filters and Report Date Filters]]&lt;br /&gt;
* [[How_to_track_my_OdataLink_Usage#Usage | Usage]]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=HelpID:LocalArchive&amp;diff=4655</id>
		<title>HelpID:LocalArchive</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=HelpID:LocalArchive&amp;diff=4655"/>
		<updated>2026-06-18T07:47:00Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
In some use cases, it is not possible to use OdataLink&#039;s inbuilt archive to improve performance and reduce refresh time.&lt;br /&gt;
&lt;br /&gt;
This may be due to organisational policies, subject to approval, or operational decisions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;Local Archive&#039;&#039;&#039; keeps previously downloaded data in your report (Power BI or Excel) and fetches only the most recent period live from your [[Data Filed | Data Files]] on each refresh. &lt;br /&gt;
&lt;br /&gt;
Older records are read from the archive instead of being downloaded again.&lt;br /&gt;
&lt;br /&gt;
==Why create a Local Archive==&lt;br /&gt;
=== 1. Lower Data Usage and Egress ===&lt;br /&gt;
By default, every refresh re-downloads your full history. Older transactions rarely change, so re-fetching them each time spends your monthly usage allowance for no benefit. &lt;br /&gt;
&lt;br /&gt;
A local archive fetches only the recent window live and keeps the rest locally. See [[https://help.odatalink.com/index.php?title=How_to_track_my_OdataLink_Usage#Usage|What is Usage]].&lt;br /&gt;
&lt;br /&gt;
===2. Stay within Xero&#039;s API limits===&lt;br /&gt;
Xero throttles data file refreshes (for example 5,000 calls per day and 60 per minute), and some endpoints are paged (Journals return 100 records per page regardless of your model&#039;s page size). &lt;br /&gt;
&lt;br /&gt;
Pulling only recent data on each refresh keeps you comfortably under these limits and avoids rate-limit errors (9004 to 9008).&lt;br /&gt;
&lt;br /&gt;
===3. Faster, more reliable refreshes===&lt;br /&gt;
Less data per refresh means quicker refreshes and fewer timeouts, especially for larger datasets.&lt;br /&gt;
&lt;br /&gt;
===4. Preserve history===&lt;br /&gt;
Your data stays in the [[Models|model]] even if it ages beyond your OdataLink model&#039;s [[Default Date Range|Default Start Date]], exceeds a report limit, or the live connection is temporarily unavailable.&lt;br /&gt;
&lt;br /&gt;
===5. If historical data does not change, do not re-download it===&lt;br /&gt;
Posted historical transactions are stable, and Xero journals are immutable (a correction is posted as a new journal, never an edit). &lt;br /&gt;
&lt;br /&gt;
Downloading the same historical rows on every refresh is redundant.&lt;br /&gt;
&lt;br /&gt;
== How to build a Local Archive ==&lt;br /&gt;
# Create a parameter in your Power Query, &#039;&#039;&#039;MonthsToRefresh&#039;&#039;&#039; which indicates how many recent months&#039; data is fetched live.&lt;br /&gt;
# A cut-off date &#039;&#039;&#039;ArchiveFrom&#039;&#039;&#039; can be calculated by reducing the MonthsToRefresh from today&#039;s date.&lt;br /&gt;
# Rows recorded on or after &#039;&#039;&#039;ArchiveFrom&#039;&#039;&#039; will be considered &#039;&#039;&#039;Live&#039;&#039;&#039; (re-fetched on each refresh).&lt;br /&gt;
# Rows before &#039;&#039;&#039;ArchiveFrom&#039;&#039;&#039; date are &#039;&#039;&#039;history&#039;&#039;&#039; (retained from the archive).&lt;br /&gt;
# The two datasets are then combined into the final table.&lt;br /&gt;
&lt;br /&gt;
== Power Query == &lt;br /&gt;
====STEP 1: Create ArchiveFrom parameter ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powerquery&amp;quot;&amp;gt;MonthsToRefresh = 3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====STEP 2: Calculate Cut-off date====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powerquery&amp;quot;&amp;gt;&lt;br /&gt;
let&lt;br /&gt;
     Today = Date.From(DateTimeZone.FixedLocalNow()),&lt;br /&gt;
     ArchiveFrom = Date.AddMonths(Today, -MonthsToRefresh)&lt;br /&gt;
in&lt;br /&gt;
    ArchiveFrom&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====STEP3: Split the dataset and combine ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powerquery&amp;quot;&amp;gt;&lt;br /&gt;
let&lt;br /&gt;
    // Live data: the most recent MonthsToRefresh months&lt;br /&gt;
    KeepLive = Table.SelectRows(Source, each Date.From([Date]) &amp;gt;= ArchiveFrom),&lt;br /&gt;
&lt;br /&gt;
    // History: older than the cut-off&lt;br /&gt;
    KeepHistory = Table.SelectRows(Source, each Date.From([Date]) &amp;lt; ArchiveFrom),&lt;br /&gt;
&lt;br /&gt;
    // Combine history + live&lt;br /&gt;
    Combined = Table.Combine({KeepHistory, KeepLive})&lt;br /&gt;
in&lt;br /&gt;
    Combined&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; Apply this filter right &#039;&#039;&#039;after Navigation&#039;&#039;&#039; step  so that the filter flows though OdataLink and filters data at the source.&lt;br /&gt;
See &#039;&#039;&#039;[[Model Date Filters and Report Date Filters]]&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Make it a True Archive ==&lt;br /&gt;
In a single file, &amp;lt;code&amp;gt;KeepHistory&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;KeepLive&amp;lt;/code&amp;gt; read from the same &amp;lt;code&amp;gt;Source&amp;lt;/code&amp;gt;, so they recombine the same rows. To actually persist history and fetch only recent data live, point each branch at a different source:&lt;br /&gt;
* &#039;&#039;&#039;KeepHistory&#039;&#039;&#039;: a stored copy that is not refreshed (a Power BI dataflow, a saved CSV/Parquet, or a separate archive query).&lt;br /&gt;
* &#039;&#039;&#039;KeepLive&#039;&#039;&#039;: the live OdataLink feed, filtered to &amp;lt;code&amp;gt;&amp;gt;= ArchiveFrom&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In Power BI, the productionised equivalent is &#039;&#039;&#039;Incremental Refresh&#039;&#039;&#039;, which uses RangeStart/RangeEnd parameters to retain old partitions and refresh only recent ones.&lt;br /&gt;
&lt;br /&gt;
== Related topics ==&lt;br /&gt;
* [[Model Date Filters and Report Date Filters]]&lt;br /&gt;
* [https://help.odatalink.com/index.php?title=How_to_track_my_OdataLink_Usage#Usage Usage]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=HelpID:LocalArchive&amp;diff=4654</id>
		<title>HelpID:LocalArchive</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=HelpID:LocalArchive&amp;diff=4654"/>
		<updated>2026-06-18T07:46:27Z</updated>

		<summary type="html">&lt;p&gt;Ash: new page to help users set up their own local archive&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Overview ==&lt;br /&gt;
In some use cases, it is not possible to use OdataLink&#039;s inbuilt archive to improve performance and reduce refresh time.&lt;br /&gt;
&lt;br /&gt;
This may be due to organisational policies, subject to approval, or operational decisions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;Local Archive&#039;&#039;&#039; keeps previously downloaded data in your report (Power BI or Excel) and fetches only the most recent period live from your [[Data Filed | Data Files]] on each refresh. &lt;br /&gt;
&lt;br /&gt;
Older records are read from the archive instead of being downloaded again.&lt;br /&gt;
&lt;br /&gt;
==Why create a Local Archive==&lt;br /&gt;
=== 1. Lower Data Usage and Egress ===&lt;br /&gt;
By default, every refresh re-downloads your full history. Older transactions rarely change, so re-fetching them each time spends your monthly usage allowance for no benefit. &lt;br /&gt;
&lt;br /&gt;
A local archive fetches only the recent window live and keeps the rest locally. See [[https://help.odatalink.com/index.php?title=How_to_track_my_OdataLink_Usage#Usage|What is Usage]].&lt;br /&gt;
&lt;br /&gt;
===2. Stay within Xero&#039;s API limits===&lt;br /&gt;
Xero throttles data file refreshes (for example 5,000 calls per day and 60 per minute), and some endpoints are paged (Journals return 100 records per page regardless of your model&#039;s page size). &lt;br /&gt;
&lt;br /&gt;
Pulling only recent data on each refresh keeps you comfortably under these limits and avoids rate-limit errors (9004 to 9008).&lt;br /&gt;
&lt;br /&gt;
===3. Faster, more reliable refreshes===&lt;br /&gt;
Less data per refresh means quicker refreshes and fewer timeouts, especially for larger datasets.&lt;br /&gt;
&lt;br /&gt;
===4. Preserve history===&lt;br /&gt;
Your data stays in the [[Models|model]] even if it ages beyond your OdataLink model&#039;s [[Default Date Range|Default Start Date]], exceeds a report limit, or the live connection is temporarily unavailable.&lt;br /&gt;
&lt;br /&gt;
===5. If historical data does not change, do not re-download it===&lt;br /&gt;
Posted historical transactions are stable, and Xero journals are immutable (a correction is posted as a new journal, never an edit). &lt;br /&gt;
&lt;br /&gt;
Downloading the same historical rows on every refresh is redundant.&lt;br /&gt;
&lt;br /&gt;
== How to build a Local Archive ==&lt;br /&gt;
# Create a parameter in your Power Query, &#039;&#039;&#039;MonthsToRefresh&#039;&#039;&#039; which indicates how many recent months&#039; data is fetched live.&lt;br /&gt;
# A cut-off date &#039;&#039;&#039;ArchiveFrom&#039;&#039;&#039; can be calculated by reducing the MonthsToRefresh from today&#039;s date.&lt;br /&gt;
# Rows recorded on or after &#039;&#039;&#039;ArchiveFrom&#039;&#039;&#039; will be considered &#039;&#039;&#039;Live&#039;&#039;&#039; (re-fetched on each refresh).&lt;br /&gt;
# Rows before &#039;&#039;&#039;ArchiveFrom&#039;&#039;&#039; date are &#039;&#039;&#039;history&#039;&#039;&#039; (retained from the archive).&lt;br /&gt;
# The two datasets are then combined into the final table.&lt;br /&gt;
&lt;br /&gt;
== Power Query == &lt;br /&gt;
====STEP 1: Create ArchiveFrom parameter ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powerquery&amp;quot;&amp;gt;MonthsToRefresh = 3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====STEP 2: Calculate Cut-off date====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powerquery&amp;quot;&amp;gt;&lt;br /&gt;
let&lt;br /&gt;
     Today = Date.From(DateTimeZone.FixedLocalNow()),&lt;br /&gt;
     ArchiveFrom = Date.AddMonths(Today, -MonthsToRefresh)&lt;br /&gt;
in&lt;br /&gt;
    ArchiveFrom&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====STEP3: Split the dataset and combine ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;powerquery&amp;quot;&amp;gt;&lt;br /&gt;
let&lt;br /&gt;
    // Live data: the most recent MonthsToRefresh months&lt;br /&gt;
    KeepLive = Table.SelectRows(Source, each Date.From([Date]) &amp;gt;= ArchiveFrom),&lt;br /&gt;
&lt;br /&gt;
    // History: older than the cut-off&lt;br /&gt;
    KeepHistory = Table.SelectRows(Source, each Date.From([Date]) &amp;lt; ArchiveFrom),&lt;br /&gt;
&lt;br /&gt;
    // Combine history + live&lt;br /&gt;
    Combined = Table.Combine({KeepHistory, KeepLive})&lt;br /&gt;
in&lt;br /&gt;
    Combined&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; Apply this filter right &#039;&#039;&#039;after Navigation&#039;&#039;&#039; step  so that the filter flows though OdataLink and filters data at the source.&lt;br /&gt;
See &#039;&#039;&#039;[[Model Date Filters and Report Date Filters]]&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Make it a True Archive ==&lt;br /&gt;
In a single file, &amp;lt;code&amp;gt;KeepHistory&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;KeepLive&amp;lt;/code&amp;gt; read from the same &amp;lt;code&amp;gt;Source&amp;lt;/code&amp;gt;, so they recombine the same rows. To actually persist history and fetch only recent data live, point each branch at a different source:&lt;br /&gt;
* &#039;&#039;&#039;KeepHistory&#039;&#039;&#039;: a stored copy that is not refreshed (a Power BI dataflow, a saved CSV/Parquet, or a separate archive query).&lt;br /&gt;
* &#039;&#039;&#039;KeepLive&#039;&#039;&#039;: the live OdataLink feed, filtered to &amp;lt;code&amp;gt;&amp;gt;= ArchiveFrom&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In Power BI, the productionised equivalent is &#039;&#039;&#039;Incremental Refresh&#039;&#039;&#039;, which uses RangeStart/RangeEnd parameters to retain old partitions and refresh only recent ones.&lt;br /&gt;
&lt;br /&gt;
== Related topics ==&lt;br /&gt;
* [[Model Date Filters and Report Date Filters]]&lt;br /&gt;
* [[https://help.odatalink.com/index.php?title=How_to_track_my_OdataLink_Usage#Usage|Usage]]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Transfer_Ownership_of_an_OdataLink_account&amp;diff=4653</id>
		<title>How to Transfer Ownership of an OdataLink account</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Transfer_Ownership_of_an_OdataLink_account&amp;diff=4653"/>
		<updated>2026-06-15T06:54:44Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
In some cases, an organisation may engage independent consultants or developers to build a specialised custom reporting solution.&lt;br /&gt;
&lt;br /&gt;
When the engagement is completed, or the project is finished, the ownership of the [[Account|OdataLink Account]] can be transferred by following the steps below&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== Invite an Account Admin and a Billing Admin to your OdataLink account ==&lt;br /&gt;
# [[Inviting users to my account|Send an Invite]] to the emails/persons designated to be the Account&#039;s [[Users|Admin User]] and [[Users|Billing Admin]] for the account.&lt;br /&gt;
# Once the Admin and Billing Admin have registered as Users in OdataLink dashboard, [[Editing my account&#039;s details|update your account details]] and save the changes.&lt;br /&gt;
# You can add shared mailboxes to [[Selecting_the_user_that_will_receive_invoices|recieve invoices]] by clicking on &#039;&#039;&#039;Manage Invoice Recipients&#039;&#039;&#039; button in Account/Subscription settings under &#039;&#039;&#039;&#039;&#039;Invoice Recipients&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Remove and Revoke the Access of External Users ==&lt;br /&gt;
# Once the Account managers are invited to the account, they can [[Revoking users access to my account|Revoke access of external users]] to the account.&lt;br /&gt;
# Remove all [[Removing IP addresses|IP Addresses]] belonging to the external users.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
[[Managing my account]]&lt;br /&gt;
&lt;br /&gt;
[[Managing users]]&lt;br /&gt;
&lt;br /&gt;
[[Configuring IP addresses]]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Power_Users&amp;diff=4647</id>
		<title>How to Reduce my OdataLink Usage - For Power Users</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Power_Users&amp;diff=4647"/>
		<updated>2026-06-05T04:30:30Z</updated>

		<summary type="html">&lt;p&gt;Ash: fair use policy published, correcting the location of the policy doc on the website&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Your OdataLink subscription includes a monthly data download allowance under our [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. If your organisation have persists OdataLink data into SQL Server, Azure SQL, Fabric Lakehouse/Warehouse, or any other data platform via SSIS, Azure Data Factory (ADF), using Fabric Data Pipelines or Fabric DataFlows, the following techniques will help reduce egress and pipeline usage costs.&lt;br /&gt;
&lt;br /&gt;
This help page is intended towards Data Engineering and Fabric Developer teams running data pipelines and staging data into persistent storage. For report-level optimisations, see [[How to Reduce my OdataLink Usage - For Advanced Users]].&lt;br /&gt;
&lt;br /&gt;
For OdataLink model-level optimisations, see [[How to Reduce my OdataLink Usage - For Everyday Users]].&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039;. &lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
= Stage Once, Serve Many =&lt;br /&gt;
&lt;br /&gt;
=== 1. Use a Single Staging Platform or Pipeline ===&lt;br /&gt;
The biggest source of high usage is the same OData entity being downloaded by multiple reports, models, and pipelines. Each retrieval contributes to increasing the total egress or data downloaded from connected [[Data Files|Data File(s)]]&lt;br /&gt;
&lt;br /&gt;
# Pull relevant OData endpoints into a &#039;&#039;&#039;staging layer&#039;&#039;&#039; (SQL Server, Azure SQL, Fabric Lakehouse, Fabric Warehouse, etc.) &#039;&#039;&#039;once per refresh cycle&#039;&#039;&#039;. Schedule the refresh or trigger it on demand via Power Automate.&lt;br /&gt;
# Update all your queries to point to the staging layer - Power BI Dashboards/Reports/semantic models, Excel reports, Fabric notebooks, Power Apps, and disconnected from OdataLink.&lt;br /&gt;
&lt;br /&gt;
This collapses N reports × M queries refreshes into a &#039;&#039;&#039;single retrieval per cycle&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; &#039;&#039;&#039;Fabric Dataflow Legacy/Gen2&#039;&#039;&#039; is a managed staging layer built on the Power Query (M) engine. It is well suited to teams who want centralised OdataLink ingestion without provisioning SQL Server. Multiple Power BI, Excel, Power Apps, and Power Automate consumers can then read from the Dataflow output, querying OdataLink only once per Gen2 refresh.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://learn.microsoft.com/en-us/fabric/data-factory/dataflow-gen2-incremental-refresh Fabric Dataflow Gen2 incremental refresh]&lt;br /&gt;
&lt;br /&gt;
= Incremental Loading =&lt;br /&gt;
&lt;br /&gt;
=== 2. Replace truncate-and-reload with watermarked incremental loads ===&lt;br /&gt;
&lt;br /&gt;
Truncate-and-reload re-downloads everything on every run. Instead, use a &#039;&#039;&#039;high-watermark column&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;watermark&amp;quot; group=&amp;quot;watermark&amp;quot;&amp;gt;Cardoso, M. (2023). Robust data ingestion with High-watermarking. &#039;&#039;Microsoft Community Hub&#039;&#039;. [https://techcommunity.microsoft.com/blog/fasttrackforazureblog/robust-data-ingestion-with-high-watermarking/3707480 &amp;lt;u&amp;gt;techcommunity.microsoft.com/blog/fasttrackforazureblog/robust-data-ingestion-with-high-watermarking/3707480&amp;lt;/u&amp;gt;]&amp;lt;/ref&amp;gt; (typically &amp;lt;code&amp;gt;LastModifiedDateTime&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UpdatedDateUTC&amp;lt;/code&amp;gt;) and pass it into the OData URL via &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; so OdataLink returns only changed rows.&lt;br /&gt;
&lt;br /&gt;
Pattern:&lt;br /&gt;
&amp;lt;code&amp;gt;GET .../Invoices?$filter=LastModifiedDateTime gt 2026-05-01T00:00:00Z&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Store the maximum &amp;lt;code&amp;gt;Watermark_Value&amp;lt;/code&amp;gt; from the last successful run in a &#039;&#039;&#039;control table&#039;&#039;&#039; (e.g. &amp;lt;code&amp;gt;dbo.PipelineWatermarks&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dbo.Company1Watermarks&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dbo.LastUpdatedWatermark&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Read and inject that value as the lower bound into the OData URL at the start of the next run.&lt;br /&gt;
# &#039;&#039;&#039;Merge (UPSERT)&#039;&#039;&#039; the result into the target table on the natural key (UID). Apply append rules carefully, handling edge cases.&lt;br /&gt;
# Update the watermark &amp;lt;ref name=&amp;quot;watermark&amp;quot; group=&amp;quot;watermark&amp;quot; /&amp;gt; in the control table &#039;&#039;&#039;only after&#039;&#039;&#039; the merge has completed successfully. A failed run can safely re-pull the same window for the data on retry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; This pattern works in &#039;&#039;&#039;SSIS&#039;&#039;&#039; (OData Source component with parameterised URL via Expression), &#039;&#039;&#039;Azure Data Factory / Fabric Data Pipelines&#039;&#039;&#039; (Copy Activity with dynamic OData query expression), &#039;&#039;&#039;Fabric Dataflow Gen2&#039;&#039;&#039; (M parameter), and any custom .NET / Python ETL.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[OData Feed URLs| OdataLink OData URL structure and query parameters]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Project only required columns with &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
By default, retrieving an entity returns every column, most of which are rarely useful in a warehouse. Restricting columns at the URL level reduces download size, egress, and staging table footprint.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code&amp;gt;GET .../Invoices?$select=InvoiceID,InvoiceNumber,Date,Total,Status,LastModifiedDateTime&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Always include your watermark &amp;lt;ref  name=&amp;quot;watermark&amp;quot; group=&amp;quot;watermark&amp;quot; /&amp;gt; column in &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt;, even if it is not loaded into the final warehouse table. Your query transformations need it for the next refresh.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Run historical backfills as a one-time non-recurring job ===&lt;br /&gt;
&lt;br /&gt;
The first load of a large entity is the most expensive download. Your Data workflow should handle it as a one-off setup task, and not on a schedule.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Run the backfill once&#039;&#039;&#039;: using a separate package or pipeline distinct from your incremental job.&lt;br /&gt;
# &#039;&#039;&#039;Follow &amp;lt;code&amp;gt;@odata.nextLink&amp;lt;/code&amp;gt;&#039;&#039;&#039;: to page through the data in chunks rather than trying to pull everything in a single request.&lt;br /&gt;
# &#039;&#039;&#039;Break very large entities into date-bounded windows&#039;&#039;&#039;: (year-by-year or quarter-by-quarter) using &amp;lt;code&amp;gt;$filter=Date ge &#039;YYYY-01-01&#039; and Date lt &#039;YYYY+1-01-01&#039;&amp;lt;/code&amp;gt;. A failed run only re-runs the failed window.&lt;br /&gt;
# &#039;&#039;&#039;Record completed windows&#039;&#039;&#039;: in a control table (e.g. &amp;lt;code&amp;gt;dbo.BackfillProgress&amp;lt;/code&amp;gt;). The backfill becomes safe to re-run, already-loaded windows can be skipped.&lt;br /&gt;
# &#039;&#039;&#039;Switch off the backfill once history is loaded&#039;&#039;&#039;: Recurring queries or jobs will then fetch new data using incremental loads only (Section 2).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Rule of thumb:&#039;&#039;&#039; If your scheduled pipeline is re-downloading data older than intended, check your query filters. Historical data should already be in your staging table.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Scheduling =&lt;br /&gt;
&lt;br /&gt;
=== 5. Schedule pipelines deliberately ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Stagger pipeline schedules&#039;&#039;&#039;, so that multiple pipelines do not hit the same tenant simultaneously.&lt;br /&gt;
* &#039;&#039;&#039;Align frequency with the business cycle.&#039;&#039;&#039; Daily General Ledger snapshots rarely need sub-hourly retrieval.&lt;br /&gt;
* &#039;&#039;&#039;Use off-peak windows&#039;&#039;&#039;: schedule heavy historical refreshes overnight or at weekends.&lt;br /&gt;
* &#039;&#039;&#039;Use dependency-based triggers&#039;&#039;&#039;: In Fabric Data Pipelines and Azure Data Factory, trigger downstream pipelines based on the completion event of the upstream load and not at a fixed time. Downstream jobs should run only when the upstream actually produced new rows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. Refresh reference and transactional data on separate frequencies ===&lt;br /&gt;
&lt;br /&gt;
Reference entities change far less frequently than transactional entities. Split your pipeline into two schedules:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Frequency!! Examples&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Slow (daily or weekly)&#039;&#039;&#039; || Chart of Accounts, Tax Rates, Tracking Categories, Contacts (where stable), Items&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Fast (intra-day or hourly)&#039;&#039;&#039; || Invoices, Bills, Credit Notes, Bank Transactions, Journals&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Refreshing reference tables less often and joining them server-side at the warehouse avoids re-downloading effectively static data multiple times per day.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
=== 7. Monitor pipeline cost end-to-end ===&lt;br /&gt;
&lt;br /&gt;
OdataLink egress is one component of total pipeline cost. Track both OdataLink usage and your Fabric Compute Units (CUs)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OdataLink egress:&#039;&#039;&#039; OdataLink Admin Portal → View Account Details → &#039;&#039;&#039;Usage Stats&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Azure/Fabric Compute and storage :&#039;&#039;&#039; Azure Cost Management, Fabric Capacity Metrics app&lt;br /&gt;
&lt;br /&gt;
A well-tuned pipeline reduces both egress and compute. If OdataLink usage drops but Fabric capacity unit (CU) consumption rises, review whether the staging layer itself is computing on the same data set multiple times.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Combined egress reduction example ==&lt;br /&gt;
&lt;br /&gt;
Stacked optimisation techniques reduce Egress and Cost significantly:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;GET .../Invoices?$filter=LastModifiedDateTime gt &#039;2026-05-01T00:00:00Z&#039;&amp;amp;$select=InvoiceID,InvoiceNumber,Date,Total,Status,LastModifiedDateTime&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Combined with stage-once-serve-many architecture, this typically reduces OdataLink egress by &#039;&#039;&#039;90%+&#039;&#039;&#039; versus N consumers each pulling full unfiltered entities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power Users checklist ==&lt;br /&gt;
&lt;br /&gt;
* [ ] OdataLink data staged once into SQL / Lakehouse / Warehouse / Dataflow Gen2, downstream consumers read from the staging layer&lt;br /&gt;
* [ ] All recurring loads use &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; with a &#039;&#039;&#039;high-watermark&#039;&#039;&#039; column&amp;lt;ref  name=&amp;quot;watermark&amp;quot; group=&amp;quot;watermark&amp;quot; /&amp;gt;&lt;br /&gt;
* [ ] Watermark stored in a control table, updated only on successful append/merge&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used on every entity, including the watermark column&lt;br /&gt;
* [ ] Full-table backfills are one-time, not recurring&lt;br /&gt;
* [ ] Historical backfills broken into resumable date-bounded windows&lt;br /&gt;
* [ ] Pipeline schedules staggered and aligned with the business cycle&lt;br /&gt;
* [ ] Reference and transactional data refreshed on separate schedules&lt;br /&gt;
* [ ] Downstream pipelines triggered by upstream completion, not fixed time&lt;br /&gt;
* [ ] Both OdataLink egress and Azure / Fabric compute cost monitored&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your data query and transformation steps, refresh patterns, and pipeline design, and recommend further optimisations in order to bring your account usage within limits.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&amp;lt;references group=&amp;quot;watermark&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
&lt;br /&gt;
* [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Advanced Users]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
* [[Models]]&lt;br /&gt;
* [[Data Files]]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [https://odatalink.com/eula/fair-use-policy OdataLink Fair Use Policy]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Advanced_Users&amp;diff=4646</id>
		<title>How to Reduce my OdataLink Usage - For Advanced Users</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Advanced_Users&amp;diff=4646"/>
		<updated>2026-06-05T04:29:59Z</updated>

		<summary type="html">&lt;p&gt;Ash: fair use policy published, correcting the location of the policy doc on the website&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Your OdataLink subscription includes a monthly data download allowance under our [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. If your reports or dashboards use Power Query transformations to clean and shape the dataset, the following optimisations techniques will reduce egress and improve refresh performance.&lt;br /&gt;
&lt;br /&gt;
This help page is intended towards report developers working with &#039;&#039;&#039;M Language/Power Query&#039;&#039;&#039;. For developers using Fabric Data Pipelines, Azure Data Factory, SSIS, or persistent staging into Lakehouse/Warehouse/DataLake, &lt;br /&gt;
&amp;lt;br /&amp;gt;see [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039;. &lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Query-Level Filtering =&lt;br /&gt;
This sections explains how applying a filter early in the transformation steps helps reduce egress. Query level filtering makes use of OdataLink feature that can pass the filters up directly to the data source. This results in OdataLink only downloading the filtered data out of your [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
=== 1. Push date filters up to the OData feed level (query folding) ===&lt;br /&gt;
Filtering data &#039;&#039;&#039;after&#039;&#039;&#039; it has been downloaded does not reduce egress since the records have already been pulled out from the company file.&lt;br /&gt;
&lt;br /&gt;
Filtering must happen at the &#039;&#039;&#039;Navigation step&#039;&#039;&#039; in Power Query so the filter is sent to OdataLink as part of the OData query (&amp;lt;code&amp;gt;$filter=...&amp;lt;/code&amp;gt;) and only the matching/filtered rows are returned.&lt;br /&gt;
&lt;br /&gt;
# Apply date filters as early as possible, directly on the source table, before any merges, joins, or column expansions.&lt;br /&gt;
# Avoid applying &amp;lt;code&amp;gt;Table.SelectRows&amp;lt;/code&amp;gt; over a downloaded table when an equivalent filter can be applied at the navigation step.&lt;br /&gt;
&amp;lt;!--# Verify folding: right-click a step in Power Query → &#039;&#039;&#039;View Native Query&#039;&#039;&#039;. If the option is greyed out, the filter is being applied client-side and egress is not reduced.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Model Date Filters and Report Date Filters| &#039;&#039;&#039;Reference -&#039;&#039;&#039; Model Date Filters vs Report Date Filters]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Apply supported OData filter operators ===&lt;br /&gt;
&lt;br /&gt;
The following operators fold to the OData feed and execute server-side before any data leaves your data file:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Operator !! Operation !! Example&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;eq&amp;lt;/code&amp;gt; || equal || &amp;lt;code&amp;gt;Status eq &#039;ACTIVE&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ne&amp;lt;/code&amp;gt; || not equal || &amp;lt;code&amp;gt;Status ne &#039;ARCHIVED&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lt&amp;lt;/code&amp;gt; || greater / less than || &amp;lt;code&amp;gt;Date gt &#039;2026-01-01&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ge&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;le&amp;lt;/code&amp;gt; || greater / less than or equal || &amp;lt;code&amp;gt;Amount ge 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; || logical AND || &amp;lt;code&amp;gt;Status eq &#039;ACTIVE&#039; and Type eq &#039;BANK&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; || logical OR || &amp;lt;code&amp;gt;Type eq &#039;BANK&#039; or Type eq &#039;CREDIT_CARD&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;startswith()&amp;lt;/code&amp;gt; || prefix match || &amp;lt;code&amp;gt;startswith(Empname, &#039;Ia&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;contains()&amp;lt;/code&amp;gt; || substring match || &amp;lt;code&amp;gt;contains(GLCode, &#039;5-01&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; &amp;lt;code&amp;gt;startswith()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;contains()&amp;lt;/code&amp;gt; work on text/string fields (such as Code, Name, Description) but may fail or produce unexpected results on date, datetime and datetimezone fields. Use comparison operators (&amp;lt;code&amp;gt;gt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ge&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;le&amp;lt;/code&amp;gt;) for those columns instead.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Filter examples by use case ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date range&#039;&#039;&#039; — highest single-impact reduction:&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Date ge &#039;2026-01-01&#039; and Date le &#039;2026-12-31&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Active records only:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Status eq &#039;ACTIVE&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exclude archived:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Status ne &#039;ARCHIVED&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Limit columns retrieved with &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
OData supports projection via &amp;lt;code&amp;gt;$select=Col1,Col2,...&amp;lt;/code&amp;gt;. By default, every column on the entity is returned, including wide free-text fields that may never appear in your report. Restricting projection reduces row size and network transfer.&lt;br /&gt;
&lt;br /&gt;
In Power Query, expand only the columns you need before any other step, and confirm the resulting native query includes a &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; clause.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code&amp;gt;$select=InvoiceID,InvoiceNumber,Date,Total,Status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== 5. Combining Filters ===&lt;br /&gt;
&lt;br /&gt;
Stacked techniques decrease the Usage rapidly. Example combined filter + projection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Date ge &#039;2026-06-01&#039; and Status eq &#039;ACTIVE&#039;&amp;amp;$select=InvoiceID,InvoiceNumber,Date,Total,Status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typically reduces egress by &#039;&#039;&#039;~80%&#039;&#039;&#039; vs. an unfiltered, all-columns extraction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Incremental Refreshing =&lt;br /&gt;
&lt;br /&gt;
=== 6. Use Incremental Refresh for time-series data ===&lt;br /&gt;
&lt;br /&gt;
For datasets keyed on a date, datetime, or datetimezone column, configure &#039;&#039;&#039;Incremental Refresh&#039;&#039;&#039; so that only new or changed partitions are pulled on each refresh.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Power BI Premium / Fabric:&#039;&#039;&#039; native incremental refresh on semantic models.&lt;br /&gt;
* &#039;&#039;&#039;Power BI Pro:&#039;&#039;&#039; supported, but requires care to ensure the date filter folds. Test with &#039;&#039;&#039;View Native Query&#039;&#039;&#039; before publishing.&lt;br /&gt;
* &#039;&#039;&#039;Excel:&#039;&#039;&#039; use a date-threshold named range and filter the query URL on it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; If your organisation uses Microsoft Fabric, ask your data engineering team or IT admin about staging OdataLink feeds into a &#039;&#039;&#039;Fabric Dataflow&#039;&#039;&#039; (Legacy or Gen2, built on Power Query). Multiple reports, staging databases and data warehouses can then consume the staged data without each one querying OdataLink directly. See [[How to Reduce my OdataLink Usage - For Power Users]].&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
Verify your optimisations in your Models Settings  &#039;&#039;&#039;Manage Models → View → Usage tab&#039;&#039;&#039; for monitoring a specific model. Compare:&lt;br /&gt;
* Unfiltered request volume (GB) - your baseline before optimising&lt;br /&gt;
* Filtered request volume (GB) - after applying optimisation&lt;br /&gt;
* &#039;&#039;&#039;Reduction %&#039;&#039;&#039; = (Unfiltered Volume − Filtered Volume) ÷ Unfiltered Data Volume × 100&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Target:&#039;&#039;&#039; 50–70% combined reduction from filtering + incremental refresh + column projection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power Query checklist ==&lt;br /&gt;
&lt;br /&gt;
* [ ] Date filters applied at the OData navigation step&lt;br /&gt;
* [ ] Verify Query folding&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used to limit columns retrieved&lt;br /&gt;
* [ ] Incremental refresh enabled for time-series datasets&lt;br /&gt;
* [ ] Refresh schedule matches actual report usage&lt;br /&gt;
* [ ] Considered Fabric Dataflow Gen2 if multiple reports share the same data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and query transformations, and recommend further optimisations in attempts to reduce your account usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
&lt;br /&gt;
* [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
* [[Models]]&lt;br /&gt;
* [[Data Files]]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [[Model Date Filters and Report Date Filters]]&lt;br /&gt;
* [https://odatalink.com/eula/fair-use-policy OdataLink Fair Use Policy]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Everyday_Users&amp;diff=4645</id>
		<title>How to Reduce my OdataLink Usage - For Everyday Users</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Everyday_Users&amp;diff=4645"/>
		<updated>2026-06-05T04:29:24Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Overview =&lt;br /&gt;
Your OdataLink subscription includes a monthly data download allowance under our [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. If your account&#039;s connected [[Data Files|data file(s)]] are frequently approaching or exceeding monthly limits, the following techniques will help reduce usage with minimal impact to your reporting functionality.&lt;br /&gt;
&lt;br /&gt;
The following optimisations can be applied directly in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039; or in your reporting software. &lt;br /&gt;
&amp;lt;!--Based on whether&lt;br /&gt;
# Your reporting solution uses (or will use) &#039;&#039;&#039;automatic refresh&#039;&#039;&#039;&lt;br /&gt;
# Your reporting solution uses (or will use) &#039;&#039;&#039;manual or on-demand refresh&#039;&#039;&#039;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039;. &lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Automatic Data Refresh / Data Fetch ==&lt;br /&gt;
&lt;br /&gt;
=== Optimise Usage by reducing automatic refresh frequency ===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
= Refresh Schedule =&lt;br /&gt;
&lt;br /&gt;
=== 1. Reduce Automatic Refresh frequency ===&lt;br /&gt;
Most reports do not need to refresh every hour, every day, or on weekends. Each scheduled refresh re-pulls data and counts toward your allowance.&lt;br /&gt;
&lt;br /&gt;
* Match the refresh frequency to how often you actually look at the report.&lt;br /&gt;
* Disable refreshes outside business hours and on weekends if the report is not viewed then.&lt;br /&gt;
* For monthly reports, a daily or weekly refresh is usually sufficient.&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; Refreshing a sales dashboard hourly when the team only checks it on Monday mornings can use 24× more data than needed. Drop to daily, or weekly, and you may reduce that report&#039;s usage by 95%+.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Manual / On-demand Refresh ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2. Refresh manually only when you need updated Data ===&lt;br /&gt;
&lt;br /&gt;
If you can, use on-demand refresh:&lt;br /&gt;
*Refresh only when you actually need the latest figures.&lt;br /&gt;
*Batch multiple reports into a single refresh window where possible.&lt;br /&gt;
* Avoid &amp;quot;refresh-just-in-case&amp;quot; before meetings — schedule a single refresh ahead of time instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
= Model Settings =&lt;br /&gt;
The settings below are configured once per [[Models|model]] in your &#039;&#039;&#039;OdataLink Portal&#039;&#039;&#039; and applies to &#039;&#039;&#039;every refresh&#039;&#039;&#039; request.&lt;br /&gt;
&lt;br /&gt;
=== 2. Apply a Cut-off Date on your model ===&lt;br /&gt;
&lt;br /&gt;
OdataLink provides the ability to archive historical data to avoid re-downloading of same data on every refresh. The &#039;&#039;&#039;Cut-Off Date&#039;&#039;&#039; instructs OdataLink to save data up to the cut-off date and serve future refreshes from that archive.&lt;br /&gt;
&lt;br /&gt;
Setting a cut-off date in your model dramatically reduces the volume retrieved on every refresh by avoiding downloading the same historical data multiple times.&lt;br /&gt;
&lt;br /&gt;
To set a cut off date and enable archiving in your model:&lt;br /&gt;
# &#039;&#039;&#039;Archive Type:&#039;&#039;&#039;  Set the [[Archive Types|Archive Type]] of your model to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; to enable archiving.&lt;br /&gt;
# &#039;&#039;&#039;Archive Cut-Off Date:&#039;&#039;&#039; Set either a fixed cut-off date, or a &#039;&#039;&#039;rolling window&#039;&#039;&#039; that continuously archives data older than X months or X days.&lt;br /&gt;
&amp;lt;!--#; OdataLink recommends setting a rolling window archiving so that the new data also gets archived after a certain number of days or months.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; OdataLink recommends a rolling window so new data is automatically archived as it ages. You only configure it once.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://odatalink.com/2025-03-increase-performance-of-your-odatalink-odata-feeds-using-the-cut-off-date-settings/ How to apply and use the Cut-off Date setting]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Set a Default Date Range on your model ===&lt;br /&gt;
&lt;br /&gt;
OdataLink provides the ability to define a default date range for a model. This allows users to control the amount of data that gets downloaded from the connected [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
If you never report on data older than, for example, two financial years, you can configure the model to ignore data outside that window entirely. &lt;br /&gt;
&lt;br /&gt;
[[Default Date Range|How to set a default date range]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4. Enable Polling for Changes ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Polling&#039;&#039;&#039; allows OdataLink to detect and pull only the records that have been added or changed in your [[Data Files|data file]], rather than re-downloading the whole dataset on every refresh.&lt;br /&gt;
&lt;br /&gt;
Polling is particularly effective for high-volume transactional entities like Invoices, Bills, and Bank Transactions.&lt;br /&gt;
&lt;br /&gt;
[[Configure OdataLink to poll for changes|How to configure polling]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Monitoring =&lt;br /&gt;
&lt;br /&gt;
Check your Monthly Usage in your OdataLink Portal &#039;&#039;&#039;Account/Subscription settings → Usage Stats&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Healthy pattern:&#039;&#039;&#039;&lt;br /&gt;
* Consistent month-to-month (no large spikes)&lt;br /&gt;
* 20-30% under your monthly allowance&lt;br /&gt;
* No overuse warnings&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Excessive Usage pattern:&#039;&#039;&#039;&lt;br /&gt;
* Usage increasing or consistently above 100% month-over-month&lt;br /&gt;
* Multiple Usage alerts from OdataLink&lt;br /&gt;
* Exceeding allowance for more than 1 month&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checklist ==&lt;br /&gt;
&lt;br /&gt;
* [ ] Refresh frequency matches how often the report is actually viewed&lt;br /&gt;
* [ ] Weekend and off-hours refreshes disabled if not needed&lt;br /&gt;
* [ ] Archive Type set to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; for the [[Models|model]]&lt;br /&gt;
* [ ] Cut-off Date or rolling window configured&lt;br /&gt;
* [ ] Default Date Range configured to match your reporting window&lt;br /&gt;
* [ ] Polling enabled&lt;br /&gt;
* [ ] Monthly usage reviewed in OdataLink Admin Portal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and query transformations, and recommend further optimisations &amp;lt;!--in attempts to reduce your account usage --&amp;gt; in order to bring your account usage within limits.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
: [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;br /&gt;
: [[How to Reduce my OdataLink Usage - For Advanced Users]]&lt;br /&gt;
: [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
&amp;lt;!--: [[Reducing Data Usage and Optimising your OdataLink Feeds]]--&amp;gt;&lt;br /&gt;
: [https://odatalink.com/eula/fair-use-policy Fair Use Policy]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=Reducing_Data_Usage_and_Optimising_your_OdataLink_Feeds&amp;diff=4644</id>
		<title>Reducing Data Usage and Optimising your OdataLink Feeds</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=Reducing_Data_Usage_and_Optimising_your_OdataLink_Feeds&amp;diff=4644"/>
		<updated>2026-06-05T04:06:57Z</updated>

		<summary type="html">&lt;p&gt;Ash: fair use policy published, correcting the location of the policy doc on the website&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview = &lt;br /&gt;
To keep OdataLink subscriptions affordable and predictable for everyone, we&#039;ve introduced a [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. This policy sets a monthly download limit for data retrieved from your connected [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
The guidance below applies to all models connecting to Xero, Xero Practice Manager, MYOB and QuickBooks. Following these steps will:&lt;br /&gt;
&lt;br /&gt;
* Reduce your monthly download volume; and&lt;br /&gt;
* Improve refresh performance&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal → Usage Stats&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What is Usage ==&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Usage&#039;&#039;&#039; is defined as the volume of data OdataLink retrieves from your connected [[Data Files|data files]] each month. &lt;br /&gt;
&lt;br /&gt;
This includes data retrieved by [[Microsoft Power BI|Power BI]], [[Microsoft Excel|Excel]], or [[OData Client Compatibility|other]] data pipeline and reporting tools, either via automatic scheduled refreshes or manual report refresh.&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
= Pick your Optimisation Layer =&lt;br /&gt;
Optimisation techniques are grouped by the tooling you use. Pick the page that matches your role — or read all three if your organisation spans several layers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Page !! Audience !! What it covers&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Everyday Users]] || Accountants, bookkeepers, business users || Refresh frequency, [[Models|model]] settings (Cut-off Date, Default Date Range, Polling), monitoring&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Advanced Users]] || Power BI, Fabric, and Excel report developers (Power Query / M) || Query folding, OData &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; operators, &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; projection, incremental refresh&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Power Users]] || Data engineering teams (SSIS, ADF, Fabric Data Pipelines, Fabric Dataflow Legacy/Gen2) || Stage-once-serve-many, watermarked incremental loads, historical backfill strategy, scheduling discipline, end-to-end cost monitoring&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; Start with the [[How to Reduce my OdataLink Usage - For Everyday Users|Everyday Users]] page regardless of your role. The model-level settings described there apply to &#039;&#039;&#039;every&#039;&#039;&#039; refresh, automatic or manual, report or pipeline, and deliver the largest reduction with the least amount of changes.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== For everyone (accountants, bookkeepers, business users) ==&lt;br /&gt;
&lt;br /&gt;
Please refer to the following support note detailing optimisation techniques that can be applied directly in your OdataLink Admin Portal or in your reporting architecture.&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== For Power BI, Fabric, and Excel developers ==&lt;br /&gt;
&lt;br /&gt;
For optimisations applied inside Power Query — query folding, &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt;, incremental refresh — see:&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Advanced Users]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== For SQL, SSIS, and Fabric Pipeline Developers ==&lt;br /&gt;
&lt;br /&gt;
For optimisations applied at the pipeline / data warehouse layer — stage-once-serve-many, watermarked incremental loads, Fabric Dataflow Gen2 staging, scheduling discipline — see:&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Data Engineers]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Quick checklist ==&lt;br /&gt;
A cross-cutting checklist drawn from all three pages. Detailed steps and tool-specific guidance are in the linked pages above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Everyone:&#039;&#039;&#039;&lt;br /&gt;
* [ ] Refresh schedule matches how often the report is actually used&lt;br /&gt;
* [ ] Weekend / out-of-hours refreshes disabled where not needed&lt;br /&gt;
* [ ] Archive Type set to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; on the [[Models|model]]&lt;br /&gt;
* [ ] Cut-off Date or rolling window configured&lt;br /&gt;
* [ ] Default Date Range configured to match your reporting window&lt;br /&gt;
* [ ] Polling enabled&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Users:&#039;&#039;&#039;&lt;br /&gt;
* [ ] Date filters applied at the OData navigation step (not post-download)&lt;br /&gt;
* [ ] Query folding verified via &#039;&#039;&#039;View Native Query&#039;&#039;&#039;&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used to limit columns retrieved&lt;br /&gt;
* [ ] Incremental refresh enabled for time-series datasets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Azure/Fabric/Data Pipeline developers:&#039;&#039;&#039;&lt;br /&gt;
* [ ] OdataLink data staged once into SQL / Lakehouse / Warehouse / Dataflow Gen2; downstream consumers read from the staging layer&lt;br /&gt;
* [ ] All recurring loads use &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; with a high-watermark column&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used on every entity, including the watermark column&lt;br /&gt;
* [ ] Full-table backfills are one-time, not recurring&lt;br /&gt;
* [ ] Pipeline schedules staggered and aligned with the business cycle&lt;br /&gt;
* [ ] Reference and transactional data refreshed on separate cadences&lt;br /&gt;
* [ ] Both OdataLink egress and Azure / Fabric compute cost monitored&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and pipeline design, and recommend further optimisations to bring your account usage within limits.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
&lt;br /&gt;
* [https://odatalink.com/eula/fair-use-policy OdataLink Fair Use Policy]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
&amp;lt;!-- * [https://developer.xero.com/pricing Xero Developer Pricing]&lt;br /&gt;
* [https://developer.xero.com/faq/pricing-and-policy-updates Xero Pricing and Policy Updates FAQ]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_track_my_OdataLink_Usage&amp;diff=4643</id>
		<title>How to track my OdataLink Usage</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_track_my_OdataLink_Usage&amp;diff=4643"/>
		<updated>2026-06-05T04:06:21Z</updated>

		<summary type="html">&lt;p&gt;Ash: fair use policy published, correcting the location of the policy doc on the website&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Each OdataLink account is subject to Monthly Data download allowance under OdataLink&#039;s [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy (Policy)&#039;&#039;&#039;] document. &lt;br /&gt;
Usage is shared across  entire account and data files, so higher activity on one data file can be offset bu lower activity on other(s).&lt;br /&gt;
OdataLink tracks data usage at the Account level, Models level, and per data file level, to help you stay within your Monthly Data Allowance limits.&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
[[File:OdataLink_Account_Usage.png|400px|thumb|right|Account Usage]]&lt;br /&gt;
&lt;br /&gt;
{{:Reducing Data Usage and Optimising your OdataLink Feeds}}&lt;br /&gt;
=== What does not count as Usage ===&lt;br /&gt;
* Data retrieved from OdataLink&#039;s archive (historical cached data).&lt;br /&gt;
* Data retrieved from data sources other than connected Data Files&lt;br /&gt;
[[File:OdataLink_Model_Usage.png|400px|thumb|right|Model Usage]]&lt;br /&gt;
[[File:OdataLink_Data_File_Usage.png|400px|thumb|right|Data File Usage]]&lt;br /&gt;
&lt;br /&gt;
== Where can I find my Usage ==&lt;br /&gt;
Login to your &#039;&#039;&#039;OdataLink Admin portal&#039;&#039;&#039; and according to each level, navigate to the appropriate &#039;&#039;&#039;Usage&#039;&#039;&#039; tab as explained below:&lt;br /&gt;
&lt;br /&gt;
=== 1. Account Level Usage ===&lt;br /&gt;
# Click on &#039;&#039;&#039;Account/Subscription&#039;&#039;&#039; Settings on the left side panel.&lt;br /&gt;
# &#039;&#039;&#039;View Account&#039;&#039;&#039; page will be loaded.&lt;br /&gt;
# A graph under &#039;&#039;&#039;Usage Stats&#039;&#039;&#039; will be displayed indicating your &#039;&#039;&#039;Account&#039;s Total Usage&#039;&#039;&#039; for the period as selected in the &#039;&#039;&#039;Month&#039;&#039;&#039; dropdown field.&lt;br /&gt;
&lt;br /&gt;
=== 2. Model Level Usage ===&lt;br /&gt;
# Click on &#039;&#039;&#039;Models&#039;&#039;&#039; on the left side panel to view all Models.&lt;br /&gt;
# Click on the Model Name or the &#039;&#039;&#039;View&#039;&#039;&#039; button corresponding to the model.&lt;br /&gt;
# Click on &#039;&#039;&#039;Usage&#039;&#039;&#039; tab and a graph will be shown indicating your &#039;&#039;&#039;Model&#039;s Total Usage&#039;&#039;&#039; for the period as selected in the &#039;&#039;&#039;Month&#039;&#039;&#039; dropdown field.&lt;br /&gt;
&lt;br /&gt;
=== 3. Data File Level Usage ===&lt;br /&gt;
# Click on &#039;&#039;&#039;Data Files&#039;&#039;&#039; on the left side panel to view all Data Files connected to your account.&lt;br /&gt;
# Click on the Entity/Company/Data File Name or the &#039;&#039;&#039;View&#039;&#039;&#039; button corresponding to the Data File.&lt;br /&gt;
# Click on &#039;&#039;&#039;Usage&#039;&#039;&#039; tab and a graph will be shown indicating your &#039;&#039;&#039;Data File&#039;s Total Usage&#039;&#039;&#039; for the period as selected in the &#039;&#039;&#039;Month&#039;&#039;&#039; dropdown field.&lt;br /&gt;
&lt;br /&gt;
= How to Reduce my Usage =&lt;br /&gt;
If your Usage is high or is approaching the Monthly Data Allowance limits, see [[Reducing Data Usage and Optimising your OdataLink Feeds]]&lt;br /&gt;
&lt;br /&gt;
The help page above contains guides for:&lt;br /&gt;
* Everyday Users - To optimise at OdataLink level&lt;br /&gt;
* Advanced Users - To apply optimisations at report and data query level&lt;br /&gt;
* Power Users - To apply optimisations at staging levels and pipeline levels, custom solutions apply&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
: [https://odatalink.com/eula/fair-use-policy Fair Use Policy]&lt;br /&gt;
: [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=HelpID:TrackUsage&amp;diff=4642</id>
		<title>HelpID:TrackUsage</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=HelpID:TrackUsage&amp;diff=4642"/>
		<updated>2026-06-05T04:05:10Z</updated>

		<summary type="html">&lt;p&gt;Ash: Redirected page to How to track my OdataLink Usage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT[[How to track my OdataLink Usage]]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Advanced_Users&amp;diff=4641</id>
		<title>How to Reduce my OdataLink Usage - For Advanced Users</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Advanced_Users&amp;diff=4641"/>
		<updated>2026-06-01T05:53:48Z</updated>

		<summary type="html">&lt;p&gt;Ash: corrected framing for fabric&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Your OdataLink subscription includes a monthly data download allowance under our [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. If your reports or dashboards use Power Query transformations to clean and shape the dataset, the following optimisations techniques will reduce egress and improve refresh performance.&lt;br /&gt;
&lt;br /&gt;
This help page is intended towards report developers working with &#039;&#039;&#039;M Language/Power Query&#039;&#039;&#039;. For developers using Fabric Data Pipelines, Azure Data Factory, SSIS, or persistent staging into Lakehouse/Warehouse/DataLake, &lt;br /&gt;
&amp;lt;br /&amp;gt;see [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039;. &lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Query-Level Filtering =&lt;br /&gt;
This sections explains how applying a filter early in the transformation steps helps reduce egress. Query level filtering makes use of OdataLink feature that can pass the filters up directly to the data source. This results in OdataLink only downloading the filtered data out of your [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
=== 1. Push date filters up to the OData feed level (query folding) ===&lt;br /&gt;
Filtering data &#039;&#039;&#039;after&#039;&#039;&#039; it has been downloaded does not reduce egress since the records have already been pulled out from the company file.&lt;br /&gt;
&lt;br /&gt;
Filtering must happen at the &#039;&#039;&#039;Navigation step&#039;&#039;&#039; in Power Query so the filter is sent to OdataLink as part of the OData query (&amp;lt;code&amp;gt;$filter=...&amp;lt;/code&amp;gt;) and only the matching/filtered rows are returned.&lt;br /&gt;
&lt;br /&gt;
# Apply date filters as early as possible, directly on the source table, before any merges, joins, or column expansions.&lt;br /&gt;
# Avoid applying &amp;lt;code&amp;gt;Table.SelectRows&amp;lt;/code&amp;gt; over a downloaded table when an equivalent filter can be applied at the navigation step.&lt;br /&gt;
&amp;lt;!--# Verify folding: right-click a step in Power Query → &#039;&#039;&#039;View Native Query&#039;&#039;&#039;. If the option is greyed out, the filter is being applied client-side and egress is not reduced.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Model Date Filters and Report Date Filters| &#039;&#039;&#039;Reference -&#039;&#039;&#039; Model Date Filters vs Report Date Filters]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Apply supported OData filter operators ===&lt;br /&gt;
&lt;br /&gt;
The following operators fold to the OData feed and execute server-side before any data leaves your data file:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Operator !! Operation !! Example&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;eq&amp;lt;/code&amp;gt; || equal || &amp;lt;code&amp;gt;Status eq &#039;ACTIVE&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ne&amp;lt;/code&amp;gt; || not equal || &amp;lt;code&amp;gt;Status ne &#039;ARCHIVED&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lt&amp;lt;/code&amp;gt; || greater / less than || &amp;lt;code&amp;gt;Date gt &#039;2026-01-01&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ge&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;le&amp;lt;/code&amp;gt; || greater / less than or equal || &amp;lt;code&amp;gt;Amount ge 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; || logical AND || &amp;lt;code&amp;gt;Status eq &#039;ACTIVE&#039; and Type eq &#039;BANK&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; || logical OR || &amp;lt;code&amp;gt;Type eq &#039;BANK&#039; or Type eq &#039;CREDIT_CARD&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;startswith()&amp;lt;/code&amp;gt; || prefix match || &amp;lt;code&amp;gt;startswith(Empname, &#039;Ia&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;contains()&amp;lt;/code&amp;gt; || substring match || &amp;lt;code&amp;gt;contains(GLCode, &#039;5-01&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; &amp;lt;code&amp;gt;startswith()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;contains()&amp;lt;/code&amp;gt; work on text/string fields (such as Code, Name, Description) but may fail or produce unexpected results on date, datetime and datetimezone fields. Use comparison operators (&amp;lt;code&amp;gt;gt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ge&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;le&amp;lt;/code&amp;gt;) for those columns instead.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Filter examples by use case ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date range&#039;&#039;&#039; — highest single-impact reduction:&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Date ge &#039;2026-01-01&#039; and Date le &#039;2026-12-31&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Active records only:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Status eq &#039;ACTIVE&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exclude archived:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Status ne &#039;ARCHIVED&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Limit columns retrieved with &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
OData supports projection via &amp;lt;code&amp;gt;$select=Col1,Col2,...&amp;lt;/code&amp;gt;. By default, every column on the entity is returned, including wide free-text fields that may never appear in your report. Restricting projection reduces row size and network transfer.&lt;br /&gt;
&lt;br /&gt;
In Power Query, expand only the columns you need before any other step, and confirm the resulting native query includes a &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; clause.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code&amp;gt;$select=InvoiceID,InvoiceNumber,Date,Total,Status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== 5. Combining Filters ===&lt;br /&gt;
&lt;br /&gt;
Stacked techniques decrease the Usage rapidly. Example combined filter + projection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Date ge &#039;2026-06-01&#039; and Status eq &#039;ACTIVE&#039;&amp;amp;$select=InvoiceID,InvoiceNumber,Date,Total,Status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typically reduces egress by &#039;&#039;&#039;~80%&#039;&#039;&#039; vs. an unfiltered, all-columns extraction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Incremental Refreshing =&lt;br /&gt;
&lt;br /&gt;
=== 6. Use Incremental Refresh for time-series data ===&lt;br /&gt;
&lt;br /&gt;
For datasets keyed on a date, datetime, or datetimezone column, configure &#039;&#039;&#039;Incremental Refresh&#039;&#039;&#039; so that only new or changed partitions are pulled on each refresh.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Power BI Premium / Fabric:&#039;&#039;&#039; native incremental refresh on semantic models.&lt;br /&gt;
* &#039;&#039;&#039;Power BI Pro:&#039;&#039;&#039; supported, but requires care to ensure the date filter folds. Test with &#039;&#039;&#039;View Native Query&#039;&#039;&#039; before publishing.&lt;br /&gt;
* &#039;&#039;&#039;Excel:&#039;&#039;&#039; use a date-threshold named range and filter the query URL on it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; If your organisation uses Microsoft Fabric, ask your data engineering team or IT admin about staging OdataLink feeds into a &#039;&#039;&#039;Fabric Dataflow&#039;&#039;&#039; (Legacy or Gen2, built on Power Query). Multiple reports, staging databases and data warehouses can then consume the staged data without each one querying OdataLink directly. See [[How to Reduce my OdataLink Usage - For Power Users]].&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
Verify your optimisations in your Models Settings  &#039;&#039;&#039;Manage Models → View → Usage tab&#039;&#039;&#039; for monitoring a specific model. Compare:&lt;br /&gt;
* Unfiltered request volume (GB) - your baseline before optimising&lt;br /&gt;
* Filtered request volume (GB) - after applying optimisation&lt;br /&gt;
* &#039;&#039;&#039;Reduction %&#039;&#039;&#039; = (Unfiltered Volume − Filtered Volume) ÷ Unfiltered Data Volume × 100&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Target:&#039;&#039;&#039; 50–70% combined reduction from filtering + incremental refresh + column projection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power Query checklist ==&lt;br /&gt;
&lt;br /&gt;
* [ ] Date filters applied at the OData navigation step&lt;br /&gt;
* [ ] Verify Query folding&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used to limit columns retrieved&lt;br /&gt;
* [ ] Incremental refresh enabled for time-series datasets&lt;br /&gt;
* [ ] Refresh schedule matches actual report usage&lt;br /&gt;
* [ ] Considered Fabric Dataflow Gen2 if multiple reports share the same data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and query transformations, and recommend further optimisations in attempts to reduce your account usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
&lt;br /&gt;
* [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
* [[Models]]&lt;br /&gt;
* [[Data Files]]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [[Model Date Filters and Report Date Filters]]&lt;br /&gt;
* [https://odatalink.com/fair-use-policy OdataLink Fair Use Policy]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Advanced_Users&amp;diff=4640</id>
		<title>How to Reduce my OdataLink Usage - For Advanced Users</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Advanced_Users&amp;diff=4640"/>
		<updated>2026-06-01T05:48:55Z</updated>

		<summary type="html">&lt;p&gt;Ash: added other type of columns to use with comparison operators&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Your OdataLink subscription includes a monthly data download allowance under our [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. If your reports or dashboards use Power Query transformations to clean and shape the dataset, the following optimisations techniques will reduce egress and improve refresh performance.&lt;br /&gt;
&lt;br /&gt;
This help page is intended towards report developers working with &#039;&#039;&#039;M Language/Power Query&#039;&#039;&#039;. For developers using Fabric Data Pipelines, Azure Data Factory, SSIS, or persistent staging into Lakehouse/Warehouse/DataLake, &lt;br /&gt;
&amp;lt;br /&amp;gt;see [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039;. &lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Query-Level Filtering =&lt;br /&gt;
This sections explains how applying a filter early in the transformation steps helps reduce egress. Query level filtering makes use of OdataLink feature that can pass the filters up directly to the data source. This results in OdataLink only downloading the filtered data out of your [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
=== 1. Push date filters up to the OData feed level (query folding) ===&lt;br /&gt;
Filtering data &#039;&#039;&#039;after&#039;&#039;&#039; it has been downloaded does not reduce egress since the records have already been pulled out from the company file.&lt;br /&gt;
&lt;br /&gt;
Filtering must happen at the &#039;&#039;&#039;Navigation step&#039;&#039;&#039; in Power Query so the filter is sent to OdataLink as part of the OData query (&amp;lt;code&amp;gt;$filter=...&amp;lt;/code&amp;gt;) and only the matching/filtered rows are returned.&lt;br /&gt;
&lt;br /&gt;
# Apply date filters as early as possible, directly on the source table, before any merges, joins, or column expansions.&lt;br /&gt;
# Avoid applying &amp;lt;code&amp;gt;Table.SelectRows&amp;lt;/code&amp;gt; over a downloaded table when an equivalent filter can be applied at the navigation step.&lt;br /&gt;
&amp;lt;!--# Verify folding: right-click a step in Power Query → &#039;&#039;&#039;View Native Query&#039;&#039;&#039;. If the option is greyed out, the filter is being applied client-side and egress is not reduced.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Model Date Filters and Report Date Filters| &#039;&#039;&#039;Reference -&#039;&#039;&#039; Model Date Filters vs Report Date Filters]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Apply supported OData filter operators ===&lt;br /&gt;
&lt;br /&gt;
The following operators fold to the OData feed and execute server-side before any data leaves your data file:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Operator !! Operation !! Example&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;eq&amp;lt;/code&amp;gt; || equal || &amp;lt;code&amp;gt;Status eq &#039;ACTIVE&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ne&amp;lt;/code&amp;gt; || not equal || &amp;lt;code&amp;gt;Status ne &#039;ARCHIVED&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lt&amp;lt;/code&amp;gt; || greater / less than || &amp;lt;code&amp;gt;Date gt &#039;2026-01-01&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ge&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;le&amp;lt;/code&amp;gt; || greater / less than or equal || &amp;lt;code&amp;gt;Amount ge 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; || logical AND || &amp;lt;code&amp;gt;Status eq &#039;ACTIVE&#039; and Type eq &#039;BANK&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; || logical OR || &amp;lt;code&amp;gt;Type eq &#039;BANK&#039; or Type eq &#039;CREDIT_CARD&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;startswith()&amp;lt;/code&amp;gt; || prefix match || &amp;lt;code&amp;gt;startswith(Empname, &#039;Ia&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;contains()&amp;lt;/code&amp;gt; || substring match || &amp;lt;code&amp;gt;contains(GLCode, &#039;5-01&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; &amp;lt;code&amp;gt;startswith()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;contains()&amp;lt;/code&amp;gt; work on text/string fields (such as Code, Name, Description) but may fail or produce unexpected results on date, datetime and datetimezone fields. Use comparison operators (&amp;lt;code&amp;gt;gt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ge&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;le&amp;lt;/code&amp;gt;) for those columns instead.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Filter examples by use case ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date range&#039;&#039;&#039; — highest single-impact reduction:&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Date ge &#039;2026-01-01&#039; and Date le &#039;2026-12-31&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Active records only:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Status eq &#039;ACTIVE&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exclude archived:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Status ne &#039;ARCHIVED&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Limit columns retrieved with &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
OData supports projection via &amp;lt;code&amp;gt;$select=Col1,Col2,...&amp;lt;/code&amp;gt;. By default, every column on the entity is returned, including wide free-text fields that may never appear in your report. Restricting projection reduces row size and network transfer.&lt;br /&gt;
&lt;br /&gt;
In Power Query, expand only the columns you need before any other step, and confirm the resulting native query includes a &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; clause.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code&amp;gt;$select=InvoiceID,InvoiceNumber,Date,Total,Status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== 5. Combining Filters ===&lt;br /&gt;
&lt;br /&gt;
Stacked techniques decrease the Usage rapidly. Example combined filter + projection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Date ge &#039;2026-06-01&#039; and Status eq &#039;ACTIVE&#039;&amp;amp;$select=InvoiceID,InvoiceNumber,Date,Total,Status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typically reduces egress by &#039;&#039;&#039;~80%&#039;&#039;&#039; vs. an unfiltered, all-columns extraction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Incremental Refreshing =&lt;br /&gt;
&lt;br /&gt;
=== 6. Use Incremental Refresh for time-series data ===&lt;br /&gt;
&lt;br /&gt;
For datasets keyed on a date, datetime, or datetimezone column, configure &#039;&#039;&#039;Incremental Refresh&#039;&#039;&#039; so that only new or changed partitions are pulled on each refresh.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Power BI Premium / Fabric:&#039;&#039;&#039; native incremental refresh on semantic models.&lt;br /&gt;
* &#039;&#039;&#039;Power BI Pro:&#039;&#039;&#039; supported, but requires care to ensure the date filter folds. Test with &#039;&#039;&#039;View Native Query&#039;&#039;&#039; before publishing.&lt;br /&gt;
* &#039;&#039;&#039;Excel:&#039;&#039;&#039; use a date-threshold named range and filter the query URL on it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; If your organisation runs Microsoft Fabric, ask your data team about staging OdataLink feeds into a &#039;&#039;&#039;Dataflow Gen2&#039;&#039;&#039; (built on Power Query). Multiple reports can then consume the staged data without each one querying OdataLink directly. See [[How to Reduce my OdataLink Usage - For Power Users]].&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
Verify your optimisations in your Models Settings  &#039;&#039;&#039;Manage Models → View → Usage tab&#039;&#039;&#039; for monitoring a specific model. Compare:&lt;br /&gt;
* Unfiltered request volume (GB) - your baseline before optimising&lt;br /&gt;
* Filtered request volume (GB) - after applying optimisation&lt;br /&gt;
* &#039;&#039;&#039;Reduction %&#039;&#039;&#039; = (Unfiltered Volume − Filtered Volume) ÷ Unfiltered Data Volume × 100&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Target:&#039;&#039;&#039; 50–70% combined reduction from filtering + incremental refresh + column projection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power Query checklist ==&lt;br /&gt;
&lt;br /&gt;
* [ ] Date filters applied at the OData navigation step&lt;br /&gt;
* [ ] Verify Query folding&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used to limit columns retrieved&lt;br /&gt;
* [ ] Incremental refresh enabled for time-series datasets&lt;br /&gt;
* [ ] Refresh schedule matches actual report usage&lt;br /&gt;
* [ ] Considered Fabric Dataflow Gen2 if multiple reports share the same data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and query transformations, and recommend further optimisations in attempts to reduce your account usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
&lt;br /&gt;
* [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
* [[Models]]&lt;br /&gt;
* [[Data Files]]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [[Model Date Filters and Report Date Filters]]&lt;br /&gt;
* [https://odatalink.com/fair-use-policy OdataLink Fair Use Policy]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Advanced_Users&amp;diff=4639</id>
		<title>How to Reduce my OdataLink Usage - For Advanced Users</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Advanced_Users&amp;diff=4639"/>
		<updated>2026-06-01T05:48:16Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Your OdataLink subscription includes a monthly data download allowance under our [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. If your reports or dashboards use Power Query transformations to clean and shape the dataset, the following optimisations techniques will reduce egress and improve refresh performance.&lt;br /&gt;
&lt;br /&gt;
This help page is intended towards report developers working with &#039;&#039;&#039;M Language/Power Query&#039;&#039;&#039;. For developers using Fabric Data Pipelines, Azure Data Factory, SSIS, or persistent staging into Lakehouse/Warehouse/DataLake, &lt;br /&gt;
&amp;lt;br /&amp;gt;see [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039;. &lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Query-Level Filtering =&lt;br /&gt;
This sections explains how applying a filter early in the transformation steps helps reduce egress. Query level filtering makes use of OdataLink feature that can pass the filters up directly to the data source. This results in OdataLink only downloading the filtered data out of your [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
=== 1. Push date filters up to the OData feed level (query folding) ===&lt;br /&gt;
Filtering data &#039;&#039;&#039;after&#039;&#039;&#039; it has been downloaded does not reduce egress since the records have already been pulled out from the company file.&lt;br /&gt;
&lt;br /&gt;
Filtering must happen at the &#039;&#039;&#039;Navigation step&#039;&#039;&#039; in Power Query so the filter is sent to OdataLink as part of the OData query (&amp;lt;code&amp;gt;$filter=...&amp;lt;/code&amp;gt;) and only the matching/filtered rows are returned.&lt;br /&gt;
&lt;br /&gt;
# Apply date filters as early as possible, directly on the source table, before any merges, joins, or column expansions.&lt;br /&gt;
# Avoid applying &amp;lt;code&amp;gt;Table.SelectRows&amp;lt;/code&amp;gt; over a downloaded table when an equivalent filter can be applied at the navigation step.&lt;br /&gt;
&amp;lt;!--# Verify folding: right-click a step in Power Query → &#039;&#039;&#039;View Native Query&#039;&#039;&#039;. If the option is greyed out, the filter is being applied client-side and egress is not reduced.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Model Date Filters and Report Date Filters| &#039;&#039;&#039;Reference -&#039;&#039;&#039; Model Date Filters vs Report Date Filters]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Apply supported OData filter operators ===&lt;br /&gt;
&lt;br /&gt;
The following operators fold to the OData feed and execute server-side before any data leaves your data file:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Operator !! Operation !! Example&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;eq&amp;lt;/code&amp;gt; || equal || &amp;lt;code&amp;gt;Status eq &#039;ACTIVE&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ne&amp;lt;/code&amp;gt; || not equal || &amp;lt;code&amp;gt;Status ne &#039;ARCHIVED&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lt&amp;lt;/code&amp;gt; || greater / less than || &amp;lt;code&amp;gt;Date gt &#039;2026-01-01&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ge&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;le&amp;lt;/code&amp;gt; || greater / less than or equal || &amp;lt;code&amp;gt;Amount ge 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; || logical AND || &amp;lt;code&amp;gt;Status eq &#039;ACTIVE&#039; and Type eq &#039;BANK&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; || logical OR || &amp;lt;code&amp;gt;Type eq &#039;BANK&#039; or Type eq &#039;CREDIT_CARD&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;startswith()&amp;lt;/code&amp;gt; || prefix match || &amp;lt;code&amp;gt;startswith(Empname, &#039;Ia&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;contains()&amp;lt;/code&amp;gt; || substring match || &amp;lt;code&amp;gt;contains(GLCode, &#039;5-01&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; &amp;lt;code&amp;gt;startswith()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;contains()&amp;lt;/code&amp;gt; work on text/string fields (such as Code, Name, Description) but may fail or produce unexpected results on date fields. Use comparison operators (&amp;lt;code&amp;gt;gt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ge&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;le&amp;lt;/code&amp;gt;) on those columns instead.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Filter examples by use case ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date range&#039;&#039;&#039; — highest single-impact reduction:&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Date ge &#039;2026-01-01&#039; and Date le &#039;2026-12-31&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Active records only:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Status eq &#039;ACTIVE&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exclude archived:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Status ne &#039;ARCHIVED&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Limit columns retrieved with &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
OData supports projection via &amp;lt;code&amp;gt;$select=Col1,Col2,...&amp;lt;/code&amp;gt;. By default, every column on the entity is returned, including wide free-text fields that may never appear in your report. Restricting projection reduces row size and network transfer.&lt;br /&gt;
&lt;br /&gt;
In Power Query, expand only the columns you need before any other step, and confirm the resulting native query includes a &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; clause.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code&amp;gt;$select=InvoiceID,InvoiceNumber,Date,Total,Status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== 5. Combining Filters ===&lt;br /&gt;
&lt;br /&gt;
Stacked techniques decrease the Usage rapidly. Example combined filter + projection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Date ge &#039;2026-06-01&#039; and Status eq &#039;ACTIVE&#039;&amp;amp;$select=InvoiceID,InvoiceNumber,Date,Total,Status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typically reduces egress by &#039;&#039;&#039;~80%&#039;&#039;&#039; vs. an unfiltered, all-columns extraction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Incremental Refreshing =&lt;br /&gt;
&lt;br /&gt;
=== 6. Use Incremental Refresh for time-series data ===&lt;br /&gt;
&lt;br /&gt;
For datasets keyed on a date, datetime, or datetimezone column, configure &#039;&#039;&#039;Incremental Refresh&#039;&#039;&#039; so that only new or changed partitions are pulled on each refresh.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Power BI Premium / Fabric:&#039;&#039;&#039; native incremental refresh on semantic models.&lt;br /&gt;
* &#039;&#039;&#039;Power BI Pro:&#039;&#039;&#039; supported, but requires care to ensure the date filter folds. Test with &#039;&#039;&#039;View Native Query&#039;&#039;&#039; before publishing.&lt;br /&gt;
* &#039;&#039;&#039;Excel:&#039;&#039;&#039; use a date-threshold named range and filter the query URL on it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; If your organisation runs Microsoft Fabric, ask your data team about staging OdataLink feeds into a &#039;&#039;&#039;Dataflow Gen2&#039;&#039;&#039; (built on Power Query). Multiple reports can then consume the staged data without each one querying OdataLink directly. See [[How to Reduce my OdataLink Usage - For Power Users]].&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
Verify your optimisations in your Models Settings  &#039;&#039;&#039;Manage Models → View → Usage tab&#039;&#039;&#039; for monitoring a specific model. Compare:&lt;br /&gt;
* Unfiltered request volume (GB) - your baseline before optimising&lt;br /&gt;
* Filtered request volume (GB) - after applying optimisation&lt;br /&gt;
* &#039;&#039;&#039;Reduction %&#039;&#039;&#039; = (Unfiltered Volume − Filtered Volume) ÷ Unfiltered Data Volume × 100&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Target:&#039;&#039;&#039; 50–70% combined reduction from filtering + incremental refresh + column projection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power Query checklist ==&lt;br /&gt;
&lt;br /&gt;
* [ ] Date filters applied at the OData navigation step&lt;br /&gt;
* [ ] Verify Query folding&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used to limit columns retrieved&lt;br /&gt;
* [ ] Incremental refresh enabled for time-series datasets&lt;br /&gt;
* [ ] Refresh schedule matches actual report usage&lt;br /&gt;
* [ ] Considered Fabric Dataflow Gen2 if multiple reports share the same data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and query transformations, and recommend further optimisations in attempts to reduce your account usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
&lt;br /&gt;
* [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
* [[Models]]&lt;br /&gt;
* [[Data Files]]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [[Model Date Filters and Report Date Filters]]&lt;br /&gt;
* [https://odatalink.com/fair-use-policy OdataLink Fair Use Policy]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Advanced_Users&amp;diff=4638</id>
		<title>How to Reduce my OdataLink Usage - For Advanced Users</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Advanced_Users&amp;diff=4638"/>
		<updated>2026-06-01T05:47:53Z</updated>

		<summary type="html">&lt;p&gt;Ash: correction: use comparator operators for date and similar fields&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Your OdataLink subscription includes a monthly data download allowance under our [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. If your reports or dashboards use Power Query transformations to clean and shape the dataset, the following optimisations techniques will reduce egress and improve refresh performance.&lt;br /&gt;
&lt;br /&gt;
This help page is intended towards report developers working with &#039;&#039;&#039;M Language/Power Query&#039;&#039;&#039;. For developers using Fabric Data Pipelines, Azure Data Factory, SSIS, or persistent staging into Lakehouse/Warehouse/DataLake, &lt;br /&gt;
&amp;lt;br /&amp;gt;see [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039;. &lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Query-Level Filtering =&lt;br /&gt;
This sections explains how applying a filter early in the transformation steps helps reduce egress. Query level filtering makes use of OdataLink feature that can pass the filters up directly to the data source. This results in OdataLink only downloading the filtered data out of your [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
=== 1. Push date filters up to the OData feed level (query folding) ===&lt;br /&gt;
Filtering data &#039;&#039;&#039;after&#039;&#039;&#039; it has been downloaded does not reduce egress since the records have already been pulled out from the company file.&lt;br /&gt;
&lt;br /&gt;
Filtering must happen at the &#039;&#039;&#039;Navigation step&#039;&#039;&#039; in Power Query so the filter is sent to OdataLink as part of the OData query (&amp;lt;code&amp;gt;$filter=...&amp;lt;/code&amp;gt;) and only the matching/filtered rows are returned.&lt;br /&gt;
&lt;br /&gt;
# Apply date filters as early as possible, directly on the source table, before any merges, joins, or column expansions.&lt;br /&gt;
# Avoid applying &amp;lt;code&amp;gt;Table.SelectRows&amp;lt;/code&amp;gt; over a downloaded table when an equivalent filter can be applied at the navigation step.&lt;br /&gt;
&amp;lt;!--# Verify folding: right-click a step in Power Query → &#039;&#039;&#039;View Native Query&#039;&#039;&#039;. If the option is greyed out, the filter is being applied client-side and egress is not reduced.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Model Date Filters and Report Date Filters| &#039;&#039;&#039;Reference -&#039;&#039;&#039; Model Date Filters vs Report Date Filters]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Apply supported OData filter operators ===&lt;br /&gt;
&lt;br /&gt;
The following operators fold to the OData feed and execute server-side before any data leaves your data file:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Operator !! Operation !! Example&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;eq&amp;lt;/code&amp;gt; || equal || &amp;lt;code&amp;gt;Status eq &#039;ACTIVE&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ne&amp;lt;/code&amp;gt; || not equal || &amp;lt;code&amp;gt;Status ne &#039;ARCHIVED&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lt&amp;lt;/code&amp;gt; || greater / less than || &amp;lt;code&amp;gt;Date gt &#039;2026-01-01&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ge&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;le&amp;lt;/code&amp;gt; || greater / less than or equal || &amp;lt;code&amp;gt;Amount ge 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; || logical AND || &amp;lt;code&amp;gt;Status eq &#039;ACTIVE&#039; and Type eq &#039;BANK&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; || logical OR || &amp;lt;code&amp;gt;Type eq &#039;BANK&#039; or Type eq &#039;CREDIT_CARD&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;startswith()&amp;lt;/code&amp;gt; || prefix match || &amp;lt;code&amp;gt;startswith(Empname, &#039;Ia&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;contains()&amp;lt;/code&amp;gt; || substring match || &amp;lt;code&amp;gt;contains(GLCode, &#039;5-01&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; &amp;lt;code&amp;gt;startswith()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;contains()&amp;lt;/code&amp;gt; work on text/string fields (such as Code, Name, Description) but may fail or produce unexpected results on date fields . Use comparison operators (&amp;lt;code&amp;gt;gt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ge&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;le&amp;lt;/code&amp;gt;) on those columns instead.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Filter examples by use case ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date range&#039;&#039;&#039; — highest single-impact reduction:&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Date ge &#039;2026-01-01&#039; and Date le &#039;2026-12-31&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Active records only:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Status eq &#039;ACTIVE&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exclude archived:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Status ne &#039;ARCHIVED&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Limit columns retrieved with &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
OData supports projection via &amp;lt;code&amp;gt;$select=Col1,Col2,...&amp;lt;/code&amp;gt;. By default, every column on the entity is returned, including wide free-text fields that may never appear in your report. Restricting projection reduces row size and network transfer.&lt;br /&gt;
&lt;br /&gt;
In Power Query, expand only the columns you need before any other step, and confirm the resulting native query includes a &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; clause.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code&amp;gt;$select=InvoiceID,InvoiceNumber,Date,Total,Status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== 5. Combining Filters ===&lt;br /&gt;
&lt;br /&gt;
Stacked techniques decrease the Usage rapidly. Example combined filter + projection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Date ge &#039;2026-06-01&#039; and Status eq &#039;ACTIVE&#039;&amp;amp;$select=InvoiceID,InvoiceNumber,Date,Total,Status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typically reduces egress by &#039;&#039;&#039;~80%&#039;&#039;&#039; vs. an unfiltered, all-columns extraction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Incremental Refreshing =&lt;br /&gt;
&lt;br /&gt;
=== 6. Use Incremental Refresh for time-series data ===&lt;br /&gt;
&lt;br /&gt;
For datasets keyed on a date, datetime, or datetimezone column, configure &#039;&#039;&#039;Incremental Refresh&#039;&#039;&#039; so that only new or changed partitions are pulled on each refresh.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Power BI Premium / Fabric:&#039;&#039;&#039; native incremental refresh on semantic models.&lt;br /&gt;
* &#039;&#039;&#039;Power BI Pro:&#039;&#039;&#039; supported, but requires care to ensure the date filter folds. Test with &#039;&#039;&#039;View Native Query&#039;&#039;&#039; before publishing.&lt;br /&gt;
* &#039;&#039;&#039;Excel:&#039;&#039;&#039; use a date-threshold named range and filter the query URL on it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; If your organisation runs Microsoft Fabric, ask your data team about staging OdataLink feeds into a &#039;&#039;&#039;Dataflow Gen2&#039;&#039;&#039; (built on Power Query). Multiple reports can then consume the staged data without each one querying OdataLink directly. See [[How to Reduce my OdataLink Usage - For Power Users]].&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
Verify your optimisations in your Models Settings  &#039;&#039;&#039;Manage Models → View → Usage tab&#039;&#039;&#039; for monitoring a specific model. Compare:&lt;br /&gt;
* Unfiltered request volume (GB) - your baseline before optimising&lt;br /&gt;
* Filtered request volume (GB) - after applying optimisation&lt;br /&gt;
* &#039;&#039;&#039;Reduction %&#039;&#039;&#039; = (Unfiltered Volume − Filtered Volume) ÷ Unfiltered Data Volume × 100&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Target:&#039;&#039;&#039; 50–70% combined reduction from filtering + incremental refresh + column projection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power Query checklist ==&lt;br /&gt;
&lt;br /&gt;
* [ ] Date filters applied at the OData navigation step&lt;br /&gt;
* [ ] Verify Query folding&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used to limit columns retrieved&lt;br /&gt;
* [ ] Incremental refresh enabled for time-series datasets&lt;br /&gt;
* [ ] Refresh schedule matches actual report usage&lt;br /&gt;
* [ ] Considered Fabric Dataflow Gen2 if multiple reports share the same data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and query transformations, and recommend further optimisations in attempts to reduce your account usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
&lt;br /&gt;
* [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
* [[Models]]&lt;br /&gt;
* [[Data Files]]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [[Model Date Filters and Report Date Filters]]&lt;br /&gt;
* [https://odatalink.com/fair-use-policy OdataLink Fair Use Policy]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Advanced_Users&amp;diff=4637</id>
		<title>How to Reduce my OdataLink Usage - For Advanced Users</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Advanced_Users&amp;diff=4637"/>
		<updated>2026-06-01T05:36:04Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Your OdataLink subscription includes a monthly data download allowance under our [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. If your reports or dashboards use Power Query transformations to clean and shape the dataset, the following optimisations techniques will reduce egress and improve refresh performance.&lt;br /&gt;
&lt;br /&gt;
This help page is intended towards report developers working with &#039;&#039;&#039;M Language/Power Query&#039;&#039;&#039;. For developers using Fabric Data Pipelines, Azure Data Factory, SSIS, or persistent staging into Lakehouse/Warehouse/DataLake, &lt;br /&gt;
&amp;lt;br /&amp;gt;see [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039;. &lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Query-Level Filtering =&lt;br /&gt;
This sections explains how applying a filter early in the transformation steps helps reduce egress. Query level filtering makes use of OdataLink feature that can pass the filters up directly to the data source. This results in OdataLink only downloading the filtered data out of your [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
=== 1. Push date filters up to the OData feed level (query folding) ===&lt;br /&gt;
Filtering data &#039;&#039;&#039;after&#039;&#039;&#039; it has been downloaded does not reduce egress since the records have already been pulled out from the company file.&lt;br /&gt;
&lt;br /&gt;
Filtering must happen at the &#039;&#039;&#039;Navigation step&#039;&#039;&#039; in Power Query so the filter is sent to OdataLink as part of the OData query (&amp;lt;code&amp;gt;$filter=...&amp;lt;/code&amp;gt;) and only the matching/filtered rows are returned.&lt;br /&gt;
&lt;br /&gt;
# Apply date filters as early as possible, directly on the source table, before any merges, joins, or column expansions.&lt;br /&gt;
# Avoid applying &amp;lt;code&amp;gt;Table.SelectRows&amp;lt;/code&amp;gt; over a downloaded table when an equivalent filter can be applied at the navigation step.&lt;br /&gt;
&amp;lt;!--# Verify folding: right-click a step in Power Query → &#039;&#039;&#039;View Native Query&#039;&#039;&#039;. If the option is greyed out, the filter is being applied client-side and egress is not reduced.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Model Date Filters and Report Date Filters| &#039;&#039;&#039;Reference -&#039;&#039;&#039; Model Date Filters vs Report Date Filters]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 2. Apply supported OData filter operators ===&lt;br /&gt;
&lt;br /&gt;
The following operators fold to the OData feed and execute server-side before any data leaves your data file:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Operator !! Operation !! Example&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;eq&amp;lt;/code&amp;gt; || equal || &amp;lt;code&amp;gt;Status eq &#039;ACTIVE&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ne&amp;lt;/code&amp;gt; || not equal || &amp;lt;code&amp;gt;Status ne &#039;ARCHIVED&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lt&amp;lt;/code&amp;gt; || greater / less than || &amp;lt;code&amp;gt;Date gt &#039;2026-01-01&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ge&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;le&amp;lt;/code&amp;gt; || greater / less than or equal || &amp;lt;code&amp;gt;Amount ge 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; || logical AND || &amp;lt;code&amp;gt;Status eq &#039;ACTIVE&#039; and Type eq &#039;BANK&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; || logical OR || &amp;lt;code&amp;gt;Type eq &#039;BANK&#039; or Type eq &#039;CREDIT_CARD&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;startswith()&amp;lt;/code&amp;gt; || prefix match || &amp;lt;code&amp;gt;startswith(Empname, &#039;Ia&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;contains()&amp;lt;/code&amp;gt; || substring match || &amp;lt;code&amp;gt;contains(GLCode, &#039;5-01&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; &amp;lt;code&amp;gt;startswith()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;contains()&amp;lt;/code&amp;gt; are reliable on date string columns but may fail on free-text fields (Code, Name, Description). Use comparison operators on those columns instead.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Filter examples by use case ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date range&#039;&#039;&#039; — highest single-impact reduction:&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Date ge &#039;2026-01-01&#039; and Date le &#039;2026-12-31&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Active records only:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Status eq &#039;ACTIVE&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exclude archived:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Status ne &#039;ARCHIVED&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Limit columns retrieved with &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
OData supports projection via &amp;lt;code&amp;gt;$select=Col1,Col2,...&amp;lt;/code&amp;gt;. By default, every column on the entity is returned, including wide free-text fields that may never appear in your report. Restricting projection reduces row size and network transfer.&lt;br /&gt;
&lt;br /&gt;
In Power Query, expand only the columns you need before any other step, and confirm the resulting native query includes a &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; clause.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code&amp;gt;$select=InvoiceID,InvoiceNumber,Date,Total,Status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== 5. Combining Filters ===&lt;br /&gt;
&lt;br /&gt;
Stacked techniques decrease the Usage rapidly. Example combined filter + projection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Date ge &#039;2026-06-01&#039; and Status eq &#039;ACTIVE&#039;&amp;amp;$select=InvoiceID,InvoiceNumber,Date,Total,Status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typically reduces egress by &#039;&#039;&#039;~80%&#039;&#039;&#039; vs. an unfiltered, all-columns extraction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Incremental Refreshing =&lt;br /&gt;
&lt;br /&gt;
=== 6. Use Incremental Refresh for time-series data ===&lt;br /&gt;
&lt;br /&gt;
For datasets keyed on a date, datetime, or datetimezone column, configure &#039;&#039;&#039;Incremental Refresh&#039;&#039;&#039; so that only new or changed partitions are pulled on each refresh.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Power BI Premium / Fabric:&#039;&#039;&#039; native incremental refresh on semantic models.&lt;br /&gt;
* &#039;&#039;&#039;Power BI Pro:&#039;&#039;&#039; supported, but requires care to ensure the date filter folds. Test with &#039;&#039;&#039;View Native Query&#039;&#039;&#039; before publishing.&lt;br /&gt;
* &#039;&#039;&#039;Excel:&#039;&#039;&#039; use a date-threshold named range and filter the query URL on it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; If your organisation runs Microsoft Fabric, ask your data team about staging OdataLink feeds into a &#039;&#039;&#039;Dataflow Gen2&#039;&#039;&#039; (built on Power Query). Multiple reports can then consume the staged data without each one querying OdataLink directly. See [[How to Reduce my OdataLink Usage - For Power Users]].&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
Verify your optimisations in your Models Settings  &#039;&#039;&#039;Manage Models → View → Usage tab&#039;&#039;&#039; for monitoring a specific model. Compare:&lt;br /&gt;
* Unfiltered request volume (GB) - your baseline before optimising&lt;br /&gt;
* Filtered request volume (GB) - after applying optimisation&lt;br /&gt;
* &#039;&#039;&#039;Reduction %&#039;&#039;&#039; = (Unfiltered Volume − Filtered Volume) ÷ Unfiltered Data Volume × 100&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Target:&#039;&#039;&#039; 50–70% combined reduction from filtering + incremental refresh + column projection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power Query checklist ==&lt;br /&gt;
&lt;br /&gt;
* [ ] Date filters applied at the OData navigation step&lt;br /&gt;
* [ ] Verify Query folding&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used to limit columns retrieved&lt;br /&gt;
* [ ] Incremental refresh enabled for time-series datasets&lt;br /&gt;
* [ ] Refresh schedule matches actual report usage&lt;br /&gt;
* [ ] Considered Fabric Dataflow Gen2 if multiple reports share the same data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and query transformations, and recommend further optimisations in attempts to reduce your account usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
&lt;br /&gt;
* [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
* [[Models]]&lt;br /&gt;
* [[Data Files]]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [[Model Date Filters and Report Date Filters]]&lt;br /&gt;
* [https://odatalink.com/fair-use-policy OdataLink Fair Use Policy]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Power_Users&amp;diff=4636</id>
		<title>How to Reduce my OdataLink Usage - For Power Users</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Power_Users&amp;diff=4636"/>
		<updated>2026-06-01T05:34:20Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Your OdataLink subscription includes a monthly data download allowance under our [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. If your organisation have persists OdataLink data into SQL Server, Azure SQL, Fabric Lakehouse/Warehouse, or any other data platform via SSIS, Azure Data Factory (ADF), using Fabric Data Pipelines or Fabric DataFlows, the following techniques will help reduce egress and pipeline usage costs.&lt;br /&gt;
&lt;br /&gt;
This help page is intended towards Data Engineering and Fabric Developer teams running data pipelines and staging data into persistent storage. For report-level optimisations, see [[How to Reduce my OdataLink Usage - For Advanced Users]].&lt;br /&gt;
&lt;br /&gt;
For OdataLink model-level optimisations, see [[How to Reduce my OdataLink Usage - For Everyday Users]].&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039;. &lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
= Stage Once, Serve Many =&lt;br /&gt;
&lt;br /&gt;
=== 1. Use a Single Staging Platform or Pipeline ===&lt;br /&gt;
The biggest source of high usage is the same OData entity being downloaded by multiple reports, models, and pipelines. Each retrieval contributes to increasing the total egress or data downloaded from connected [[Data Files|Data File(s)]]&lt;br /&gt;
&lt;br /&gt;
# Pull relevant OData endpoints into a &#039;&#039;&#039;staging layer&#039;&#039;&#039; (SQL Server, Azure SQL, Fabric Lakehouse, Fabric Warehouse, etc.) &#039;&#039;&#039;once per refresh cycle&#039;&#039;&#039;. Schedule the refresh or trigger it on demand via Power Automate.&lt;br /&gt;
# Update all your queries to point to the staging layer - Power BI Dashboards/Reports/semantic models, Excel reports, Fabric notebooks, Power Apps, and disconnected from OdataLink.&lt;br /&gt;
&lt;br /&gt;
This collapses N reports × M queries refreshes into a &#039;&#039;&#039;single retrieval per cycle&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; &#039;&#039;&#039;Fabric Dataflow Legacy/Gen2&#039;&#039;&#039; is a managed staging layer built on the Power Query (M) engine. It is well suited to teams who want centralised OdataLink ingestion without provisioning SQL Server. Multiple Power BI, Excel, Power Apps, and Power Automate consumers can then read from the Dataflow output, querying OdataLink only once per Gen2 refresh.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://learn.microsoft.com/en-us/fabric/data-factory/dataflow-gen2-incremental-refresh Fabric Dataflow Gen2 incremental refresh]&lt;br /&gt;
&lt;br /&gt;
= Incremental Loading =&lt;br /&gt;
&lt;br /&gt;
=== 2. Replace truncate-and-reload with watermarked incremental loads ===&lt;br /&gt;
&lt;br /&gt;
Truncate-and-reload re-downloads everything on every run. Instead, use a &#039;&#039;&#039;high-watermark column&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;watermark&amp;quot; group=&amp;quot;watermark&amp;quot;&amp;gt;Cardoso, M. (2023). Robust data ingestion with High-watermarking. &#039;&#039;Microsoft Community Hub&#039;&#039;. [https://techcommunity.microsoft.com/blog/fasttrackforazureblog/robust-data-ingestion-with-high-watermarking/3707480 &amp;lt;u&amp;gt;techcommunity.microsoft.com/blog/fasttrackforazureblog/robust-data-ingestion-with-high-watermarking/3707480&amp;lt;/u&amp;gt;]&amp;lt;/ref&amp;gt; (typically &amp;lt;code&amp;gt;LastModifiedDateTime&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UpdatedDateUTC&amp;lt;/code&amp;gt;) and pass it into the OData URL via &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; so OdataLink returns only changed rows.&lt;br /&gt;
&lt;br /&gt;
Pattern:&lt;br /&gt;
&amp;lt;code&amp;gt;GET .../Invoices?$filter=LastModifiedDateTime gt 2026-05-01T00:00:00Z&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Store the maximum &amp;lt;code&amp;gt;Watermark_Value&amp;lt;/code&amp;gt; from the last successful run in a &#039;&#039;&#039;control table&#039;&#039;&#039; (e.g. &amp;lt;code&amp;gt;dbo.PipelineWatermarks&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dbo.Company1Watermarks&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dbo.LastUpdatedWatermark&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Read and inject that value as the lower bound into the OData URL at the start of the next run.&lt;br /&gt;
# &#039;&#039;&#039;Merge (UPSERT)&#039;&#039;&#039; the result into the target table on the natural key (UID). Apply append rules carefully, handling edge cases.&lt;br /&gt;
# Update the watermark &amp;lt;ref name=&amp;quot;watermark&amp;quot; group=&amp;quot;watermark&amp;quot; /&amp;gt; in the control table &#039;&#039;&#039;only after&#039;&#039;&#039; the merge has completed successfully. A failed run can safely re-pull the same window for the data on retry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; This pattern works in &#039;&#039;&#039;SSIS&#039;&#039;&#039; (OData Source component with parameterised URL via Expression), &#039;&#039;&#039;Azure Data Factory / Fabric Data Pipelines&#039;&#039;&#039; (Copy Activity with dynamic OData query expression), &#039;&#039;&#039;Fabric Dataflow Gen2&#039;&#039;&#039; (M parameter), and any custom .NET / Python ETL.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[OData Feed URLs| OdataLink OData URL structure and query parameters]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. Project only required columns with &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
By default, retrieving an entity returns every column, most of which are rarely useful in a warehouse. Restricting columns at the URL level reduces download size, egress, and staging table footprint.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code&amp;gt;GET .../Invoices?$select=InvoiceID,InvoiceNumber,Date,Total,Status,LastModifiedDateTime&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Always include your watermark &amp;lt;ref  name=&amp;quot;watermark&amp;quot; group=&amp;quot;watermark&amp;quot; /&amp;gt; column in &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt;, even if it is not loaded into the final warehouse table. Your query transformations need it for the next refresh.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Run historical backfills as a one-time non-recurring job ===&lt;br /&gt;
&lt;br /&gt;
The first load of a large entity is the most expensive download. Your Data workflow should handle it as a one-off setup task, and not on a schedule.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Run the backfill once&#039;&#039;&#039;: using a separate package or pipeline distinct from your incremental job.&lt;br /&gt;
# &#039;&#039;&#039;Follow &amp;lt;code&amp;gt;@odata.nextLink&amp;lt;/code&amp;gt;&#039;&#039;&#039;: to page through the data in chunks rather than trying to pull everything in a single request.&lt;br /&gt;
# &#039;&#039;&#039;Break very large entities into date-bounded windows&#039;&#039;&#039;: (year-by-year or quarter-by-quarter) using &amp;lt;code&amp;gt;$filter=Date ge &#039;YYYY-01-01&#039; and Date lt &#039;YYYY+1-01-01&#039;&amp;lt;/code&amp;gt;. A failed run only re-runs the failed window.&lt;br /&gt;
# &#039;&#039;&#039;Record completed windows&#039;&#039;&#039;: in a control table (e.g. &amp;lt;code&amp;gt;dbo.BackfillProgress&amp;lt;/code&amp;gt;). The backfill becomes safe to re-run, already-loaded windows can be skipped.&lt;br /&gt;
# &#039;&#039;&#039;Switch off the backfill once history is loaded&#039;&#039;&#039;: Recurring queries or jobs will then fetch new data using incremental loads only (Section 2).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Rule of thumb:&#039;&#039;&#039; If your scheduled pipeline is re-downloading data older than intended, check your query filters. Historical data should already be in your staging table.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Scheduling =&lt;br /&gt;
&lt;br /&gt;
=== 5. Schedule pipelines deliberately ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Stagger pipeline schedules&#039;&#039;&#039;, so that multiple pipelines do not hit the same tenant simultaneously.&lt;br /&gt;
* &#039;&#039;&#039;Align frequency with the business cycle.&#039;&#039;&#039; Daily General Ledger snapshots rarely need sub-hourly retrieval.&lt;br /&gt;
* &#039;&#039;&#039;Use off-peak windows&#039;&#039;&#039;: schedule heavy historical refreshes overnight or at weekends.&lt;br /&gt;
* &#039;&#039;&#039;Use dependency-based triggers&#039;&#039;&#039;: In Fabric Data Pipelines and Azure Data Factory, trigger downstream pipelines based on the completion event of the upstream load and not at a fixed time. Downstream jobs should run only when the upstream actually produced new rows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 6. Refresh reference and transactional data on separate frequencies ===&lt;br /&gt;
&lt;br /&gt;
Reference entities change far less frequently than transactional entities. Split your pipeline into two schedules:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Frequency!! Examples&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Slow (daily or weekly)&#039;&#039;&#039; || Chart of Accounts, Tax Rates, Tracking Categories, Contacts (where stable), Items&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Fast (intra-day or hourly)&#039;&#039;&#039; || Invoices, Bills, Credit Notes, Bank Transactions, Journals&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Refreshing reference tables less often and joining them server-side at the warehouse avoids re-downloading effectively static data multiple times per day.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
=== 7. Monitor pipeline cost end-to-end ===&lt;br /&gt;
&lt;br /&gt;
OdataLink egress is one component of total pipeline cost. Track both OdataLink usage and your Fabric Compute Units (CUs)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OdataLink egress:&#039;&#039;&#039; OdataLink Admin Portal → View Account Details → &#039;&#039;&#039;Usage Stats&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Azure/Fabric Compute and storage :&#039;&#039;&#039; Azure Cost Management, Fabric Capacity Metrics app&lt;br /&gt;
&lt;br /&gt;
A well-tuned pipeline reduces both egress and compute. If OdataLink usage drops but Fabric capacity unit (CU) consumption rises, review whether the staging layer itself is computing on the same data set multiple times.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Combined egress reduction example ==&lt;br /&gt;
&lt;br /&gt;
Stacked optimisation techniques reduce Egress and Cost significantly:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;GET .../Invoices?$filter=LastModifiedDateTime gt &#039;2026-05-01T00:00:00Z&#039;&amp;amp;$select=InvoiceID,InvoiceNumber,Date,Total,Status,LastModifiedDateTime&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Combined with stage-once-serve-many architecture, this typically reduces OdataLink egress by &#039;&#039;&#039;90%+&#039;&#039;&#039; versus N consumers each pulling full unfiltered entities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power Users checklist ==&lt;br /&gt;
&lt;br /&gt;
* [ ] OdataLink data staged once into SQL / Lakehouse / Warehouse / Dataflow Gen2, downstream consumers read from the staging layer&lt;br /&gt;
* [ ] All recurring loads use &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; with a &#039;&#039;&#039;high-watermark&#039;&#039;&#039; column&amp;lt;ref  name=&amp;quot;watermark&amp;quot; group=&amp;quot;watermark&amp;quot; /&amp;gt;&lt;br /&gt;
* [ ] Watermark stored in a control table, updated only on successful append/merge&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used on every entity, including the watermark column&lt;br /&gt;
* [ ] Full-table backfills are one-time, not recurring&lt;br /&gt;
* [ ] Historical backfills broken into resumable date-bounded windows&lt;br /&gt;
* [ ] Pipeline schedules staggered and aligned with the business cycle&lt;br /&gt;
* [ ] Reference and transactional data refreshed on separate schedules&lt;br /&gt;
* [ ] Downstream pipelines triggered by upstream completion, not fixed time&lt;br /&gt;
* [ ] Both OdataLink egress and Azure / Fabric compute cost monitored&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your data query and transformation steps, refresh patterns, and pipeline design, and recommend further optimisations in order to bring your account usage within limits.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&amp;lt;references group=&amp;quot;watermark&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
&lt;br /&gt;
* [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Advanced Users]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
* [[Models]]&lt;br /&gt;
* [[Data Files]]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [https://odatalink.com/fair-use-policy OdataLink Fair Use Policy]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_track_my_OdataLink_Usage&amp;diff=4635</id>
		<title>How to track my OdataLink Usage</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_track_my_OdataLink_Usage&amp;diff=4635"/>
		<updated>2026-06-01T05:24:17Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Each OdataLink account is subject to Monthly Data download allowance under OdataLink&#039;s [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy (Policy)&#039;&#039;&#039;] document. &lt;br /&gt;
Usage is shared across  entire account and data files, so higher activity on one data file can be offset bu lower activity on other(s).&lt;br /&gt;
OdataLink tracks data usage at the Account level, Models level, and per data file level, to help you stay within your Monthly Data Allowance limits.&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
[[File:OdataLink_Account_Usage.png|400px|thumb|right|Account Usage]]&lt;br /&gt;
&lt;br /&gt;
{{:Reducing Data Usage and Optimising your OdataLink Feeds}}&lt;br /&gt;
=== What does not count as Usage ===&lt;br /&gt;
* Data retrieved from OdataLink&#039;s archive (historical cached data).&lt;br /&gt;
* Data retrieved from data sources other than connected Data Files&lt;br /&gt;
[[File:OdataLink_Model_Usage.png|400px|thumb|right|Model Usage]]&lt;br /&gt;
[[File:OdataLink_Data_File_Usage.png|400px|thumb|right|Data File Usage]]&lt;br /&gt;
&lt;br /&gt;
== Where can I find my Usage ==&lt;br /&gt;
Login to your &#039;&#039;&#039;OdataLink Admin portal&#039;&#039;&#039; and according to each level, navigate to the appropriate &#039;&#039;&#039;Usage&#039;&#039;&#039; tab as explained below:&lt;br /&gt;
&lt;br /&gt;
=== 1. Account Level Usage ===&lt;br /&gt;
# Click on &#039;&#039;&#039;Account/Subscription&#039;&#039;&#039; Settings on the left side panel.&lt;br /&gt;
# &#039;&#039;&#039;View Account&#039;&#039;&#039; page will be loaded.&lt;br /&gt;
# A graph under &#039;&#039;&#039;Usage Stats&#039;&#039;&#039; will be displayed indicating your &#039;&#039;&#039;Account&#039;s Total Usage&#039;&#039;&#039; for the period as selected in the &#039;&#039;&#039;Month&#039;&#039;&#039; dropdown field.&lt;br /&gt;
&lt;br /&gt;
=== 2. Model Level Usage ===&lt;br /&gt;
# Click on &#039;&#039;&#039;Models&#039;&#039;&#039; on the left side panel to view all Models.&lt;br /&gt;
# Click on the Model Name or the &#039;&#039;&#039;View&#039;&#039;&#039; button corresponding to the model.&lt;br /&gt;
# Click on &#039;&#039;&#039;Usage&#039;&#039;&#039; tab and a graph will be shown indicating your &#039;&#039;&#039;Model&#039;s Total Usage&#039;&#039;&#039; for the period as selected in the &#039;&#039;&#039;Month&#039;&#039;&#039; dropdown field.&lt;br /&gt;
&lt;br /&gt;
=== 3. Data File Level Usage ===&lt;br /&gt;
# Click on &#039;&#039;&#039;Data Files&#039;&#039;&#039; on the left side panel to view all Data Files connected to your account.&lt;br /&gt;
# Click on the Entity/Company/Data File Name or the &#039;&#039;&#039;View&#039;&#039;&#039; button corresponding to the Data File.&lt;br /&gt;
# Click on &#039;&#039;&#039;Usage&#039;&#039;&#039; tab and a graph will be shown indicating your &#039;&#039;&#039;Data File&#039;s Total Usage&#039;&#039;&#039; for the period as selected in the &#039;&#039;&#039;Month&#039;&#039;&#039; dropdown field.&lt;br /&gt;
&lt;br /&gt;
= How to Reduce my Usage =&lt;br /&gt;
If your Usage is high or is approaching the Monthly Data Allowance limits, see [[Reducing Data Usage and Optimising your OdataLink Feeds]]&lt;br /&gt;
&lt;br /&gt;
The help page above contains guides for:&lt;br /&gt;
* Everyday Users - To optimise at OdataLink level&lt;br /&gt;
* Advanced Users - To apply optimisations at report and data query level&lt;br /&gt;
* Power Users - To apply optimisations at staging levels and pipeline levels, custom solutions apply&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
: [https://odatalink.com/fair-use-policy Fair Use Policy]&lt;br /&gt;
: [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=Reducing_Data_Usage_and_Optimising_your_OdataLink_Feeds&amp;diff=4634</id>
		<title>Reducing Data Usage and Optimising your OdataLink Feeds</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=Reducing_Data_Usage_and_Optimising_your_OdataLink_Feeds&amp;diff=4634"/>
		<updated>2026-06-01T05:18:23Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview = &lt;br /&gt;
To keep OdataLink subscriptions affordable and predictable for everyone, we&#039;ve introduced a [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. This policy sets a monthly download limit for data retrieved from your connected [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
The guidance below applies to all models connecting to Xero, Xero Practice Manager, MYOB and QuickBooks. Following these steps will:&lt;br /&gt;
&lt;br /&gt;
* Reduce your monthly download volume; and&lt;br /&gt;
* Improve refresh performance&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal → Usage Stats&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What is Usage ==&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Usage&#039;&#039;&#039; is defined as the volume of data OdataLink retrieves from your connected [[Data Files|data files]] each month. &lt;br /&gt;
&lt;br /&gt;
This includes data retrieved by [[Microsoft Power BI|Power BI]], [[Microsoft Excel|Excel]], or [[OData Client Compatibility|other]] data pipeline and reporting tools, either via automatic scheduled refreshes or manual report refresh.&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
= Pick your Optimisation Layer =&lt;br /&gt;
Optimisation techniques are grouped by the tooling you use. Pick the page that matches your role — or read all three if your organisation spans several layers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Page !! Audience !! What it covers&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Everyday Users]] || Accountants, bookkeepers, business users || Refresh frequency, [[Models|model]] settings (Cut-off Date, Default Date Range, Polling), monitoring&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Advanced Users]] || Power BI, Fabric, and Excel report developers (Power Query / M) || Query folding, OData &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; operators, &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; projection, incremental refresh&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Power Users]] || Data engineering teams (SSIS, ADF, Fabric Data Pipelines, Fabric Dataflow Legacy/Gen2) || Stage-once-serve-many, watermarked incremental loads, historical backfill strategy, scheduling discipline, end-to-end cost monitoring&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; Start with the [[How to Reduce my OdataLink Usage - For Everyday Users|Everyday Users]] page regardless of your role. The model-level settings described there apply to &#039;&#039;&#039;every&#039;&#039;&#039; refresh, automatic or manual, report or pipeline, and deliver the largest reduction with the least amount of changes.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== For everyone (accountants, bookkeepers, business users) ==&lt;br /&gt;
&lt;br /&gt;
Please refer to the following support note detailing optimisation techniques that can be applied directly in your OdataLink Admin Portal or in your reporting architecture.&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== For Power BI, Fabric, and Excel developers ==&lt;br /&gt;
&lt;br /&gt;
For optimisations applied inside Power Query — query folding, &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt;, incremental refresh — see:&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Advanced Users]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== For SQL, SSIS, and Fabric Pipeline Developers ==&lt;br /&gt;
&lt;br /&gt;
For optimisations applied at the pipeline / data warehouse layer — stage-once-serve-many, watermarked incremental loads, Fabric Dataflow Gen2 staging, scheduling discipline — see:&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Data Engineers]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Quick checklist ==&lt;br /&gt;
A cross-cutting checklist drawn from all three pages. Detailed steps and tool-specific guidance are in the linked pages above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Everyone:&#039;&#039;&#039;&lt;br /&gt;
* [ ] Refresh schedule matches how often the report is actually used&lt;br /&gt;
* [ ] Weekend / out-of-hours refreshes disabled where not needed&lt;br /&gt;
* [ ] Archive Type set to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; on the [[Models|model]]&lt;br /&gt;
* [ ] Cut-off Date or rolling window configured&lt;br /&gt;
* [ ] Default Date Range configured to match your reporting window&lt;br /&gt;
* [ ] Polling enabled&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Users:&#039;&#039;&#039;&lt;br /&gt;
* [ ] Date filters applied at the OData navigation step (not post-download)&lt;br /&gt;
* [ ] Query folding verified via &#039;&#039;&#039;View Native Query&#039;&#039;&#039;&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used to limit columns retrieved&lt;br /&gt;
* [ ] Incremental refresh enabled for time-series datasets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Azure/Fabric/Data Pipeline developers:&#039;&#039;&#039;&lt;br /&gt;
* [ ] OdataLink data staged once into SQL / Lakehouse / Warehouse / Dataflow Gen2; downstream consumers read from the staging layer&lt;br /&gt;
* [ ] All recurring loads use &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; with a high-watermark column&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used on every entity, including the watermark column&lt;br /&gt;
* [ ] Full-table backfills are one-time, not recurring&lt;br /&gt;
* [ ] Pipeline schedules staggered and aligned with the business cycle&lt;br /&gt;
* [ ] Reference and transactional data refreshed on separate cadences&lt;br /&gt;
* [ ] Both OdataLink egress and Azure / Fabric compute cost monitored&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and pipeline design, and recommend further optimisations to bring your account usage within limits.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
&lt;br /&gt;
* [https://odatalink.com/fair-use-policy OdataLink Fair Use Policy]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
&amp;lt;!-- * [https://developer.xero.com/pricing Xero Developer Pricing]&lt;br /&gt;
* [https://developer.xero.com/faq/pricing-and-policy-updates Xero Pricing and Policy Updates FAQ]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=Reducing_Data_Usage_and_Optimising_your_OdataLink_Feeds&amp;diff=4633</id>
		<title>Reducing Data Usage and Optimising your OdataLink Feeds</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=Reducing_Data_Usage_and_Optimising_your_OdataLink_Feeds&amp;diff=4633"/>
		<updated>2026-06-01T05:18:06Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview = &lt;br /&gt;
To keep OdataLink subscriptions affordable and predictable for everyone, we&#039;ve introduced a [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. This policy sets a monthly download limit for data retrieved from your connected [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
The guidance below applies to all models connecting to Xero, Xero Practice Manager, MYOB and QuickBooks. Following these steps will:&lt;br /&gt;
&lt;br /&gt;
* Reduce your monthly download volume; and&lt;br /&gt;
* Improve refresh performance&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal → Usage Stats&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What is Usage ==&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Usage&#039;&#039;&#039; is defined as the volume of data OdataLink retrieves from your connected [[Data Files|data files]] each month. &lt;br /&gt;
&lt;br /&gt;
This includes data retrieved by [[Microsoft Power BI|Power BI]], [[Microsoft Excel|Excel]], or [[OData Client Compatibility|other]] data pipeline and reporting tools, either via automatic scheduled refreshes or manual report refresh.&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
= Pick your Optimisation Layer =&lt;br /&gt;
Optimisation techniques are grouped by the tooling you use. Pick the page that matches your role — or read all three if your organisation spans several layers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Page !! Audience !! What it covers&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Everyday Users]] || Accountants, bookkeepers, business users || Refresh frequency, [[Models|model]] settings (Cut-off Date, Default Date Range, Polling), monitoring&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Advanced Users]] || Power BI, Fabric, and Excel report developers (Power Query / M) || Query folding, OData &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; operators, &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; projection, incremental refresh&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Power Users]] || Data engineering teams (SSIS, ADF, Fabric Data Pipelines, Fabric Dataflow Legacy/Gen2) || Stage-once-serve-many, watermarked incremental loads, historical backfill strategy, scheduling discipline, end-to-end cost monitoring&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; Start with the [[How to Reduce my OdataLink Usage - For Everyday Users|Everyday Users]] page regardless of your role. The model-level settings described there apply to &#039;&#039;&#039;every&#039;&#039;&#039; refresh, automatic or manual, report or pipeline, and deliver the largest reduction with the least changes.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== For everyone (accountants, bookkeepers, business users) ==&lt;br /&gt;
&lt;br /&gt;
Please refer to the following support note detailing optimisation techniques that can be applied directly in your OdataLink Admin Portal or in your reporting architecture.&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== For Power BI, Fabric, and Excel developers ==&lt;br /&gt;
&lt;br /&gt;
For optimisations applied inside Power Query — query folding, &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt;, incremental refresh — see:&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Advanced Users]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== For SQL, SSIS, and Fabric Pipeline Developers ==&lt;br /&gt;
&lt;br /&gt;
For optimisations applied at the pipeline / data warehouse layer — stage-once-serve-many, watermarked incremental loads, Fabric Dataflow Gen2 staging, scheduling discipline — see:&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Data Engineers]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Quick checklist ==&lt;br /&gt;
A cross-cutting checklist drawn from all three pages. Detailed steps and tool-specific guidance are in the linked pages above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Everyone:&#039;&#039;&#039;&lt;br /&gt;
* [ ] Refresh schedule matches how often the report is actually used&lt;br /&gt;
* [ ] Weekend / out-of-hours refreshes disabled where not needed&lt;br /&gt;
* [ ] Archive Type set to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; on the [[Models|model]]&lt;br /&gt;
* [ ] Cut-off Date or rolling window configured&lt;br /&gt;
* [ ] Default Date Range configured to match your reporting window&lt;br /&gt;
* [ ] Polling enabled&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Users:&#039;&#039;&#039;&lt;br /&gt;
* [ ] Date filters applied at the OData navigation step (not post-download)&lt;br /&gt;
* [ ] Query folding verified via &#039;&#039;&#039;View Native Query&#039;&#039;&#039;&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used to limit columns retrieved&lt;br /&gt;
* [ ] Incremental refresh enabled for time-series datasets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Azure/Fabric/Data Pipeline developers:&#039;&#039;&#039;&lt;br /&gt;
* [ ] OdataLink data staged once into SQL / Lakehouse / Warehouse / Dataflow Gen2; downstream consumers read from the staging layer&lt;br /&gt;
* [ ] All recurring loads use &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; with a high-watermark column&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used on every entity, including the watermark column&lt;br /&gt;
* [ ] Full-table backfills are one-time, not recurring&lt;br /&gt;
* [ ] Pipeline schedules staggered and aligned with the business cycle&lt;br /&gt;
* [ ] Reference and transactional data refreshed on separate cadences&lt;br /&gt;
* [ ] Both OdataLink egress and Azure / Fabric compute cost monitored&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and pipeline design, and recommend further optimisations to bring your account usage within limits.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
&lt;br /&gt;
* [https://odatalink.com/fair-use-policy OdataLink Fair Use Policy]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
&amp;lt;!-- * [https://developer.xero.com/pricing Xero Developer Pricing]&lt;br /&gt;
* [https://developer.xero.com/faq/pricing-and-policy-updates Xero Pricing and Policy Updates FAQ]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_track_my_OdataLink_Usage&amp;diff=4632</id>
		<title>How to track my OdataLink Usage</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_track_my_OdataLink_Usage&amp;diff=4632"/>
		<updated>2026-05-28T06:30:42Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Each OdataLink account is subject to Monthly Data download allowance under OdataLink&#039;s [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy (Policy)&#039;&#039;&#039;] document. &lt;br /&gt;
Usage is shared across  entire account and data files, so higher activity on one data file can be offset bu lower activity on other(s).&lt;br /&gt;
OdataLink tracks data usage at the Account level, Models level, and per data file level, to help you stay within your Monthly Data Allowance limits.&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
[[File:OdataLink_Account_Usage.png|400px|thumb|right|Account Usage]]&lt;br /&gt;
&lt;br /&gt;
{{:Reducing Data Usage and Optimising your OdataLink Feeds}}&lt;br /&gt;
=== What does not count as Usage ===&lt;br /&gt;
* Data retrieved from OdataLink&#039;s archive (historical cached data).&lt;br /&gt;
* Data retrieved from data sources other than connected Data Files&lt;br /&gt;
[[File:OdataLink_Model_Usage.png|400px|thumb|right|Model Usage]]&lt;br /&gt;
[[File:OdataLink_Data_File_Usage.png|400px|thumb|right|Data File Usage]]&lt;br /&gt;
&lt;br /&gt;
= Where can I find my Usage =&lt;br /&gt;
Login to your &#039;&#039;&#039;OdataLink Admin portal&#039;&#039;&#039; and according to each level, navigate to the appropriate &#039;&#039;&#039;Usage&#039;&#039;&#039; tab as explained below:&lt;br /&gt;
&lt;br /&gt;
== 1. Account Level Usage ==&lt;br /&gt;
# Click on &#039;&#039;&#039;Account/Subscription&#039;&#039;&#039; Settings on the left side panel.&lt;br /&gt;
# &#039;&#039;&#039;View Account&#039;&#039;&#039; page will be loaded.&lt;br /&gt;
# A graph under &#039;&#039;&#039;Usage Stats&#039;&#039;&#039; will be displayed indicating your &#039;&#039;&#039;Account&#039;s Total Usage&#039;&#039;&#039; for the period as selected in the &#039;&#039;&#039;Month&#039;&#039;&#039; dropdown field.&lt;br /&gt;
&lt;br /&gt;
== 2. Model Level Usage ==&lt;br /&gt;
# Click on &#039;&#039;&#039;Models&#039;&#039;&#039; on the left side panel to view all Models.&lt;br /&gt;
# Click on the Model Name or the &#039;&#039;&#039;View&#039;&#039;&#039; button corresponding to the model.&lt;br /&gt;
# Click on &#039;&#039;&#039;Usage&#039;&#039;&#039; tab and a graph will be shown indicating your &#039;&#039;&#039;Model&#039;s Total Usage&#039;&#039;&#039; for the period as selected in the &#039;&#039;&#039;Month&#039;&#039;&#039; dropdown field.&lt;br /&gt;
&lt;br /&gt;
== 3. Data File Level Usage ==&lt;br /&gt;
# Click on &#039;&#039;&#039;Data Files&#039;&#039;&#039; on the left side panel to view all Data Files connected to your account.&lt;br /&gt;
# Click on the Entity/Company/Data File Name or the &#039;&#039;&#039;View&#039;&#039;&#039; button corresponding to the Data File.&lt;br /&gt;
# Click on &#039;&#039;&#039;Usage&#039;&#039;&#039; tab and a graph will be shown indicating your &#039;&#039;&#039;Data File&#039;s Total Usage&#039;&#039;&#039; for the period as selected in the &#039;&#039;&#039;Month&#039;&#039;&#039; dropdown field.&lt;br /&gt;
&lt;br /&gt;
= How to Reduce my Usage =&lt;br /&gt;
If your Usage is high or is approaching the Monthly Data Allowance limits, see [[Reducing Data Usage and Optimising your OdataLink Feeds]]&lt;br /&gt;
&lt;br /&gt;
The help page above contains guides for:&lt;br /&gt;
* Everyday Users - To optimise at OdataLink level&lt;br /&gt;
* Advanced Users - To apply optimisations at report and data query level&lt;br /&gt;
* Power Users - To apply optimisations at staging levels and pipeline levels, custom solutions apply&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
: [https://odatalink.com/fair-use-policy Fair Use Policy]&lt;br /&gt;
: [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_track_my_OdataLink_Usage&amp;diff=4631</id>
		<title>How to track my OdataLink Usage</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_track_my_OdataLink_Usage&amp;diff=4631"/>
		<updated>2026-05-28T06:27:10Z</updated>

		<summary type="html">&lt;p&gt;Ash: Created page with &amp;quot;= Overview = Each OdataLink account is subject to Monthly Data download allowance under OdataLink&amp;#039;s [https://odatalink.com/fair-use-policy &amp;#039;&amp;#039;&amp;#039;Fair Use Policy (Policy)&amp;#039;&amp;#039;&amp;#039;] docu...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Each OdataLink account is subject to Monthly Data download allowance under OdataLink&#039;s [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy (Policy)&#039;&#039;&#039;] document. &lt;br /&gt;
Usage is shared across  entire account and data files, so higher activity on one data file can be offset bu lower activity on other(s).&lt;br /&gt;
OdataLink tracks data usage at the Account level, Models level, and per data file level, to help you stay within your Monthly Data Allowance limits.&lt;br /&gt;
&lt;br /&gt;
== What counts as Usage ==&lt;br /&gt;
{{:Reducing Data Usage and Optimising your OdataLink Feeds}}&lt;br /&gt;
&lt;br /&gt;
=== What does not count as Usage ===&lt;br /&gt;
* Data retrieved from OdataLink&#039;s archive (historical cached data).&lt;br /&gt;
* Data retrieved from data sources other than connected Data Files&lt;br /&gt;
[[File:OdataLink_Account_Usage.png|400px|thumb|right|Account Usage]]&lt;br /&gt;
== Where can I find my Usage ==&lt;br /&gt;
Login to your &#039;&#039;&#039;OdataLink Admin portal&#039;&#039;&#039; and according to each level, navigate to the appropriate Usage stats tab as explained below:&lt;br /&gt;
[[File:OdataLink_Model_Usage.png|400px|thumb|right|Model Usage]]&lt;br /&gt;
[[File:OdataLink_Data_File_Usage.png|400px|thumb|right|Data File Usage]]&lt;br /&gt;
=== 1. Account Level Usage ===&lt;br /&gt;
# Click on &#039;&#039;&#039;Account/Subscription&#039;&#039;&#039; Settings on the left side panel.&lt;br /&gt;
# &#039;&#039;&#039;View Account&#039;&#039;&#039; page will be loaded.&lt;br /&gt;
# A graph under &#039;&#039;&#039;Usage Stats&#039;&#039;&#039; will be displayed indicating your &#039;&#039;&#039;Account&#039;s Total Usage&#039;&#039;&#039; for the period as selected in the &#039;&#039;&#039;Month&#039;&#039;&#039; dropdown field.&lt;br /&gt;
&lt;br /&gt;
=== 2. Model Level Usage ===&lt;br /&gt;
# Click on &#039;&#039;&#039;Models&#039;&#039;&#039; on the left side panel to view all Models.&lt;br /&gt;
# Click on the Model Name or the &#039;&#039;&#039;View&#039;&#039;&#039; button corresponding to the model.&lt;br /&gt;
# Click on &#039;&#039;&#039;Usage&#039;&#039;&#039; tab and a graph will be shown indicating your &#039;&#039;&#039;Model&#039;s Total Usage&#039;&#039;&#039; for the period as selected in the &#039;&#039;&#039;Month&#039;&#039;&#039; dropdown field.&lt;br /&gt;
&lt;br /&gt;
=== 3. Data File Level Usage ===&lt;br /&gt;
# Click on &#039;&#039;&#039;Data Files&#039;&#039;&#039; on the left side panel to view all Data Files connected to your account.&lt;br /&gt;
# Click on the Entity/Company/Data File Name or the &#039;&#039;&#039;View&#039;&#039;&#039; button corresponding to the Data File.&lt;br /&gt;
# Click on &#039;&#039;&#039;Usage&#039;&#039;&#039; tab and a graph will be shown indicating your &#039;&#039;&#039;Data File&#039;s Total Usage&#039;&#039;&#039; for the period as selected in the &#039;&#039;&#039;Month&#039;&#039;&#039; dropdown field.&lt;br /&gt;
&lt;br /&gt;
== How to Reduce my Usage ==&lt;br /&gt;
If your Usage is high or is approaching the Monthly Data Allowance limits, see [[Reducing Data Usage and Optimising your OdataLink Feeds]]&lt;br /&gt;
&lt;br /&gt;
The help page above contains guides for:&lt;br /&gt;
* Everyday Users - To optimise at OdataLink level&lt;br /&gt;
* Advanced Users - To apply optimisations at report and data query level&lt;br /&gt;
* Power Users - To apply optimisations at staging levels and pipeline levels, custom solutions apply&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
: [https://odatalink.com/fair-use-policy Fair Use Policy]&lt;br /&gt;
: [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Everyday_Users&amp;diff=4630</id>
		<title>How to Reduce my OdataLink Usage - For Everyday Users</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Everyday_Users&amp;diff=4630"/>
		<updated>2026-05-28T06:25:01Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Overview =&lt;br /&gt;
Your OdataLink subscription includes a monthly data download allowance under our [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. If your account&#039;s connected [[Data Files|data file(s)]] are frequently approaching or exceeding monthly limits, the following techniques will help reduce usage with minimal impact to your reporting functionality.&lt;br /&gt;
&lt;br /&gt;
The following optimisations can be applied directly in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039; or in your reporting software. &lt;br /&gt;
&amp;lt;!--Based on whether&lt;br /&gt;
# Your reporting solution uses (or will use) &#039;&#039;&#039;automatic refresh&#039;&#039;&#039;&lt;br /&gt;
# Your reporting solution uses (or will use) &#039;&#039;&#039;manual or on-demand refresh&#039;&#039;&#039;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039;. &lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Automatic Data Refresh / Data Fetch ==&lt;br /&gt;
&lt;br /&gt;
=== Optimise Usage by reducing automatic refresh frequency ===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
= Refresh Schedule =&lt;br /&gt;
&lt;br /&gt;
=== 1. Reduce Automatic Refresh frequency ===&lt;br /&gt;
Most reports do not need to refresh every hour, every day, or on weekends. Each scheduled refresh re-pulls data and counts toward your allowance.&lt;br /&gt;
&lt;br /&gt;
* Match the refresh frequency to how often you actually look at the report.&lt;br /&gt;
* Disable refreshes outside business hours and on weekends if the report is not viewed then.&lt;br /&gt;
* For monthly reports, a daily or weekly refresh is usually sufficient.&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; Refreshing a sales dashboard hourly when the team only checks it on Monday mornings can use 24× more data than needed. Drop to daily, or weekly, and you may reduce that report&#039;s usage by 95%+.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Manual / On-demand Refresh ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2. Refresh manually only when you need updated Data ===&lt;br /&gt;
&lt;br /&gt;
If you can, use on-demand refresh:&lt;br /&gt;
*Refresh only when you actually need the latest figures.&lt;br /&gt;
*Batch multiple reports into a single refresh window where possible.&lt;br /&gt;
* Avoid &amp;quot;refresh-just-in-case&amp;quot; before meetings — schedule a single refresh ahead of time instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
= Model Settings =&lt;br /&gt;
The settings below are configured once per [[Models|model]] in your &#039;&#039;&#039;OdataLink Portal&#039;&#039;&#039; and applies to &#039;&#039;&#039;every refresh&#039;&#039;&#039; request.&lt;br /&gt;
&lt;br /&gt;
=== 2. Apply a Cut-off Date on your model ===&lt;br /&gt;
&lt;br /&gt;
OdataLink provides the ability to archive historical data to avoid re-downloading of same data on every refresh. The &#039;&#039;&#039;Cut-Off Date&#039;&#039;&#039; instructs OdataLink to save data up to the cut-off date and serve future refreshes from that archive.&lt;br /&gt;
&lt;br /&gt;
Setting a cut-off date in your model dramatically reduces the volume retrieved on every refresh by avoiding downloading the same historical data multiple times.&lt;br /&gt;
&lt;br /&gt;
To set a cut off date and enable archiving in your model:&lt;br /&gt;
# &#039;&#039;&#039;Archive Type:&#039;&#039;&#039;  Set the [[Archive Types|Archive Type]] of your model to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; to enable archiving.&lt;br /&gt;
# &#039;&#039;&#039;Archive Cut-Off Date:&#039;&#039;&#039; Set either a fixed cut-off date, or a &#039;&#039;&#039;rolling window&#039;&#039;&#039; that continuously archives data older than X months or X days.&lt;br /&gt;
&amp;lt;!--#; OdataLink recommends setting a rolling window archiving so that the new data also gets archived after a certain number of days or months.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; OdataLink recommends a rolling window so new data is automatically archived as it ages. You only configure it once.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://odatalink.com/2025-03-increase-performance-of-your-odatalink-odata-feeds-using-the-cut-off-date-settings/ How to apply and use the Cut-off Date setting]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Set a Default Date Range on your model ===&lt;br /&gt;
&lt;br /&gt;
OdataLink provides the ability to define a default date range for a model. This allows users to control the amount of data that gets downloaded from the connected [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
If you never report on data older than, for example, two financial years, you can configure the model to ignore data outside that window entirely. &lt;br /&gt;
&lt;br /&gt;
[[Default Date Range|How to set a default date range]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4. Enable Polling for Changes ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Polling&#039;&#039;&#039; allows OdataLink to detect and pull only the records that have been added or changed in your [[Data Files|data file]], rather than re-downloading the whole dataset on every refresh.&lt;br /&gt;
&lt;br /&gt;
Polling is particularly effective for high-volume transactional entities like Invoices, Bills, and Bank Transactions.&lt;br /&gt;
&lt;br /&gt;
[[Configure OdataLink to poll for changes|How to configure polling]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Monitoring =&lt;br /&gt;
&lt;br /&gt;
Check your Monthly Usage in your OdataLink Portal &#039;&#039;&#039;Account/Subscription settings → Usage Stats&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Healthy pattern:&#039;&#039;&#039;&lt;br /&gt;
* Consistent month-to-month (no large spikes)&lt;br /&gt;
* 20-30% under your monthly allowance&lt;br /&gt;
* No overuse warnings&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Excessive Usage pattern:&#039;&#039;&#039;&lt;br /&gt;
* Usage increasing or consistently above 100% month-over-month&lt;br /&gt;
* Multiple Usage alerts from OdataLink&lt;br /&gt;
* Exceeding allowance for more than 1 month&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checklist ==&lt;br /&gt;
&lt;br /&gt;
* [ ] Refresh frequency matches how often the report is actually viewed&lt;br /&gt;
* [ ] Weekend and off-hours refreshes disabled if not needed&lt;br /&gt;
* [ ] Archive Type set to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; for the [[Models|model]]&lt;br /&gt;
* [ ] Cut-off Date or rolling window configured&lt;br /&gt;
* [ ] Default Date Range configured to match your reporting window&lt;br /&gt;
* [ ] Polling enabled&lt;br /&gt;
* [ ] Monthly usage reviewed in OdataLink Admin Portal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and query transformations, and recommend further optimisations &amp;lt;!--in attempts to reduce your account usage --&amp;gt; in order to bring your account usage within limits.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
: [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;br /&gt;
: [[How to Reduce my OdataLink Usage - For Advanced Users]]&lt;br /&gt;
: [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
&amp;lt;!--: [[Reducing Data Usage and Optimising your OdataLink Feeds]]--&amp;gt;&lt;br /&gt;
: [https://odatalink.com/fair-use-policy Fair Use Policy]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=File:OdataLink_Data_File_Usage.png&amp;diff=4629</id>
		<title>File:OdataLink Data File Usage.png</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=File:OdataLink_Data_File_Usage.png&amp;diff=4629"/>
		<updated>2026-05-28T06:15:33Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=File:OdataLink_Model_Usage.png&amp;diff=4628</id>
		<title>File:OdataLink Model Usage.png</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=File:OdataLink_Model_Usage.png&amp;diff=4628"/>
		<updated>2026-05-28T06:14:16Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=File:OdataLink_Account_Usage.png&amp;diff=4627</id>
		<title>File:OdataLink Account Usage.png</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=File:OdataLink_Account_Usage.png&amp;diff=4627"/>
		<updated>2026-05-28T06:12:31Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=Reducing_Data_Usage_and_Optimising_your_OdataLink_Feeds&amp;diff=4626</id>
		<title>Reducing Data Usage and Optimising your OdataLink Feeds</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=Reducing_Data_Usage_and_Optimising_your_OdataLink_Feeds&amp;diff=4626"/>
		<updated>2026-05-28T05:59:09Z</updated>

		<summary type="html">&lt;p&gt;Ash: Added onlyinclude for tranclusion into other wiki pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview = &lt;br /&gt;
To keep OdataLink subscriptions affordable and predictable for everyone, we&#039;ve introduced a [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. This policy sets a monthly download limit for data retrieved from your connected [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
The guidance below applies to all models connecting to Xero, Xero Practice Manager, MYOB and QuickBooks. Following these steps will:&lt;br /&gt;
&lt;br /&gt;
* Reduce your monthly download volume; and&lt;br /&gt;
* Improve refresh performance&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal → Usage Stats&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What is Usage ==&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Usage&#039;&#039;&#039; is defined as the volume of data OdataLink retrieves from your connected [[Data Files|data files]] each month. &lt;br /&gt;
&lt;br /&gt;
This includes data retrieved by [[Microsoft Power BI|Power BI]], [[Microsoft Excel|Excel]], or [[OData Client Compatibility|other]] data pipeline and reporting tools, either via automatic scheduled refreshes or manual report refresh.&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
= Pick your Optimisation Layer =&lt;br /&gt;
Optimisation techniques are grouped by the tooling you use. Pick the page that matches your role — or read all three if your organisation spans several layers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Page !! Audience !! What it covers&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Everyday Users]] || Accountants, bookkeepers, business users || Refresh frequency, [[Models|model]] settings (Cut-off Date, Default Date Range, Polling), monitoring&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Advanced Users]] || Power BI, Fabric, and Excel report developers (Power Query / M) || Query folding, OData &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; operators, &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; projection, incremental refresh&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Power Users]] || Data engineering teams (SSIS, ADF, Fabric Data Pipelines, Fabric Dataflow Legacy/Gen2) || Stage-once-serve-many, watermarked incremental loads, historical backfill strategy, scheduling discipline, end-to-end cost monitoring&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; Start with the [[How to Reduce my OdataLink Usage - For Everyday Users|Everyday Users]] page regardless of your role. The model-level settings described there apply to &#039;&#039;&#039;every&#039;&#039;&#039; refresh — automatic or manual, report or pipeline — and deliver the largest reduction with the least effort.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== For everyone (accountants, bookkeepers, business users) ==&lt;br /&gt;
&lt;br /&gt;
Please refer to the following support note detailing optimisation techniques that can be applied directly in your OdataLink Admin Portal or in your reporting architecture.&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== For Power BI, Fabric, and Excel developers ==&lt;br /&gt;
&lt;br /&gt;
For optimisations applied inside Power Query — query folding, &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt;, incremental refresh — see:&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Advanced Users]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== For SQL, SSIS, and Fabric Pipeline Developers ==&lt;br /&gt;
&lt;br /&gt;
For optimisations applied at the pipeline / data warehouse layer — stage-once-serve-many, watermarked incremental loads, Fabric Dataflow Gen2 staging, scheduling discipline — see:&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Data Engineers]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Quick checklist ==&lt;br /&gt;
A cross-cutting checklist drawn from all three pages. Detailed steps and tool-specific guidance are in the linked pages above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Everyone:&#039;&#039;&#039;&lt;br /&gt;
* [ ] Refresh schedule matches how often the report is actually used&lt;br /&gt;
* [ ] Weekend / out-of-hours refreshes disabled where not needed&lt;br /&gt;
* [ ] Archive Type set to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; on the [[Models|model]]&lt;br /&gt;
* [ ] Cut-off Date or rolling window configured&lt;br /&gt;
* [ ] Default Date Range configured to match your reporting window&lt;br /&gt;
* [ ] Polling enabled&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Users:&#039;&#039;&#039;&lt;br /&gt;
* [ ] Date filters applied at the OData navigation step (not post-download)&lt;br /&gt;
* [ ] Query folding verified via &#039;&#039;&#039;View Native Query&#039;&#039;&#039;&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used to limit columns retrieved&lt;br /&gt;
* [ ] Incremental refresh enabled for time-series datasets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Azure/Fabric/Data Pipeline developers:&#039;&#039;&#039;&lt;br /&gt;
* [ ] OdataLink data staged once into SQL / Lakehouse / Warehouse / Dataflow Gen2; downstream consumers read from the staging layer&lt;br /&gt;
* [ ] All recurring loads use &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; with a high-watermark column&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used on every entity, including the watermark column&lt;br /&gt;
* [ ] Full-table backfills are one-time, not recurring&lt;br /&gt;
* [ ] Pipeline schedules staggered and aligned with the business cycle&lt;br /&gt;
* [ ] Reference and transactional data refreshed on separate cadences&lt;br /&gt;
* [ ] Both OdataLink egress and Azure / Fabric compute cost monitored&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and pipeline design, and recommend further optimisations to bring your account usage within limits.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
&lt;br /&gt;
* [https://odatalink.com/fair-use-policy OdataLink Fair Use Policy]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
&amp;lt;!-- * [https://developer.xero.com/pricing Xero Developer Pricing]&lt;br /&gt;
* [https://developer.xero.com/faq/pricing-and-policy-updates Xero Pricing and Policy Updates FAQ]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=Reducing_Data_Usage_and_Optimising_your_OdataLink_Feeds&amp;diff=4625</id>
		<title>Reducing Data Usage and Optimising your OdataLink Feeds</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=Reducing_Data_Usage_and_Optimising_your_OdataLink_Feeds&amp;diff=4625"/>
		<updated>2026-05-28T05:58:14Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview = &lt;br /&gt;
To keep OdataLink subscriptions affordable and predictable for everyone, we&#039;ve introduced a [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. This policy sets a monthly download limit for data retrieved from your connected [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
The guidance below applies to all models connecting to Xero, Xero Practice Manager, MYOB and QuickBooks. Following these steps will:&lt;br /&gt;
&lt;br /&gt;
* Reduce your monthly download volume; and&lt;br /&gt;
* Improve refresh performance&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal → Usage Stats&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
== What is Usage ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Usage&#039;&#039;&#039; is defined as the volume of data OdataLink retrieves from your connected [[Data Files|data files]] each month. &lt;br /&gt;
&lt;br /&gt;
This includes data retrieved by [[Microsoft Power BI|Power BI]], [[Microsoft Excel|Excel]], or [[OData Client Compatibility|other]] data pipeline and reporting tools, either via automatic scheduled refreshes or manual report refresh.&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
= Pick your Optimisation Layer =&lt;br /&gt;
Optimisation techniques are grouped by the tooling you use. Pick the page that matches your role — or read all three if your organisation spans several layers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Page !! Audience !! What it covers&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Everyday Users]] || Accountants, bookkeepers, business users || Refresh frequency, [[Models|model]] settings (Cut-off Date, Default Date Range, Polling), monitoring&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Advanced Users]] || Power BI, Fabric, and Excel report developers (Power Query / M) || Query folding, OData &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; operators, &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; projection, incremental refresh&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Power Users]] || Data engineering teams (SSIS, ADF, Fabric Data Pipelines, Fabric Dataflow Legacy/Gen2) || Stage-once-serve-many, watermarked incremental loads, historical backfill strategy, scheduling discipline, end-to-end cost monitoring&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; Start with the [[How to Reduce my OdataLink Usage - For Everyday Users|Everyday Users]] page regardless of your role. The model-level settings described there apply to &#039;&#039;&#039;every&#039;&#039;&#039; refresh — automatic or manual, report or pipeline — and deliver the largest reduction with the least effort.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== For everyone (accountants, bookkeepers, business users) ==&lt;br /&gt;
&lt;br /&gt;
Please refer to the following support note detailing optimisation techniques that can be applied directly in your OdataLink Admin Portal or in your reporting architecture.&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== For Power BI, Fabric, and Excel developers ==&lt;br /&gt;
&lt;br /&gt;
For optimisations applied inside Power Query — query folding, &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt;, incremental refresh — see:&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Advanced Users]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== For SQL, SSIS, and Fabric Pipeline Developers ==&lt;br /&gt;
&lt;br /&gt;
For optimisations applied at the pipeline / data warehouse layer — stage-once-serve-many, watermarked incremental loads, Fabric Dataflow Gen2 staging, scheduling discipline — see:&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Data Engineers]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Quick checklist ==&lt;br /&gt;
A cross-cutting checklist drawn from all three pages. Detailed steps and tool-specific guidance are in the linked pages above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Everyone:&#039;&#039;&#039;&lt;br /&gt;
* [ ] Refresh schedule matches how often the report is actually used&lt;br /&gt;
* [ ] Weekend / out-of-hours refreshes disabled where not needed&lt;br /&gt;
* [ ] Archive Type set to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; on the [[Models|model]]&lt;br /&gt;
* [ ] Cut-off Date or rolling window configured&lt;br /&gt;
* [ ] Default Date Range configured to match your reporting window&lt;br /&gt;
* [ ] Polling enabled&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Users:&#039;&#039;&#039;&lt;br /&gt;
* [ ] Date filters applied at the OData navigation step (not post-download)&lt;br /&gt;
* [ ] Query folding verified via &#039;&#039;&#039;View Native Query&#039;&#039;&#039;&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used to limit columns retrieved&lt;br /&gt;
* [ ] Incremental refresh enabled for time-series datasets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Azure/Fabric/Data Pipeline developers:&#039;&#039;&#039;&lt;br /&gt;
* [ ] OdataLink data staged once into SQL / Lakehouse / Warehouse / Dataflow Gen2; downstream consumers read from the staging layer&lt;br /&gt;
* [ ] All recurring loads use &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; with a high-watermark column&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used on every entity, including the watermark column&lt;br /&gt;
* [ ] Full-table backfills are one-time, not recurring&lt;br /&gt;
* [ ] Pipeline schedules staggered and aligned with the business cycle&lt;br /&gt;
* [ ] Reference and transactional data refreshed on separate cadences&lt;br /&gt;
* [ ] Both OdataLink egress and Azure / Fabric compute cost monitored&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and pipeline design, and recommend further optimisations to bring your account usage within limits.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
&lt;br /&gt;
* [https://odatalink.com/fair-use-policy OdataLink Fair Use Policy]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
&amp;lt;!-- * [https://developer.xero.com/pricing Xero Developer Pricing]&lt;br /&gt;
* [https://developer.xero.com/faq/pricing-and-policy-updates Xero Pricing and Policy Updates FAQ]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=Reducing_Data_Usage_and_Optimising_your_OdataLink_Feeds&amp;diff=4624</id>
		<title>Reducing Data Usage and Optimising your OdataLink Feeds</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=Reducing_Data_Usage_and_Optimising_your_OdataLink_Feeds&amp;diff=4624"/>
		<updated>2026-05-28T05:53:28Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview = &lt;br /&gt;
To keep OdataLink subscriptions affordable and predictable for everyone, we&#039;ve introduced a [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. This policy sets a monthly download limit for data retrieved from your connected [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
The guidance below applies to all models connecting to Xero, Xero Practice Manager, MYOB and QuickBooks. Following these steps will:&lt;br /&gt;
&lt;br /&gt;
* Reduce your monthly download volume; and&lt;br /&gt;
* Improve refresh performance&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal → Usage Stats&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What is Usage ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Usage&#039;&#039;&#039; is defined as the volume of data OdataLink retrieves from your connected [[Data Files|data files]] each month. &lt;br /&gt;
&lt;br /&gt;
This includes data retrieved by [[Microsoft Power BI|Power BI]], [[Microsoft Excel|Excel]], or [[OData Client Compatibility|other]] data pipeline and reporting tools, either via automatic scheduled refreshes or manual report refresh.&lt;br /&gt;
&lt;br /&gt;
= Pick your Optimisation Layer =&lt;br /&gt;
Optimisation techniques are grouped by the tooling you use. Pick the page that matches your role — or read all three if your organisation spans several layers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Page !! Audience !! What it covers&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Everyday Users]] || Accountants, bookkeepers, business users || Refresh frequency, [[Models|model]] settings (Cut-off Date, Default Date Range, Polling), monitoring&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Advanced Users]] || Power BI, Fabric, and Excel report developers (Power Query / M) || Query folding, OData &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; operators, &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; projection, incremental refresh&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Power Users]] || Data engineering teams (SSIS, ADF, Fabric Data Pipelines, Fabric Dataflow Legacy/Gen2) || Stage-once-serve-many, watermarked incremental loads, historical backfill strategy, scheduling discipline, end-to-end cost monitoring&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; Start with the [[How to Reduce my OdataLink Usage - For Everyday Users|Everyday Users]] page regardless of your role. The model-level settings described there apply to &#039;&#039;&#039;every&#039;&#039;&#039; refresh — automatic or manual, report or pipeline — and deliver the largest reduction with the least effort.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== For everyone (accountants, bookkeepers, business users) ==&lt;br /&gt;
&lt;br /&gt;
Please refer to the following support note detailing optimisation techniques that can be applied directly in your OdataLink Admin Portal or in your reporting architecture.&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== For Power BI, Fabric, and Excel developers ==&lt;br /&gt;
&lt;br /&gt;
For optimisations applied inside Power Query — query folding, &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt;, incremental refresh — see:&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Advanced Users]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== For SQL, SSIS, and Fabric Pipeline Developers ==&lt;br /&gt;
&lt;br /&gt;
For optimisations applied at the pipeline / data warehouse layer — stage-once-serve-many, watermarked incremental loads, Fabric Dataflow Gen2 staging, scheduling discipline — see:&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Data Engineers]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Quick checklist ==&lt;br /&gt;
A cross-cutting checklist drawn from all three pages. Detailed steps and tool-specific guidance are in the linked pages above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Everyone:&#039;&#039;&#039;&lt;br /&gt;
* [ ] Refresh schedule matches how often the report is actually used&lt;br /&gt;
* [ ] Weekend / out-of-hours refreshes disabled where not needed&lt;br /&gt;
* [ ] Archive Type set to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; on the [[Models|model]]&lt;br /&gt;
* [ ] Cut-off Date or rolling window configured&lt;br /&gt;
* [ ] Default Date Range configured to match your reporting window&lt;br /&gt;
* [ ] Polling enabled&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Users:&#039;&#039;&#039;&lt;br /&gt;
* [ ] Date filters applied at the OData navigation step (not post-download)&lt;br /&gt;
* [ ] Query folding verified via &#039;&#039;&#039;View Native Query&#039;&#039;&#039;&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used to limit columns retrieved&lt;br /&gt;
* [ ] Incremental refresh enabled for time-series datasets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Azure/Fabric/Data Pipeline developers:&#039;&#039;&#039;&lt;br /&gt;
* [ ] OdataLink data staged once into SQL / Lakehouse / Warehouse / Dataflow Gen2; downstream consumers read from the staging layer&lt;br /&gt;
* [ ] All recurring loads use &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; with a high-watermark column&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used on every entity, including the watermark column&lt;br /&gt;
* [ ] Full-table backfills are one-time, not recurring&lt;br /&gt;
* [ ] Pipeline schedules staggered and aligned with the business cycle&lt;br /&gt;
* [ ] Reference and transactional data refreshed on separate cadences&lt;br /&gt;
* [ ] Both OdataLink egress and Azure / Fabric compute cost monitored&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and pipeline design, and recommend further optimisations to bring your account usage within limits.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
&lt;br /&gt;
* [https://odatalink.com/fair-use-policy OdataLink Fair Use Policy]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
&amp;lt;!-- * [https://developer.xero.com/pricing Xero Developer Pricing]&lt;br /&gt;
* [https://developer.xero.com/faq/pricing-and-policy-updates Xero Pricing and Policy Updates FAQ]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=Reducing_Data_Usage_and_Optimising_your_OdataLink_Feeds&amp;diff=4623</id>
		<title>Reducing Data Usage and Optimising your OdataLink Feeds</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=Reducing_Data_Usage_and_Optimising_your_OdataLink_Feeds&amp;diff=4623"/>
		<updated>2026-05-28T05:49:29Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview = &lt;br /&gt;
To keep OdataLink subscriptions affordable and predictable for everyone, we&#039;ve introduced a [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. This policy sets a monthly download limit for data retrieved from your connected [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
The guidance below applies to all models connecting to Xero, Xero Practice Manager, MYOB and QuickBooks. Following these steps will:&lt;br /&gt;
&lt;br /&gt;
* Reduce your monthly download volume; and&lt;br /&gt;
* Improve refresh performance&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal → Usage Stats&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What is Usage ==&lt;br /&gt;
&amp;lt;section begin=usage /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Usage&#039;&#039;&#039; is defined as the volume of data OdataLink retrieves from your connected [[Data Files|data files]] each month. &lt;br /&gt;
&lt;br /&gt;
This includes data retrieved by [[Microsoft Power BI|Power BI]], [[Microsoft Excel|Excel]], or [[OData Client Compatibility|other]] data pipeline and reporting tools, either via automatic scheduled refreshes or manual report refresh.&lt;br /&gt;
&amp;lt;section end=usage /&amp;gt;&lt;br /&gt;
= Pick your Optimisation Layer =&lt;br /&gt;
Optimisation techniques are grouped by the tooling you use. Pick the page that matches your role — or read all three if your organisation spans several layers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Page !! Audience !! What it covers&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Everyday Users]] || Accountants, bookkeepers, business users || Refresh frequency, [[Models|model]] settings (Cut-off Date, Default Date Range, Polling), monitoring&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Advanced Users]] || Power BI, Fabric, and Excel report developers (Power Query / M) || Query folding, OData &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; operators, &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; projection, incremental refresh&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Power Users]] || Data engineering teams (SSIS, ADF, Fabric Data Pipelines, Fabric Dataflow Legacy/Gen2) || Stage-once-serve-many, watermarked incremental loads, historical backfill strategy, scheduling discipline, end-to-end cost monitoring&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; Start with the [[How to Reduce my OdataLink Usage - For Everyday Users|Everyday Users]] page regardless of your role. The model-level settings described there apply to &#039;&#039;&#039;every&#039;&#039;&#039; refresh — automatic or manual, report or pipeline — and deliver the largest reduction with the least effort.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== For everyone (accountants, bookkeepers, business users) ==&lt;br /&gt;
&lt;br /&gt;
Please refer to the following support note detailing optimisation techniques that can be applied directly in your OdataLink Admin Portal or in your reporting architecture.&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== For Power BI, Fabric, and Excel developers ==&lt;br /&gt;
&lt;br /&gt;
For optimisations applied inside Power Query — query folding, &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt;, incremental refresh — see:&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Advanced Users]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== For SQL, SSIS, and Fabric Pipeline Developers ==&lt;br /&gt;
&lt;br /&gt;
For optimisations applied at the pipeline / data warehouse layer — stage-once-serve-many, watermarked incremental loads, Fabric Dataflow Gen2 staging, scheduling discipline — see:&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Data Engineers]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Quick checklist ==&lt;br /&gt;
A cross-cutting checklist drawn from all three pages. Detailed steps and tool-specific guidance are in the linked pages above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Everyone:&#039;&#039;&#039;&lt;br /&gt;
* [ ] Refresh schedule matches how often the report is actually used&lt;br /&gt;
* [ ] Weekend / out-of-hours refreshes disabled where not needed&lt;br /&gt;
* [ ] Archive Type set to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; on the [[Models|model]]&lt;br /&gt;
* [ ] Cut-off Date or rolling window configured&lt;br /&gt;
* [ ] Default Date Range configured to match your reporting window&lt;br /&gt;
* [ ] Polling enabled&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Users:&#039;&#039;&#039;&lt;br /&gt;
* [ ] Date filters applied at the OData navigation step (not post-download)&lt;br /&gt;
* [ ] Query folding verified via &#039;&#039;&#039;View Native Query&#039;&#039;&#039;&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used to limit columns retrieved&lt;br /&gt;
* [ ] Incremental refresh enabled for time-series datasets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Azure/Fabric/Data Pipeline developers:&#039;&#039;&#039;&lt;br /&gt;
* [ ] OdataLink data staged once into SQL / Lakehouse / Warehouse / Dataflow Gen2; downstream consumers read from the staging layer&lt;br /&gt;
* [ ] All recurring loads use &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; with a high-watermark column&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used on every entity, including the watermark column&lt;br /&gt;
* [ ] Full-table backfills are one-time, not recurring&lt;br /&gt;
* [ ] Pipeline schedules staggered and aligned with the business cycle&lt;br /&gt;
* [ ] Reference and transactional data refreshed on separate cadences&lt;br /&gt;
* [ ] Both OdataLink egress and Azure / Fabric compute cost monitored&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and pipeline design, and recommend further optimisations to bring your account usage within limits.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
&lt;br /&gt;
* [https://odatalink.com/fair-use-policy OdataLink Fair Use Policy]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
&amp;lt;!-- * [https://developer.xero.com/pricing Xero Developer Pricing]&lt;br /&gt;
* [https://developer.xero.com/faq/pricing-and-policy-updates Xero Pricing and Policy Updates FAQ]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Advanced_Users&amp;diff=4622</id>
		<title>How to Reduce my OdataLink Usage - For Advanced Users</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Advanced_Users&amp;diff=4622"/>
		<updated>2026-05-28T05:29:14Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Your OdataLink subscription includes a monthly data download allowance under our [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. If your reports or dashboards use Power Query transformations to clean and shape the dataset, the following optimisations techniques will reduce egress and improve refresh performance.&lt;br /&gt;
&lt;br /&gt;
This help page is intended towards report developers working with &#039;&#039;&#039;M Language/Power Query&#039;&#039;&#039;. For developers using Fabric Data Pipelines, Azure Data Factory, SSIS, or persistent staging into Lakehouse/Warehouse/DataLake, &lt;br /&gt;
&amp;lt;br /&amp;gt;see [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039;. &lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Query-Level Filtering =&lt;br /&gt;
This sections explains how applying a filter early in the transformation steps helps reduce egress. Query level filtering makes use of OdataLink feature that can pass the filters up directly to the data source. This results in OdataLink only downloading the filtered data out of your [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
== 1. Push date filters up to the OData feed level (query folding) ==&lt;br /&gt;
Filtering data &#039;&#039;&#039;after&#039;&#039;&#039; it has been downloaded does not reduce egress since the records have already been pulled out from the company file.&lt;br /&gt;
&lt;br /&gt;
Filtering must happen at the &#039;&#039;&#039;Navigation step&#039;&#039;&#039; in Power Query so the filter is sent to OdataLink as part of the OData query (&amp;lt;code&amp;gt;$filter=...&amp;lt;/code&amp;gt;) and only the matching/filtered rows are returned.&lt;br /&gt;
&lt;br /&gt;
# Apply date filters as early as possible, directly on the source table, before any merges, joins, or column expansions.&lt;br /&gt;
# Avoid applying &amp;lt;code&amp;gt;Table.SelectRows&amp;lt;/code&amp;gt; over a downloaded table when an equivalent filter can be applied at the navigation step.&lt;br /&gt;
&amp;lt;!--# Verify folding: right-click a step in Power Query → &#039;&#039;&#039;View Native Query&#039;&#039;&#039;. If the option is greyed out, the filter is being applied client-side and egress is not reduced.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Model Date Filters and Report Date Filters| &#039;&#039;&#039;Reference -&#039;&#039;&#039; Model Date Filters vs Report Date Filters]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. Apply supported OData filter operators ==&lt;br /&gt;
&lt;br /&gt;
The following operators fold to the OData feed and execute server-side before any data leaves your data file:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Operator !! Operation !! Example&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;eq&amp;lt;/code&amp;gt; || equal || &amp;lt;code&amp;gt;Status eq &#039;ACTIVE&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ne&amp;lt;/code&amp;gt; || not equal || &amp;lt;code&amp;gt;Status ne &#039;ARCHIVED&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lt&amp;lt;/code&amp;gt; || greater / less than || &amp;lt;code&amp;gt;Date gt &#039;2026-01-01&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ge&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;le&amp;lt;/code&amp;gt; || greater / less than or equal || &amp;lt;code&amp;gt;Amount ge 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; || logical AND || &amp;lt;code&amp;gt;Status eq &#039;ACTIVE&#039; and Type eq &#039;BANK&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; || logical OR || &amp;lt;code&amp;gt;Type eq &#039;BANK&#039; or Type eq &#039;CREDIT_CARD&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;startswith()&amp;lt;/code&amp;gt; || prefix match || &amp;lt;code&amp;gt;startswith(Empname, &#039;Ia&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;contains()&amp;lt;/code&amp;gt; || substring match || &amp;lt;code&amp;gt;contains(GLCode, &#039;5-01&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; &amp;lt;code&amp;gt;startswith()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;contains()&amp;lt;/code&amp;gt; are reliable on date string columns but may fail on free-text fields (Code, Name, Description). Use comparison operators on those columns instead.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Filter examples by use case ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date range&#039;&#039;&#039; — highest single-impact reduction:&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Date ge &#039;2026-01-01&#039; and Date le &#039;2026-12-31&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Active records only:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Status eq &#039;ACTIVE&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exclude archived:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Status ne &#039;ARCHIVED&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Limit columns retrieved with &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
OData supports projection via &amp;lt;code&amp;gt;$select=Col1,Col2,...&amp;lt;/code&amp;gt;. By default, every column on the entity is returned, including wide free-text fields that may never appear in your report. Restricting projection reduces row size and network transfer.&lt;br /&gt;
&lt;br /&gt;
In Power Query, expand only the columns you need before any other step, and confirm the resulting native query includes a &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; clause.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code&amp;gt;$select=InvoiceID,InvoiceNumber,Date,Total,Status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== 5. Combining Filters ==&lt;br /&gt;
&lt;br /&gt;
Stacked techniques decrease the Usage rapidly. Example combined filter + projection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Date ge &#039;2026-06-01&#039; and Status eq &#039;ACTIVE&#039;&amp;amp;$select=InvoiceID,InvoiceNumber,Date,Total,Status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typically reduces egress by &#039;&#039;&#039;~80%&#039;&#039;&#039; vs. an unfiltered, all-columns extraction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Incremental Refreshing =&lt;br /&gt;
&lt;br /&gt;
== 6. Use Incremental Refresh for time-series data ==&lt;br /&gt;
&lt;br /&gt;
For datasets keyed on a date, datetime, or datetimezone column, configure &#039;&#039;&#039;Incremental Refresh&#039;&#039;&#039; so that only new or changed partitions are pulled on each refresh.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Power BI Premium / Fabric:&#039;&#039;&#039; native incremental refresh on semantic models.&lt;br /&gt;
* &#039;&#039;&#039;Power BI Pro:&#039;&#039;&#039; supported, but requires care to ensure the date filter folds. Test with &#039;&#039;&#039;View Native Query&#039;&#039;&#039; before publishing.&lt;br /&gt;
* &#039;&#039;&#039;Excel:&#039;&#039;&#039; use a date-threshold named range and filter the query URL on it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; If your organisation runs Microsoft Fabric, ask your data team about staging OdataLink feeds into a &#039;&#039;&#039;Dataflow Gen2&#039;&#039;&#039; (built on Power Query). Multiple reports can then consume the staged data without each one querying OdataLink directly. See [[How to Reduce my OdataLink Usage - For Power Users]].&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
Verify your optimisations in your Models Settings  &#039;&#039;&#039;Manage Models → View → Usage tab&#039;&#039;&#039; for monitoring a specific model. Compare:&lt;br /&gt;
* Unfiltered request volume (GB) - your baseline before optimising&lt;br /&gt;
* Filtered request volume (GB) - after applying optimisation&lt;br /&gt;
* &#039;&#039;&#039;Reduction %&#039;&#039;&#039; = (Unfiltered Volume − Filtered Volume) ÷ Unfiltered Data Volume × 100&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Target:&#039;&#039;&#039; 50–70% combined reduction from filtering + incremental refresh + column projection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power Query checklist ==&lt;br /&gt;
&lt;br /&gt;
* [ ] Date filters applied at the OData navigation step&lt;br /&gt;
* [ ] Verify Query folding&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used to limit columns retrieved&lt;br /&gt;
* [ ] Incremental refresh enabled for time-series datasets&lt;br /&gt;
* [ ] Refresh schedule matches actual report usage&lt;br /&gt;
* [ ] Considered Fabric Dataflow Gen2 if multiple reports share the same data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and query transformations, and recommend further optimisations in attempts to reduce your account usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
&lt;br /&gt;
* [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
* [[Models]]&lt;br /&gt;
* [[Data Files]]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [[Model Date Filters and Report Date Filters]]&lt;br /&gt;
* [https://odatalink.com/fair-use-policy OdataLink Fair Use Policy]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Everyday_Users&amp;diff=4621</id>
		<title>How to Reduce my OdataLink Usage - For Everyday Users</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Everyday_Users&amp;diff=4621"/>
		<updated>2026-05-28T05:26:55Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Overview =&lt;br /&gt;
Your OdataLink subscription includes a monthly data download allowance under our [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. If your account&#039;s connected [[Data Files|data file(s)]] are frequently approaching or exceeding monthly limits, the following techniques will help reduce usage with minimal impact to your reporting functionality.&lt;br /&gt;
&lt;br /&gt;
The following optimisations can be applied directly in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039; or in your reporting software. &lt;br /&gt;
&amp;lt;!--Based on whether&lt;br /&gt;
# Your reporting solution uses (or will use) &#039;&#039;&#039;automatic refresh&#039;&#039;&#039;&lt;br /&gt;
# Your reporting solution uses (or will use) &#039;&#039;&#039;manual or on-demand refresh&#039;&#039;&#039;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039;. &lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Automatic Data Refresh / Data Fetch ==&lt;br /&gt;
&lt;br /&gt;
=== Optimise Usage by reducing automatic refresh frequency ===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
= Refresh Schedule =&lt;br /&gt;
&lt;br /&gt;
=== 1. Reduce Automatic Refresh frequency ===&lt;br /&gt;
Most reports do not need to refresh every hour, every day, or on weekends. Each scheduled refresh re-pulls data and counts toward your allowance.&lt;br /&gt;
&lt;br /&gt;
* Match the refresh frequency to how often you actually look at the report.&lt;br /&gt;
* Disable refreshes outside business hours and on weekends if the report is not viewed then.&lt;br /&gt;
* For monthly reports, a daily or weekly refresh is usually sufficient.&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; Refreshing a sales dashboard hourly when the team only checks it on Monday mornings can use 24× more data than needed. Drop to daily, or weekly, and you may reduce that report&#039;s usage by 95%+.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Manual / On-demand Refresh ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2. Refresh manually only when you need updated Data ===&lt;br /&gt;
&lt;br /&gt;
If you can, use on-demand refresh:&lt;br /&gt;
*Refresh only when you actually need the latest figures.&lt;br /&gt;
*Batch multiple reports into a single refresh window where possible.&lt;br /&gt;
* Avoid &amp;quot;refresh-just-in-case&amp;quot; before meetings — schedule a single refresh ahead of time instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
= Model Settings =&lt;br /&gt;
The settings below are configured once per [[Models|model]] in your &#039;&#039;&#039;OdataLink Portal&#039;&#039;&#039; and applies to &#039;&#039;&#039;every refresh&#039;&#039;&#039; request.&lt;br /&gt;
&lt;br /&gt;
=== 2. Apply a Cut-off Date on your model ===&lt;br /&gt;
&lt;br /&gt;
OdataLink provides the ability to archive historical data to avoid re-downloading of same data on every refresh. The &#039;&#039;&#039;Cut-Off Date&#039;&#039;&#039; instructs OdataLink to save data up to the cut-off date and serve future refreshes from that archive.&lt;br /&gt;
&lt;br /&gt;
Setting a cut-off date in your model dramatically reduces the volume retrieved on every refresh by avoiding downloading the same historical data multiple times.&lt;br /&gt;
&lt;br /&gt;
To set a cut off date and enable archiving in your model:&lt;br /&gt;
# &#039;&#039;&#039;Archive Type:&#039;&#039;&#039;  Set the [[Archive Types|Archive Type]] of your model to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; to enable archiving.&lt;br /&gt;
# &#039;&#039;&#039;Archive Cut-Off Date:&#039;&#039;&#039; Set either a fixed cut-off date, or a &#039;&#039;&#039;rolling window&#039;&#039;&#039; that continuously archives data older than X months or X days.&lt;br /&gt;
&amp;lt;!--#; OdataLink recommends setting a rolling window archiving so that the new data also gets archived after a certain number of days or months.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; OdataLink recommends a rolling window so new data is automatically archived as it ages. You only configure it once.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://odatalink.com/2025-03-increase-performance-of-your-odatalink-odata-feeds-using-the-cut-off-date-settings/ How to apply and use the Cut-off Date setting]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Set a Default Date Range on your model ===&lt;br /&gt;
&lt;br /&gt;
OdataLink provides the ability to define a default date range for a model. This allows users to control the amount of data that gets downloaded from the connected [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
If you never report on data older than, for example, two financial years, you can configure the model to ignore data outside that window entirely. &lt;br /&gt;
&lt;br /&gt;
[[Default Date Range|How to set a default date range]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4. Enable Polling for Changes ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Polling&#039;&#039;&#039; allows OdataLink to detect and pull only the records that have been added or changed in your [[Data Files|data file]], rather than re-downloading the whole dataset on every refresh.&lt;br /&gt;
&lt;br /&gt;
Polling is particularly effective for high-volume transactional entities like Invoices, Bills, and Bank Transactions.&lt;br /&gt;
&lt;br /&gt;
[[Configure OdataLink to poll for changes|How to configure polling]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Monitoring =&lt;br /&gt;
&lt;br /&gt;
Check your Monthly Usage in your OdataLink Portal &#039;&#039;&#039;Account/Subscription settings → Usage Stats&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Healthy pattern:&#039;&#039;&#039;&lt;br /&gt;
* Consistent month-to-month (no large spikes)&lt;br /&gt;
* 20-30% under your monthly allowance&lt;br /&gt;
* No overuse warnings&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Excessive Usage pattern:&#039;&#039;&#039;&lt;br /&gt;
* Usage increasing or consistently above 100% month-over-month&lt;br /&gt;
* Multiple Usage alerts from OdataLink&lt;br /&gt;
* Exceeding allowance for more than 1 month&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checklist ==&lt;br /&gt;
&lt;br /&gt;
* [ ] Refresh frequency matches how often the report is actually viewed&lt;br /&gt;
* [ ] Weekend and off-hours refreshes disabled if not needed&lt;br /&gt;
* [ ] Archive Type set to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; for the [[Models|model]]&lt;br /&gt;
* [ ] Cut-off Date or rolling window configured&lt;br /&gt;
* [ ] Default Date Range configured to match your reporting window&lt;br /&gt;
* [ ] Polling enabled&lt;br /&gt;
* [ ] Monthly usage reviewed in OdataLink Admin Portal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and query transformations, and recommend further optimisations &amp;lt;!--in attempts to reduce your account usage --&amp;gt; in order to bring your account usage within limits.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
: [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;br /&gt;
: [[How to Reduce my OdataLink Usage - For Advanced Users]]&lt;br /&gt;
: [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
: [[Reducing Data Usage and Optimising your OdataLink Feeds]]&lt;br /&gt;
: [https://odatalink.com/fair-use-policy Fair Use Policy]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Everyday_Users&amp;diff=4620</id>
		<title>How to Reduce my OdataLink Usage - For Everyday Users</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Everyday_Users&amp;diff=4620"/>
		<updated>2026-05-28T05:24:23Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Overview =&lt;br /&gt;
Your OdataLink subscription includes a monthly data download allowance under our [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. If your account&#039;s connected [[Data Files|data file(s)]] are frequently approaching or exceeding monthly limits, the following techniques will help reduce usage with minimal impact to your reporting functionality.&lt;br /&gt;
&lt;br /&gt;
The following optimisations can be applied directly in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039; or in your reporting software. &lt;br /&gt;
&amp;lt;!--Based on whether&lt;br /&gt;
# Your reporting solution uses (or will use) &#039;&#039;&#039;automatic refresh&#039;&#039;&#039;&lt;br /&gt;
# Your reporting solution uses (or will use) &#039;&#039;&#039;manual or on-demand refresh&#039;&#039;&#039;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039;. &lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Automatic Data Refresh / Data Fetch ==&lt;br /&gt;
&lt;br /&gt;
=== Optimise Usage by reducing automatic refresh frequency ===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
= Refresh Schedule =&lt;br /&gt;
&lt;br /&gt;
=== 1. Reduce Automatic Refresh frequency ===&lt;br /&gt;
Most reports do not need to refresh every hour, every day, or on weekends. Each scheduled refresh re-pulls data and counts toward your allowance.&lt;br /&gt;
&lt;br /&gt;
* Match the refresh frequency to how often you actually look at the report.&lt;br /&gt;
* Disable refreshes outside business hours and on weekends if the report is not viewed then.&lt;br /&gt;
* For monthly reports, a daily or weekly refresh is usually sufficient.&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; Refreshing a sales dashboard hourly when the team only checks it on Monday mornings can use 24× more data than needed. Drop to daily, or weekly, and you may reduce that report&#039;s usage by 95%+.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Manual / On-demand Refresh ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2. Refresh manually only when you need updated Data ===&lt;br /&gt;
&lt;br /&gt;
If you can, use on-demand refresh:&lt;br /&gt;
*Refresh only when you actually need the latest figures.&lt;br /&gt;
*Batch multiple reports into a single refresh window where possible.&lt;br /&gt;
* Avoid &amp;quot;refresh-just-in-case&amp;quot; before meetings — schedule a single refresh ahead of time instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
= Model Settings =&lt;br /&gt;
The settings below are configured once per [[Models|model]] in your &#039;&#039;&#039;OdataLink Portal&#039;&#039;&#039; and applies to &#039;&#039;&#039;every refresh&#039;&#039;&#039; request.&lt;br /&gt;
&lt;br /&gt;
=== 2. Apply a Cut-off Date on your model ===&lt;br /&gt;
&lt;br /&gt;
OdataLink provides the ability to archive historical data to avoid re-downloading of same data on every refresh. The &#039;&#039;&#039;Cut-Off Date&#039;&#039;&#039; instructs OdataLink to save data up to the cut-off date and serve future refreshes from that archive.&lt;br /&gt;
&lt;br /&gt;
Setting a cut-off date in your model dramatically reduces the volume retrieved on every refresh by avoiding downloading the same historical data multiple times.&lt;br /&gt;
&lt;br /&gt;
To set a cut off date and enable archiving in your model:&lt;br /&gt;
# &#039;&#039;&#039;Archive Type:&#039;&#039;&#039;  Set the [[Archive Types|Archive Type]] of your model to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; to enable archiving.&lt;br /&gt;
# &#039;&#039;&#039;Archive Cut-Off Date:&#039;&#039;&#039; Set either a fixed cut-off date, or a &#039;&#039;&#039;rolling window&#039;&#039;&#039; that continuously archives data older than X months or X days.&lt;br /&gt;
&amp;lt;!--#; OdataLink recommends setting a rolling window archiving so that the new data also gets archived after a certain number of days or months.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; OdataLink recommends a rolling window so new data is automatically archived as it ages. You only configure it once.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://odatalink.com/2025-03-increase-performance-of-your-odatalink-odata-feeds-using-the-cut-off-date-settings/ How to apply and use the Cut-off Date setting]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Set a Default Date Range on your model ===&lt;br /&gt;
&lt;br /&gt;
OdataLink provides the ability to define a default date range for a model. This allows users to control the amount of data that gets downloaded from the connected [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
If you never report on data older than, for example, two financial years, you can configure the model to ignore data outside that window entirely. &lt;br /&gt;
&lt;br /&gt;
[[Default Date Range|How to set a default date range]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4. Enable Polling for Changes ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Polling&#039;&#039;&#039; allows OdataLink to detect and pull only the records that have been added or changed in your [[Data Files|data file]], rather than re-downloading the whole dataset on every refresh.&lt;br /&gt;
&lt;br /&gt;
Polling is particularly effective for high-volume transactional entities like Invoices, Bills, and Bank Transactions.&lt;br /&gt;
&lt;br /&gt;
[[Configure OdataLink to poll for changes|How to configure polling]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Monitoring =&lt;br /&gt;
&lt;br /&gt;
Check your Monthly Usage in your OdataLink Portal&#039;&#039;&#039; Manage Models → View → Usage tab&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Healthy pattern:&#039;&#039;&#039;&lt;br /&gt;
* Consistent month-to-month (no large spikes)&lt;br /&gt;
* 20-30% under your monthly allowance&lt;br /&gt;
* No overuse warnings&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Excessive Usage pattern:&#039;&#039;&#039;&lt;br /&gt;
* Usage increasing or consistently above 100% month-over-month&lt;br /&gt;
* Multiple Usage alerts from OdataLink&lt;br /&gt;
* Exceeding allowance for more than 1 month&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checklist ==&lt;br /&gt;
&lt;br /&gt;
* [ ] Refresh frequency matches how often the report is actually viewed&lt;br /&gt;
* [ ] Weekend and off-hours refreshes disabled if not needed&lt;br /&gt;
* [ ] Archive Type set to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; for the [[Models|model]]&lt;br /&gt;
* [ ] Cut-off Date or rolling window configured&lt;br /&gt;
* [ ] Default Date Range configured to match your reporting window&lt;br /&gt;
* [ ] Polling enabled&lt;br /&gt;
* [ ] Monthly usage reviewed in OdataLink Admin Portal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and query transformations, and recommend further optimisations &amp;lt;!--in attempts to reduce your account usage --&amp;gt; in order to bring your account usage within limits.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
: [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;br /&gt;
: [[How to Reduce my OdataLink Usage - For Advanced Users]]&lt;br /&gt;
: [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
: [[Reducing Data Usage and Optimising your OdataLink Feeds]]&lt;br /&gt;
: [https://odatalink.com/fair-use-policy Fair Use Policy]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Power_Users&amp;diff=4619</id>
		<title>How to Reduce my OdataLink Usage - For Power Users</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Power_Users&amp;diff=4619"/>
		<updated>2026-05-28T05:20:54Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Your OdataLink subscription includes a monthly data download allowance under our [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. If your organisation have persists OdataLink data into SQL Server, Azure SQL, Fabric Lakehouse/Warehouse, or any other data platform via SSIS, Azure Data Factory (ADF), using Fabric Data Pipelines or Fabric DataFlows, the following techniques will help reduce egress and pipeline usage costs.&lt;br /&gt;
&lt;br /&gt;
This help page is intended towards Data Engineering and Fabric Developer teams running data pipelines and staging data into persistent storage. For report-level optimisations, see [[How to Reduce my OdataLink Usage - For Advanced Users]].&lt;br /&gt;
&lt;br /&gt;
For OdataLink model-level optimisations, see [[How to Reduce my OdataLink Usage - For Everyday Users]].&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039;. &lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
= Stage Once, Serve Many =&lt;br /&gt;
&lt;br /&gt;
== 1. Use a Single Staging Platform or Pipeline ==&lt;br /&gt;
The biggest source of high usage is the same OData entity being downloaded by multiple reports, models, and pipelines. Each retrieval contributes to increasing the total egress or data downloaded from connected [[Data Files|Data File(s)]]&lt;br /&gt;
&lt;br /&gt;
# Pull relevant OData endpoints into a &#039;&#039;&#039;staging layer&#039;&#039;&#039; (SQL Server, Azure SQL, Fabric Lakehouse, Fabric Warehouse, etc.) &#039;&#039;&#039;once per refresh cycle&#039;&#039;&#039;. Schedule the refresh or trigger it on demand via Power Automate.&lt;br /&gt;
# Update all your queries to point to the staging layer - Power BI Dashboards/Reports/semantic models, Excel reports, Fabric notebooks, Power Apps, and disconnected from OdataLink.&lt;br /&gt;
&lt;br /&gt;
This collapses N reports × M queries refreshes into a &#039;&#039;&#039;single retrieval per cycle&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; &#039;&#039;&#039;Fabric Dataflow Legacy/Gen2&#039;&#039;&#039; is a managed staging layer built on the Power Query (M) engine. It is well suited to teams who want centralised OdataLink ingestion without provisioning SQL Server. Multiple Power BI, Excel, Power Apps, and Power Automate consumers can then read from the Dataflow output, querying OdataLink only once per Gen2 refresh.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://learn.microsoft.com/en-us/fabric/data-factory/dataflow-gen2-incremental-refresh Fabric Dataflow Gen2 incremental refresh]&lt;br /&gt;
&lt;br /&gt;
= Incremental Loading =&lt;br /&gt;
&lt;br /&gt;
== 2. Replace truncate-and-reload with watermarked incremental loads ==&lt;br /&gt;
&lt;br /&gt;
Truncate-and-reload re-downloads everything on every run. Instead, use a &#039;&#039;&#039;high-watermark column&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;watermark&amp;quot; group=&amp;quot;watermark&amp;quot;&amp;gt;Cardoso, M. (2023). Robust data ingestion with High-watermarking. &#039;&#039;Microsoft Community Hub&#039;&#039;. [https://techcommunity.microsoft.com/blog/fasttrackforazureblog/robust-data-ingestion-with-high-watermarking/3707480 &amp;lt;u&amp;gt;techcommunity.microsoft.com/blog/fasttrackforazureblog/robust-data-ingestion-with-high-watermarking/3707480&amp;lt;/u&amp;gt;]&amp;lt;/ref&amp;gt; (typically &amp;lt;code&amp;gt;LastModifiedDateTime&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;UpdatedDateUTC&amp;lt;/code&amp;gt;) and pass it into the OData URL via &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; so OdataLink returns only changed rows.&lt;br /&gt;
&lt;br /&gt;
Pattern:&lt;br /&gt;
&amp;lt;code&amp;gt;GET .../Invoices?$filter=LastModifiedDateTime gt 2026-05-01T00:00:00Z&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Store the maximum &amp;lt;code&amp;gt;Watermark_Value&amp;lt;/code&amp;gt; from the last successful run in a &#039;&#039;&#039;control table&#039;&#039;&#039; (e.g. &amp;lt;code&amp;gt;dbo.PipelineWatermarks&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dbo.Company1Watermarks&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dbo.LastUpdatedWatermark&amp;lt;/code&amp;gt;).&lt;br /&gt;
# Read and inject that value as the lower bound into the OData URL at the start of the next run.&lt;br /&gt;
# &#039;&#039;&#039;Merge (UPSERT)&#039;&#039;&#039; the result into the target table on the natural key (UID). Apply append rules carefully, handling edge cases.&lt;br /&gt;
# Update the watermark &amp;lt;ref name=&amp;quot;watermark&amp;quot; group=&amp;quot;watermark&amp;quot; /&amp;gt; in the control table &#039;&#039;&#039;only after&#039;&#039;&#039; the merge has completed successfully. A failed run can safely re-pull the same window for the data on retry.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; This pattern works in &#039;&#039;&#039;SSIS&#039;&#039;&#039; (OData Source component with parameterised URL via Expression), &#039;&#039;&#039;Azure Data Factory / Fabric Data Pipelines&#039;&#039;&#039; (Copy Activity with dynamic OData query expression), &#039;&#039;&#039;Fabric Dataflow Gen2&#039;&#039;&#039; (M parameter), and any custom .NET / Python ETL.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[OData Feed URLs| OdataLink OData URL structure and query parameters]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Project only required columns with &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
By default, retrieving an entity returns every column, most of which are rarely useful in a warehouse. Restricting columns at the URL level reduces download size, egress, and staging table footprint.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code&amp;gt;GET .../Invoices?$select=InvoiceID,InvoiceNumber,Date,Total,Status,LastModifiedDateTime&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Always include your watermark &amp;lt;ref  name=&amp;quot;watermark&amp;quot; group=&amp;quot;watermark&amp;quot; /&amp;gt; column in &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt;, even if it is not loaded into the final warehouse table. Your query transformations need it for the next refresh.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Run historical backfills as a one-time non-recurring job ==&lt;br /&gt;
&lt;br /&gt;
The first load of a large entity is the most expensive download. Your Data workflow should handle it as a one-off setup task, and not on a schedule.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Run the backfill once&#039;&#039;&#039;: using a separate package or pipeline distinct from your incremental job.&lt;br /&gt;
# &#039;&#039;&#039;Follow &amp;lt;code&amp;gt;@odata.nextLink&amp;lt;/code&amp;gt;&#039;&#039;&#039;: to page through the data in chunks rather than trying to pull everything in a single request.&lt;br /&gt;
# &#039;&#039;&#039;Break very large entities into date-bounded windows&#039;&#039;&#039;: (year-by-year or quarter-by-quarter) using &amp;lt;code&amp;gt;$filter=Date ge &#039;YYYY-01-01&#039; and Date lt &#039;YYYY+1-01-01&#039;&amp;lt;/code&amp;gt;. A failed run only re-runs the failed window.&lt;br /&gt;
# &#039;&#039;&#039;Record completed windows&#039;&#039;&#039;: in a control table (e.g. &amp;lt;code&amp;gt;dbo.BackfillProgress&amp;lt;/code&amp;gt;). The backfill becomes safe to re-run, already-loaded windows can be skipped.&lt;br /&gt;
# &#039;&#039;&#039;Switch off the backfill once history is loaded&#039;&#039;&#039;: Recurring queries or jobs will then fetch new data using incremental loads only (Section 2).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Rule of thumb:&#039;&#039;&#039; If your scheduled pipeline is re-downloading data older than intended, check your query filters. Historical data should already be in your staging table.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Scheduling =&lt;br /&gt;
&lt;br /&gt;
== 5. Schedule pipelines deliberately ==&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Stagger pipeline schedules&#039;&#039;&#039;, so that multiple pipelines do not hit the same tenant simultaneously.&lt;br /&gt;
* &#039;&#039;&#039;Align frequency with the business cycle.&#039;&#039;&#039; Daily General Ledger snapshots rarely need sub-hourly retrieval.&lt;br /&gt;
* &#039;&#039;&#039;Use off-peak windows&#039;&#039;&#039;: schedule heavy historical refreshes overnight or at weekends.&lt;br /&gt;
* &#039;&#039;&#039;Use dependency-based triggers&#039;&#039;&#039;: In Fabric Data Pipelines and Azure Data Factory, trigger downstream pipelines based on the completion event of the upstream load and not at a fixed time. Downstream jobs should run only when the upstream actually produced new rows.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. Refresh reference and transactional data on separate frequencies ==&lt;br /&gt;
&lt;br /&gt;
Reference entities change far less frequently than transactional entities. Split your pipeline into two schedules:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Frequency!! Examples&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Slow (daily or weekly)&#039;&#039;&#039; || Chart of Accounts, Tax Rates, Tracking Categories, Contacts (where stable), Items&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Fast (intra-day or hourly)&#039;&#039;&#039; || Invoices, Bills, Credit Notes, Bank Transactions, Journals&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Refreshing reference tables less often and joining them server-side at the warehouse avoids re-downloading effectively static data multiple times per day.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
== 7. Monitor pipeline cost end-to-end ==&lt;br /&gt;
&lt;br /&gt;
OdataLink egress is one component of total pipeline cost. Track both OdataLink usage and your Fabric Compute Units (CUs)&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;OdataLink egress:&#039;&#039;&#039; OdataLink Admin Portal → View Account Details → &#039;&#039;&#039;Usage Stats&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Azure/Fabric Compute and storage :&#039;&#039;&#039; Azure Cost Management, Fabric Capacity Metrics app&lt;br /&gt;
&lt;br /&gt;
A well-tuned pipeline reduces both egress and compute. If OdataLink usage drops but Fabric capacity unit (CU) consumption rises, review whether the staging layer itself is computing on the same data set multiple times.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Combined egress reduction example ==&lt;br /&gt;
&lt;br /&gt;
Stacked optimisation techniques reduce Egress and Cost significantly:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;GET .../Invoices?$filter=LastModifiedDateTime gt &#039;2026-05-01T00:00:00Z&#039;&amp;amp;$select=InvoiceID,InvoiceNumber,Date,Total,Status,LastModifiedDateTime&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Combined with stage-once-serve-many architecture, this typically reduces OdataLink egress by &#039;&#039;&#039;90%+&#039;&#039;&#039; versus N consumers each pulling full unfiltered entities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power Users checklist ==&lt;br /&gt;
&lt;br /&gt;
* [ ] OdataLink data staged once into SQL / Lakehouse / Warehouse / Dataflow Gen2, downstream consumers read from the staging layer&lt;br /&gt;
* [ ] All recurring loads use &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; with a &#039;&#039;&#039;high-watermark&#039;&#039;&#039; column&amp;lt;ref  name=&amp;quot;watermark&amp;quot; group=&amp;quot;watermark&amp;quot; /&amp;gt;&lt;br /&gt;
* [ ] Watermark stored in a control table, updated only on successful append/merge&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used on every entity, including the watermark column&lt;br /&gt;
* [ ] Full-table backfills are one-time, not recurring&lt;br /&gt;
* [ ] Historical backfills broken into resumable date-bounded windows&lt;br /&gt;
* [ ] Pipeline schedules staggered and aligned with the business cycle&lt;br /&gt;
* [ ] Reference and transactional data refreshed on separate schedules&lt;br /&gt;
* [ ] Downstream pipelines triggered by upstream completion, not fixed time&lt;br /&gt;
* [ ] Both OdataLink egress and Azure / Fabric compute cost monitored&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your data query and transformation steps, refresh patterns, and pipeline design, and recommend further optimisations in order to bring your account usage within limits.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&amp;lt;references group=&amp;quot;watermark&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
&lt;br /&gt;
* [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Advanced Users]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
* [[Models]]&lt;br /&gt;
* [[Data Files]]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [https://odatalink.com/fair-use-policy OdataLink Fair Use Policy]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Advanced_Users&amp;diff=4618</id>
		<title>How to Reduce my OdataLink Usage - For Advanced Users</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Advanced_Users&amp;diff=4618"/>
		<updated>2026-05-28T05:19:36Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
Your OdataLink subscription includes a monthly data download allowance under our [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. If your reports or dashboards use Power Query transformations to clean and shape the dataset, the following optimisations techniques will reduce egress and improve refresh performance.&lt;br /&gt;
&lt;br /&gt;
This help page is intended towards report developers working with &#039;&#039;&#039;M Language/Power Query&#039;&#039;&#039;. For developers using Fabric Data Pipelines, Azure Data Factory, SSIS, or persistent staging into Lakehouse/Warehouse/DataLake, &lt;br /&gt;
&amp;lt;br /&amp;gt;see [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039;. &lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Query-Level Filtering =&lt;br /&gt;
This sections explains how applying a filter early in the transformation steps helps reduce egress. Query level filtering makes use of OdataLink feature that can pass the filters up directly to the data source. This results in OdataLink only downloading the filtered data out of your [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
== 1. Push date filters up to the OData feed level (query folding) ==&lt;br /&gt;
Filtering data &#039;&#039;&#039;after&#039;&#039;&#039; it has been downloaded does not reduce egress since the records have already been pulled out from the company file.&lt;br /&gt;
&lt;br /&gt;
Filtering must happen at the &#039;&#039;&#039;Navigation step&#039;&#039;&#039; in Power Query so the filter is sent to OdataLink as part of the OData query (&amp;lt;code&amp;gt;$filter=...&amp;lt;/code&amp;gt;) and only the matching/filtered rows are returned.&lt;br /&gt;
&lt;br /&gt;
# Apply date filters as early as possible, directly on the source table, before any merges, joins, or column expansions.&lt;br /&gt;
# Avoid applying &amp;lt;code&amp;gt;Table.SelectRows&amp;lt;/code&amp;gt; over a downloaded table when an equivalent filter can be applied at the navigation step.&lt;br /&gt;
&amp;lt;!--# Verify folding: right-click a step in Power Query → &#039;&#039;&#039;View Native Query&#039;&#039;&#039;. If the option is greyed out, the filter is being applied client-side and egress is not reduced.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Model Date Filters and Report Date Filters| &#039;&#039;&#039;Reference -&#039;&#039;&#039; Model Date Filters vs Report Date Filters]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2. Apply supported OData filter operators ==&lt;br /&gt;
&lt;br /&gt;
The following operators fold to the OData feed and execute server-side before any data leaves your data file:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Operator !! Operation !! Example&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;eq&amp;lt;/code&amp;gt; || equal || &amp;lt;code&amp;gt;Status eq &#039;ACTIVE&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ne&amp;lt;/code&amp;gt; || not equal || &amp;lt;code&amp;gt;Status ne &#039;ARCHIVED&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;gt&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;lt&amp;lt;/code&amp;gt; || greater / less than || &amp;lt;code&amp;gt;Date gt &#039;2026-01-01&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ge&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;le&amp;lt;/code&amp;gt; || greater / less than or equal || &amp;lt;code&amp;gt;Amount ge 1000&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt; || logical AND || &amp;lt;code&amp;gt;Status eq &#039;ACTIVE&#039; and Type eq &#039;BANK&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; || logical OR || &amp;lt;code&amp;gt;Type eq &#039;BANK&#039; or Type eq &#039;CREDIT_CARD&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;startswith()&amp;lt;/code&amp;gt; || prefix match || &amp;lt;code&amp;gt;startswith(Empname, &#039;Ia&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;contains()&amp;lt;/code&amp;gt; || substring match || &amp;lt;code&amp;gt;contains(GLCode, &#039;5-01&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; &amp;lt;code&amp;gt;startswith()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;contains()&amp;lt;/code&amp;gt; are reliable on date string columns but may fail on free-text fields (Code, Name, Description). Use comparison operators on those columns instead.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Filter examples by use case ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Date range&#039;&#039;&#039; — highest single-impact reduction:&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Date ge &#039;2026-01-01&#039; and Date le &#039;2026-12-31&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Active records only:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Status eq &#039;ACTIVE&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exclude archived:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Status ne &#039;ARCHIVED&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Limit columns retrieved with &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
OData supports projection via &amp;lt;code&amp;gt;$select=Col1,Col2,...&amp;lt;/code&amp;gt;. By default, every column on the entity is returned, including wide free-text fields that may never appear in your report. Restricting projection reduces row size and network transfer.&lt;br /&gt;
&lt;br /&gt;
In Power Query, expand only the columns you need before any other step, and confirm the resulting native query includes a &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; clause.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;code&amp;gt;$select=InvoiceID,InvoiceNumber,Date,Total,Status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== 5. Combining Filters ==&lt;br /&gt;
&lt;br /&gt;
Stacked techniques decrease the Usage rapidly. Example combined filter + projection:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$filter=Date ge &#039;2026-06-01&#039; and Status eq &#039;ACTIVE&#039;&amp;amp;$select=InvoiceID,InvoiceNumber,Date,Total,Status&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Typically reduces egress by &#039;&#039;&#039;~80%&#039;&#039;&#039; vs. an unfiltered, all-columns extraction.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Incremental Refreshing =&lt;br /&gt;
&lt;br /&gt;
== 6. Use Incremental Refresh for time-series data ==&lt;br /&gt;
&lt;br /&gt;
For datasets keyed on a date, datetime, or datetimezone column, configure &#039;&#039;&#039;Incremental Refresh&#039;&#039;&#039; so that only new or changed partitions are pulled on each refresh.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Power BI Premium / Fabric:&#039;&#039;&#039; native incremental refresh on semantic models.&lt;br /&gt;
* &#039;&#039;&#039;Power BI Pro:&#039;&#039;&#039; supported, but requires care to ensure the date filter folds. Test with &#039;&#039;&#039;View Native Query&#039;&#039;&#039; before publishing.&lt;br /&gt;
* &#039;&#039;&#039;Excel:&#039;&#039;&#039; use a date-threshold named range and filter the query URL on it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; If your organisation runs Microsoft Fabric, ask your data team about staging OdataLink feeds into a &#039;&#039;&#039;Dataflow Gen2&#039;&#039;&#039; (built on Power Query). Multiple reports can then consume the staged data without each one querying OdataLink directly. See [[How to Reduce my OdataLink Usage - For Power Users]].&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
= Monitoring =&lt;br /&gt;
&lt;br /&gt;
Verify your optimisations in your OdataLink Admin Portal  &#039;&#039;&#039;Manage Models&#039;&#039;&#039; → View → &#039;&#039;&#039;Usage tab&#039;&#039;&#039;. Compare:&lt;br /&gt;
* Unfiltered request volume (GB) - your baseline before optimising&lt;br /&gt;
* Filtered request volume (GB) - after applying optimisation&lt;br /&gt;
* &#039;&#039;&#039;Reduction %&#039;&#039;&#039; = (Unfiltered Volume − Filtered Volume) ÷ Unfiltered Data Volume × 100&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Target:&#039;&#039;&#039; 50–70% combined reduction from filtering + incremental refresh + column projection.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Power Query checklist ==&lt;br /&gt;
&lt;br /&gt;
* [ ] Date filters applied at the OData navigation step&lt;br /&gt;
* [ ] Verify Query folding&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used to limit columns retrieved&lt;br /&gt;
* [ ] Incremental refresh enabled for time-series datasets&lt;br /&gt;
* [ ] Refresh schedule matches actual report usage&lt;br /&gt;
* [ ] Considered Fabric Dataflow Gen2 if multiple reports share the same data&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and query transformations, and recommend further optimisations in attempts to reduce your account usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
&lt;br /&gt;
* [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
* [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
* [[Models]]&lt;br /&gt;
* [[Data Files]]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [[Model Date Filters and Report Date Filters]]&lt;br /&gt;
* [https://odatalink.com/fair-use-policy OdataLink Fair Use Policy]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Everyday_Users&amp;diff=4617</id>
		<title>How to Reduce my OdataLink Usage - For Everyday Users</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=How_to_Reduce_my_OdataLink_Usage_-_For_Everyday_Users&amp;diff=4617"/>
		<updated>2026-05-28T05:18:20Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Overview =&lt;br /&gt;
Your OdataLink subscription includes a monthly data download allowance under our [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. If your account&#039;s connected [[Data Files|data file(s)]] are frequently approaching or exceeding monthly limits, the following techniques will help reduce usage with minimal impact to your reporting functionality.&lt;br /&gt;
&lt;br /&gt;
The following optimisations can be applied directly in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039; or in your reporting software. &lt;br /&gt;
&amp;lt;!--Based on whether&lt;br /&gt;
# Your reporting solution uses (or will use) &#039;&#039;&#039;automatic refresh&#039;&#039;&#039;&lt;br /&gt;
# Your reporting solution uses (or will use) &#039;&#039;&#039;manual or on-demand refresh&#039;&#039;&#039;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal&#039;&#039;&#039;. &lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Automatic Data Refresh / Data Fetch ==&lt;br /&gt;
&lt;br /&gt;
=== Optimise Usage by reducing automatic refresh frequency ===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
= Refresh Schedule =&lt;br /&gt;
&lt;br /&gt;
=== 1. Reduce Automatic Refresh frequency ===&lt;br /&gt;
Most reports do not need to refresh every hour, every day, or on weekends. Each scheduled refresh re-pulls data and counts toward your allowance.&lt;br /&gt;
&lt;br /&gt;
* Match the refresh frequency to how often you actually look at the report.&lt;br /&gt;
* Disable refreshes outside business hours and on weekends if the report is not viewed then.&lt;br /&gt;
* For monthly reports, a daily or weekly refresh is usually sufficient.&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; Refreshing a sales dashboard hourly when the team only checks it on Monday mornings can use 24× more data than needed. Drop to daily, or weekly, and you may reduce that report&#039;s usage by 95%+.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Manual / On-demand Refresh ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2. Refresh manually only when you need updated Data ===&lt;br /&gt;
&lt;br /&gt;
If you can, use on-demand refresh:&lt;br /&gt;
*Refresh only when you actually need the latest figures.&lt;br /&gt;
*Batch multiple reports into a single refresh window where possible.&lt;br /&gt;
* Avoid &amp;quot;refresh-just-in-case&amp;quot; before meetings — schedule a single refresh ahead of time instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
= Model Settings =&lt;br /&gt;
The settings below are configured once per [[Models|model]] in your &#039;&#039;&#039;OdataLink Portal&#039;&#039;&#039; and applies to &#039;&#039;&#039;every refresh&#039;&#039;&#039; request.&lt;br /&gt;
&lt;br /&gt;
=== 2. Apply a Cut-off Date on your model ===&lt;br /&gt;
&lt;br /&gt;
OdataLink provides the ability to archive historical data to avoid re-downloading of same data on every refresh. The &#039;&#039;&#039;Cut-Off Date&#039;&#039;&#039; instructs OdataLink to save data up to the cut-off date and serve future refreshes from that archive.&lt;br /&gt;
&lt;br /&gt;
Setting a cut-off date in your model dramatically reduces the volume retrieved on every refresh by avoiding downloading the same historical data multiple times.&lt;br /&gt;
&lt;br /&gt;
To set a cut off date and enable archiving in your model:&lt;br /&gt;
# &#039;&#039;&#039;Archive Type:&#039;&#039;&#039;  Set the [[Archive Types|Archive Type]] of your model to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; to enable archiving.&lt;br /&gt;
# &#039;&#039;&#039;Archive Cut-Off Date:&#039;&#039;&#039; Set either a fixed cut-off date, or a &#039;&#039;&#039;rolling window&#039;&#039;&#039; that continuously archives data older than X months or X days.&lt;br /&gt;
&amp;lt;!--#; OdataLink recommends setting a rolling window archiving so that the new data also gets archived after a certain number of days or months.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; OdataLink recommends a rolling window so new data is automatically archived as it ages. You only configure it once.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://odatalink.com/2025-03-increase-performance-of-your-odatalink-odata-feeds-using-the-cut-off-date-settings/ How to apply and use the Cut-off Date setting]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 3. Set a Default Date Range on your model ===&lt;br /&gt;
&lt;br /&gt;
OdataLink provides the ability to define a default date range for a model. This allows users to control the amount of data that gets downloaded from the connected [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
If you never report on data older than, for example, two financial years, you can configure the model to ignore data outside that window entirely. &lt;br /&gt;
&lt;br /&gt;
[[Default Date Range|How to set a default date range]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 4. Enable Polling for Changes ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Polling&#039;&#039;&#039; allows OdataLink to detect and pull only the records that have been added or changed in your [[Data Files|data file]], rather than re-downloading the whole dataset on every refresh.&lt;br /&gt;
&lt;br /&gt;
Polling is particularly effective for high-volume transactional entities like Invoices, Bills, and Bank Transactions.&lt;br /&gt;
&lt;br /&gt;
[[Configure OdataLink to poll for changes|How to configure polling]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Monitoring =&lt;br /&gt;
&lt;br /&gt;
Check your Monthly Usage in your &#039;&#039;&#039;OdataLink Portal&#039;&#039;&#039; Manage Models → View → &#039;&#039;&#039;Usage tab&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Healthy pattern:&#039;&#039;&#039;&lt;br /&gt;
* Consistent month-to-month (no large spikes)&lt;br /&gt;
* 20-30% under your monthly allowance&lt;br /&gt;
* No overuse warnings&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Excessive Usage pattern:&#039;&#039;&#039;&lt;br /&gt;
* Usage increasing or consistently above 100% month-over-month&lt;br /&gt;
* Multiple Usage alerts from OdataLink&lt;br /&gt;
* Exceeding allowance for more than 1 month&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checklist ==&lt;br /&gt;
&lt;br /&gt;
* [ ] Refresh frequency matches how often the report is actually viewed&lt;br /&gt;
* [ ] Weekend and off-hours refreshes disabled if not needed&lt;br /&gt;
* [ ] Archive Type set to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; for the [[Models|model]]&lt;br /&gt;
* [ ] Cut-off Date or rolling window configured&lt;br /&gt;
* [ ] Default Date Range configured to match your reporting window&lt;br /&gt;
* [ ] Polling enabled&lt;br /&gt;
* [ ] Monthly usage reviewed in OdataLink Admin Portal&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and query transformations, and recommend further optimisations &amp;lt;!--in attempts to reduce your account usage --&amp;gt; in order to bring your account usage within limits.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Related Topics =&lt;br /&gt;
: [[Reducing Data Usage and Optimising your OdataLink Feeds|How to Reduce Usage - Main Page]]&lt;br /&gt;
: [[How to Reduce my OdataLink Usage - For Advanced Users]]&lt;br /&gt;
: [[How to Reduce my OdataLink Usage - For Power Users]]&lt;br /&gt;
: [[Reducing Data Usage and Optimising your OdataLink Feeds]]&lt;br /&gt;
: [https://odatalink.com/fair-use-policy Fair Use Policy]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=Reducing_Data_Usage_and_Optimising_your_OdataLink_Feeds&amp;diff=4616</id>
		<title>Reducing Data Usage and Optimising your OdataLink Feeds</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=Reducing_Data_Usage_and_Optimising_your_OdataLink_Feeds&amp;diff=4616"/>
		<updated>2026-05-28T05:16:16Z</updated>

		<summary type="html">&lt;p&gt;Ash: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview = &lt;br /&gt;
To keep OdataLink subscriptions affordable and predictable for everyone, we&#039;ve introduced a [https://odatalink.com/fair-use-policy &#039;&#039;&#039;Fair Use Policy&#039;&#039;&#039;]. This policy sets a monthly download limit for data retrieved from your connected [[Data Files|data file(s)]].&lt;br /&gt;
&lt;br /&gt;
The guidance below applies to all models connecting to Xero, Xero Practice Manager, MYOB and QuickBooks. Following these steps will:&lt;br /&gt;
&lt;br /&gt;
* Reduce your monthly download volume; and&lt;br /&gt;
* Improve refresh performance&lt;br /&gt;
&lt;br /&gt;
You can monitor your current usage at any time in your &#039;&#039;&#039;OdataLink Admin Portal → Usage Stats&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See [[How to track my OdataLink Usage]] for usage broken down by [[Data Files|Data file]], [[Models|Model]], and [[Users|User]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What is Usage ==&lt;br /&gt;
&#039;&#039;&#039;Usage&#039;&#039;&#039; is defined as the volume of data OdataLink retrieves from your connected [[Data Files|data files]] each month. &lt;br /&gt;
&lt;br /&gt;
This includes data retrieved by [[Microsoft Power BI|Power BI]], [[Microsoft Excel|Excel]], or [[OData Client Compatibility|other]] data pipeline and reporting tools, either via automatic scheduled refreshes or manual report refresh.&lt;br /&gt;
&lt;br /&gt;
= Pick your Optimisation Layer =&lt;br /&gt;
Optimisation techniques are grouped by the tooling you use. Pick the page that matches your role — or read all three if your organisation spans several layers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Page !! Audience !! What it covers&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Everyday Users]] || Accountants, bookkeepers, business users || Refresh frequency, [[Models|model]] settings (Cut-off Date, Default Date Range, Polling), monitoring&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Advanced Users]] || Power BI, Fabric, and Excel report developers (Power Query / M) || Query folding, OData &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; operators, &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; projection, incremental refresh&lt;br /&gt;
|-&lt;br /&gt;
| [[How to Reduce my OdataLink Usage - For Power Users]] || Data engineering teams (SSIS, ADF, Fabric Data Pipelines, Fabric Dataflow Legacy/Gen2) || Stage-once-serve-many, watermarked incremental loads, historical backfill strategy, scheduling discipline, end-to-end cost monitoring&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:navy&amp;quot;&amp;gt;&amp;lt;blockquote&amp;gt;&#039;&#039;&#039;Tip:&#039;&#039;&#039; Start with the [[How to Reduce my OdataLink Usage - For Everyday Users|Everyday Users]] page regardless of your role. The model-level settings described there apply to &#039;&#039;&#039;every&#039;&#039;&#039; refresh — automatic or manual, report or pipeline — and deliver the largest reduction with the least effort.&amp;lt;/blockquote&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== For everyone (accountants, bookkeepers, business users) ==&lt;br /&gt;
&lt;br /&gt;
Please refer to the following support note detailing optimisation techniques that can be applied directly in your OdataLink Admin Portal or in your reporting architecture.&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Everyday Users]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== For Power BI, Fabric, and Excel developers ==&lt;br /&gt;
&lt;br /&gt;
For optimisations applied inside Power Query — query folding, &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt;, incremental refresh — see:&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Advanced Users]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== For SQL, SSIS, and Fabric Pipeline Developers ==&lt;br /&gt;
&lt;br /&gt;
For optimisations applied at the pipeline / data warehouse layer — stage-once-serve-many, watermarked incremental loads, Fabric Dataflow Gen2 staging, scheduling discipline — see:&lt;br /&gt;
&lt;br /&gt;
[[How to Reduce my OdataLink Usage - For Data Engineers]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Quick checklist ==&lt;br /&gt;
A cross-cutting checklist drawn from all three pages. Detailed steps and tool-specific guidance are in the linked pages above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Everyone:&#039;&#039;&#039;&lt;br /&gt;
* [ ] Refresh schedule matches how often the report is actually used&lt;br /&gt;
* [ ] Weekend / out-of-hours refreshes disabled where not needed&lt;br /&gt;
* [ ] Archive Type set to &#039;&#039;&#039;Live (with Archive)&#039;&#039;&#039; on the [[Models|model]]&lt;br /&gt;
* [ ] Cut-off Date or rolling window configured&lt;br /&gt;
* [ ] Default Date Range configured to match your reporting window&lt;br /&gt;
* [ ] Polling enabled&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Advanced Users:&#039;&#039;&#039;&lt;br /&gt;
* [ ] Date filters applied at the OData navigation step (not post-download)&lt;br /&gt;
* [ ] Query folding verified via &#039;&#039;&#039;View Native Query&#039;&#039;&#039;&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used to limit columns retrieved&lt;br /&gt;
* [ ] Incremental refresh enabled for time-series datasets&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Azure/Fabric/Data Pipeline developers:&#039;&#039;&#039;&lt;br /&gt;
* [ ] OdataLink data staged once into SQL / Lakehouse / Warehouse / Dataflow Gen2; downstream consumers read from the staging layer&lt;br /&gt;
* [ ] All recurring loads use &amp;lt;code&amp;gt;$filter&amp;lt;/code&amp;gt; with a high-watermark column&lt;br /&gt;
* [ ] &amp;lt;code&amp;gt;$select&amp;lt;/code&amp;gt; used on every entity, including the watermark column&lt;br /&gt;
* [ ] Full-table backfills are one-time, not recurring&lt;br /&gt;
* [ ] Pipeline schedules staggered and aligned with the business cycle&lt;br /&gt;
* [ ] Reference and transactional data refreshed on separate cadences&lt;br /&gt;
* [ ] Both OdataLink egress and Azure / Fabric compute cost monitored&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Need help? ==&lt;br /&gt;
&lt;br /&gt;
If you have followed the steps above and your usage is still high, contact OdataLink support. We can review your model configuration, refresh patterns, and pipeline design, and recommend further optimisations to bring your account usage within limits.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related Topics ==&lt;br /&gt;
&lt;br /&gt;
* [https://odatalink.com/fair-use-policy OdataLink Fair Use Policy]&lt;br /&gt;
* [[How to track my OdataLink Usage]]&lt;br /&gt;
* [[OData Feed URLs]]&lt;br /&gt;
&amp;lt;!-- * [https://developer.xero.com/pricing Xero Developer Pricing]&lt;br /&gt;
* [https://developer.xero.com/faq/pricing-and-policy-updates Xero Pricing and Policy Updates FAQ]--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
	<entry>
		<id>https://help.odatalink.com/index.php?title=HelpID:ReduceUsage&amp;diff=4615</id>
		<title>HelpID:ReduceUsage</title>
		<link rel="alternate" type="text/html" href="https://help.odatalink.com/index.php?title=HelpID:ReduceUsage&amp;diff=4615"/>
		<updated>2026-05-28T05:12:56Z</updated>

		<summary type="html">&lt;p&gt;Ash: Redirected page to Reducing Data Usage and Optimising your OdataLink Feeds&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Reducing Data Usage and Optimising your OdataLink Feeds]]&lt;/div&gt;</summary>
		<author><name>Ash</name></author>
	</entry>
</feed>