Я только что протестировал Google Geocoder и получил ту же проблему, что и у вас. Я заметил, что я получаю только статус OVER_QUERY_LIMIT один раз каждые 12 запросов. Поэтому я жду 1 секунду (это минимальная задержка ожидания). Это замедляет приложение, но меньше, чем ждать 1 секунду каждого запроса
info = getInfos(getLatLng(code)); //In here I call Google API
record(code, info);
generated++;
if(generated%interval == 0) {
holdOn(delay); // Every x requests, I sleep for 1 second
}
С основной метод holdOn:
private void holdOn(long delay) {
try {
Thread.sleep(delay);
} catch (InterruptedException ex) {
// ignore
}
}
Надеюсь, что это поможет
Я не уверен, возможно ли сделать этот последний аргумент переменной. Вместо этого я бы предложил следующий подход.
Previous Amount Scripted =
<...>
VAR CompareDatesTable =
SWITCH (
TRUE (),
SelectedCompare = "Previous Month",
DATEADD ( 'Date_Dimension'[Date], -1, MONTH ),
SelectedCompare = "Same Month Previous Year",
DATEADD ( 'Date_Dimension'[Date], -1, YEAR)
)
VAR ScriptTypeVar =
SWITCH (
TRUE (),
SelectedMarketShare = "Quantity",
CALCULATE (
SUM ( Scripts_Fact[Pack Quantity] ),
CompareDatesTable
),
<...>
)
<...>
Выше я передаю всю таблицу CompareDatesTable
в функцию CALCULATE
.