Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google bigquery BigQuery域函数区分大小写差异_Google Bigquery_Google Cloud Platform - Fatal编程技术网

Google bigquery BigQuery域函数区分大小写差异

Google bigquery BigQuery域函数区分大小写差异,google-bigquery,google-cloud-platform,Google Bigquery,Google Cloud Platform,当对包含URL的数据使用BigQuery查询时,我们注意到域函数的行为与URL的情况不同 这可以通过以下简单查询进行演示: SELECT domain('WWW.FOO.COM.AU'), domain(LOWER('http://WWW.FOO.COM.AU/')), domain('http://WWW.FOO.COM.AU/') 完整大写URL的结果似乎不正确,并且URL中没有提到任何关于大小写的内容 不幸的是,域(以及遗留SQL中的其他URL处理函数)有许多限制

当对包含URL的数据使用BigQuery查询时,我们注意到
函数的行为与URL的情况不同

这可以通过以下简单查询进行演示:

SELECT
    domain('WWW.FOO.COM.AU'),
    domain(LOWER('http://WWW.FOO.COM.AU/')),
    domain('http://WWW.FOO.COM.AU/')
完整大写URL的结果似乎不正确,并且URL中没有提到任何关于大小写的内容

不幸的是,域(以及遗留SQL中的其他URL处理函数)有许多限制。虽然我们在中还没有一个等价的表达式(取消选中选项下的“使用遗留SQL”框),但您可以使用正则表达式构建自己的表达式,在更多情况下可以使用它。关于域提取,有很多答案,我们可以将其中一个答案用作:

CREATE TEMPORARY FUNCTION GetDomain(url STRING) AS (
  REGEXP_EXTRACT(url, r'^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n]+)'));

WITH T AS (
  SELECT url
  FROM UNNEST(['WWW.FOO.COM.AU:8080', 'google.com',
               'www.abc.xyz', 'http://example.com']) AS url)
SELECT
  url,
  GetDomain(url) AS domain
FROM T;

+---------------------+----------------+
|         url         |     domain     |
+---------------------+----------------+
| www.abc.xyz         | abc.xyz        |
| WWW.FOO.COM.AU:8080 | WWW.FOO.COM.AU |
| google.com          | google.com     |
| http://example.com  | example.com    |
+---------------------+----------------+

我觉得这是一个bug,同时检测原始的顶级域,如.com.net.org等,看起来它们是小写的。其余的不重要,按原样进行。因此,TLD也有同样的问题()谢谢你的回答。在正则表达式中解析URL很好,大多数情况下,我可以通过在应用函数之前降低URL的大小写来解决这个问题。这不是一个交易破坏者,只是我希望这可以记录在手册的某个地方。这是一个很好的建议;我归档了。谢谢