Таблица запросов BigQuery Querying - PullRequest
1 голос
/ 30 мая 2019

Цель : подсчитать количество пользователей с именем события = 'Кошелек'

Проблема : Я ограничил результат запроса до 100, чтобы проверить ожидаемыйрезультат должен быть 100, но когда я использую count(params.value.string_value), он показывает 124.

Код : SELECT count(params.value.string_value) FROM "myproj.analytics_197163127.events_20190528",UNNEST(event_params) as params where event_name ='Wallet' and params.key = 'UserId' limit 100

Ожидаемый результат : если запрос возвращает 100 записей, число должно быть 100, но как оно показывает 124?

Надеюсь, вопрос ясен

Ответы [ 2 ]

2 голосов
/ 30 мая 2019

limit применяется к результирующему набору, созданному запросом.

Ваш запрос является агрегационным запросом без group by.Такая агрегация всегда возвращает одну строку.Таким образом, limit не влияет на результаты.

Если вы хотите просмотреть 100 для набора результатов, используйте CTE или подзапрос:

SELECT count(params.value.string_value)
FROM (SELECT params
      FROM "myproj.analytics_197163127.events_20190528" e CROSS JOIN
           UNNEST(e.event_params) params 
      WHERE e.event_name ='Wallet' AND params.key = 'UserId' 
      LIMIT 100
     ) ep
1 голос
/ 30 мая 2019

Запрос показывает 100 записей из-за ограничения 100 в конце:

SELECT event_date,event_timestamp,event_name, params.value.string_value 
FROM myproj.analytics_197163127.events_20190528, UNNEST(event_params) as params 
where event_name ='Wallet' and params.key = 'UserId' 
limit 100

Удалите это и проверьте снова.

LIMIT 100 указывает количество строк, которые должны быть возвращены из оператора SQL. Это не влияет на COUNT () в вашем запросе. Так что есть разница между:

select count(*) from table limit 100 

это вернет одно значение с количеством строк в таблице. С другой стороны:

select count(*) from (select * from table limit 100) 

Это вернет 100 (если в таблице более 100 строк - в противном случае будет возвращено количество строк в таблице)

...