Ниже для BigQuery Standard SQL
#standardSQL
SELECT
DATE(TIMESTAMP_MICROS(event_info.timestamp_usec)) day,
COUNT(address) AS total_recipients
FROM `project.dataset.gmail_log`,
UNNEST(message_info.destination) AS destination
WHERE EXISTS (SELECT 1 FROM UNNEST(message_info.message_set) WHERE type = 8)
GROUP BY day
будет возвращаться ежедневное общее количество получателей в формате ниже
Row day total_recipients
1 2019-01-10 100
2 2019-01-11 100
3 2019-01-12 100
4 2019-01-13 100
5 2019-01-14 100
Вы могли получить свой собственный класс из TDBNavigator и переопределить метод BtnClick. Или для быстрой и грязной фиксации Вы могли изменить обработчик щелчков кнопки вставки во времени выполнения, например:
type
THackDBNavigator = class(TDBNavigator);
procedure TForm1.DBNavigatorInsertClick(Sender: TObject);
var
DBNavigator: TDBNavigator;
begin
DBNavigator := ((Sender as TControl).Parent as TDBNavigator);
if Assigned(DBNavigator.DataSource) and (DBNavigator.DataSource.State <> dsInactive) then
begin
if Assigned(DBNavigator.BeforeAction) then
DBNavigator.BeforeAction(DBNavigator, nbInsert);
DBNavigator.DataSource.DataSet.Append;
if Assigned(DBNavigator.OnClick) then
DBNavigator.OnClick(DBNavigator, nbInsert);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
THackDBNavigator(DBNavigator1).Buttons[nbInsert].OnClick := DBNavigatorInsertClick;
end;
Нет никакого различия в большинстве баз данных между вставкой, и добавить. Выполнение фактической физической вставки означало бы на самом деле перемещать все данные, начиная с места, новая строка будет вставлена, вниз размер одной строки, и затем пишущий что новая строка в недавно открытом месте. Это было бы очень медленно из-за всей активности диска.
Базы данных вместо этого делают добавление, которое пишет данные в конец физического файла, и индексный порядок управляет способом, которым строка, кажется, расположена в корректное место в файле.
Таким образом для большинства намерений и целей, Вы, вероятно, уже получаете добавление вместо вставки, независимо от которого метода Вы используете или что говорит кнопка на DBNavigator. Это - индекс, который заставляет его появиться иначе.
Можно проверить, что для законности путем создания базы данных без индекса, и пытаются делать и вставку и добавление несколько раз, исследуя данные тщательно после каждой операции.
@TOndrej:Отлично! я не ценил эту технику.Спасибо!
Белый @Ken: Я понимаю Вашу точку, но визуально моим пользователям это имеет значение - DBNavigator управляет DBGrid где, в большинстве случаев, существует много неиспользованных строк в сетке. Это, кажется, более последовательно, чтобы иметь новые записи, появляются у основания сетки скорее затем чуть выше, где когда-либо текущая запись в тот момент. Но спасибо за Ваш ответ.
С уважением, PhilW.