Как сгруппировать несколько операторов И / ИЛИ в BigQuery - PullRequest
0 голосов
/ 06 июля 2018

Я хочу отфильтровать NHT из моего BigQuery по некоторому критерию, который я нашел в моем наборе данных из Google Analytics. Для моего примера я хочу отфильтровать эти два набора критериев:

networkLocation REGEXP_Contains (r"^(ovh \(nwk\)|hostwinds llc.|bhost inc|prisma networks llc|psychz networks|buyvm services|private customer|secure dragon llc.|vmpanel|netaction telecom srl-d|hostigation|frontlayer technologies inc.|digital energy technologies limited|owned-networks|rica web services|netaction telecom srl-d|hurricane electric inc.|private customer - host.howpick.com|ssdvirt|sway broadband|detect network|gorillaservers inc.|micfo llc.|    netaction telecom srl|egihosting|zenlayer inc|intercom online inc.|gs1 argentine|ovh hosting inc.|vps cheap inc.|limeip networks|blackhost ltd.|amazon.com inc.)$")

AND

device.browserVersion REGEXP_Contains(r"^(41.0|55.0)$")

OR

networkLocation REGEXP_Contains ("^(hpro group ltd)$")

AND

device.browserVersion REGEXP_Contains("45.0")

Мой SQL:

SELECT
  channelGrouping,
  date,
  h.page.pagePath AS Page,
  SUM(totals.timeOnSite) AS Session_Duration,
  SUM(totals.visits) AS Visits,
  AVG(totals.timeonSite/totals.visits) AS Avg_Time_per_Session,
  SUM(totals.bounces) AS Bounce,
  (SUM(totals.bounces)/SUM(totals.visits)) AS Bounce_rate,
  geoNetwork.networkLocation,
  device.browserVersion,
  device.browser
FROM
  `93868086.ga_sessions_*`,
  UNNEST(hits) as h
WHERE
  _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 365 DAY))
  AND FORMAT_DATE('%Y%m%d',DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
GROUP BY
  date,
  channelGrouping,
  geoNetwork.networkLocation,
  device.browserVersion,
  device.browser,
  h.page.pagePath

Мне нужно предложение HAVING NOT, однако я не уверен, как сгруппировать набор утверждений, которые мне нужны, чтобы отфильтровать мой критерий. Любая помощь будет отличной!

1 Ответ

0 голосов
/ 06 июля 2018

Предполагая, что ваши выражения для критерия верны - ниже должен быть способ

HAVING NOT (
  (
  REGEXP_CONTAINS (networkLocation, r"^(ovh \(nwk\)|hostwinds llc.|bhost inc|prisma networks llc|psychz networks|buyvm services|private customer|secure dragon llc.|vmpanel|netaction telecom srl-d|hostigation|frontlayer technologies inc.|digital energy technologies limited|owned-networks|rica web services|netaction telecom srl-d|hurricane electric inc.|private customer - host.howpick.com|ssdvirt|sway broadband|detect network|gorillaservers inc.|micfo llc.|    netaction telecom srl|egihosting|zenlayer inc|intercom online inc.|gs1 argentine|ovh hosting inc.|vps cheap inc.|limeip networks|blackhost ltd.|amazon.com inc.)$")
  AND REGEXP_CONTAINS(device.browserVersion, r"^(41.0|55.0)$")
  ) OR (
  REGEXP_CONTAINS (networkLocation, r"^(hpro group ltd)$")
  AND REGEXP_CONTAINS(device.browserVersion, r"45.0")
  )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...