我在 BigQuery 中使用 ST_MAKEPOLYGON 函数如下:
  with data AS (
  SELECT
    61680 AS id, 139.74862575531006 AS lon,
    35.674973127377314 AS lat union all
  SELECT
    61680,
    139.75087881088257,
    35.673909836018375 union all
  SELECT
    61680,
    139.747037887573,
    35.6765767531247 union all
  SELECT
    61680,
    139.75308895111,
    35.6813525780394 union all
  SELECT
    61680,
    139.747509956359,
    35.6798884869144 union all
  SELECT
    61680,
    139.754590988159,
    35.6799930657428 union all
  SELECT
    61680,
    139.754977226257,
    35.6762281415729 union all
  SELECT
    61680,
    139.750170707702,
    35.6815268728124 union all
  SELECT
    61680,
    139.755363464355,
    35.6782500673754
    )
SELECT
  ST_makepolygon(ST_MAKELINE(ARRAY_AGG(st_geogpoint(lon,
          lat)))) AS valid
FROM
  `w_nagakawa.geo_test`
GROUP BY
  id
我得到如下错误:
Error: …如何获取 bigquery 中字符串中正则表达式的匹配次数?我不认为bigquery sql 支持regexp_count。
因此,例如,您可能想要计算“foo1 foo foo40”这样的字符串中“foo*”的匹配数,它将返回计数 2(在本例中,我的意思是“*”必须是非空字符串)。
谢谢!
假设我有一张班级开始时间表和一张学生表以及他们想要的开始时间。我想通过将最接近的 Class.StartTime 与 Student.DesiredStartTime 匹配来加入这两个表(请参见下面的示例)。你会怎么做?我看到这个问题经常被问到和回答,但仅适用于其他数据库(不是 BigQuery)。由于 BigQuery 有一些独特的属性,我想知道 BigQuery 是否有任何特殊功能来帮助实现这一点?谢谢!
Class
+-----------------------------------+------------+
|               StartTime           |    Class   |
+-----------------------------------+------------+
| 07/01/19 08:00                    | English    |
| 07/01/19 09:00                    | Chemistry  |
| 07/01/19 10:30                    | Math       |
+-----------------------------------+------------+
Student
+-----------------------------------+------------+
|               DesiredStartTime    |    Student |
+-----------------------------------+------------+
| 07/01/19 08:45                    | Jimmy      |
| 07/01/19 09:15                    | Bobby      |
| 07/01/19 10:00                    | Buddy      |
+-----------------------------------+------------+
[Query Results]
+-----------------------------------+------------+------------+
|               StartTime           |    Class   |  Student   |
+-----------------------------------+------------+------------+
| 07/01/19 09:00                    | Chemistry …我想查询多年的月度报告 例如:如果我们采用八月,那么我需要查询 100 多年的同月报告
我的数据如下所示
Row Country AverageTemperature    dt
1   Spain   18                   1836-08-01 00:00:00 UTC
2.  Germany 19                   1834-05-01 00:00:00 UTC
在Google BigQuery中,我使用以下格式的表格:daily_records_yyyy_mm_dd。我需要在给定的日期范围内对多个表运行查询。TABLE_DATE_RANGE函数期望表名的格式为[prefix] [day],其中[day]的格式为YYYYMMDD。我仍然可以使用TABLE_DATE_RANGE还是有其他方法吗?
谢谢
我想根据用户访问网站的顺序为每个用户 ID 创建一个通道路径,我想对每个路径的总交易进行求和。这个想法是用 Bigquery 做到这一点。
我有以下输入表:
           user id - date       - hits.time - channelgrouping - transaction
           xxxxxxx - 2017-01-01 - 23234     - google cpc      - 1          
           xxxxxxx - 2017-01-02 - 23234     - email           - 0           
我想要的输出表是:
           user id - channelgrouping path - transaction
           xxxxxxx - google cpc > email   - 1
任何人都可以通过提供创建路径的代码来帮助我入门吗?
提前致谢!
我有一个列BigQuery在DATETIME例如2018-08-16T11:00:35.683000,我想在一些自定义的格式,它是转换YYYY-MM-dd HH:MM。我怎样才能做到这一点 ?转换时出现以下错误:
ValueError:时间戳超出平台 localtime()/gmtime() 函数的范围
我正在研究将Oracle DECODE函数实现为UDF。
以下是外部功能 https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm
以下是Oracle中解码的外部功能和语法:
Oracle:
DECODE( <expr> , <search1> , <result1> [ , <search2> , <result2> ... ] [ , <default> ] )
SELECT product_id,
       DECODE (warehouse_id, 1, 'Southlake', 
                             2, 'San Francisco', 
                             3, 'New Jersey', 
                             4, 'Seattle',
                                'Non domestic') 
       "Location of inventory" FROM inventories;
首先,对于BigQuery UDF,对于SQL或JavaScript,对于BigQuery UDF,在定义UDF函数时,您需要知道接受和键入的参数数量。当您定义SQL UDF函数时,您也可以接受任何类型的数组,但是我不确定它是否可以工作并且SQL UDF是否可以对数组执行我们想要的操作。似乎基于Javascript UDF文档,所有参数都是预先命名和键入的。
有没有一种方法可以使用BigQuery UDF做到这一点,它必须像Oracle解码一样是动态的,并且适合您摆在面前的任何情况,而不是知道您要解码的内容是静态的
我有以下 sql 查询,需要在 bigquery 上运行
select replace(substring(p.name, charindex(',', p.name), len(p.name)), ',', '') AS [First_Name] from people p
所以我尝试了下面的大查询语法
select replace(SUBSTR(p.name, charindex(',', p.name), len(p.name)), ',', '') AS [First_Name] from people
但我遇到了以下错误
Function not found: charindex at [1:1]
我在 BigQuery 中有一个表,名为project.dataset.table. 该表以及其他一些列中有一个ourpolygons列的数据类型为GEOGRAPHY。
我正在尝试应用于ST_UNION该ourpolygons列,以获得一个多重多边形,即所有多边形的并集。ST_UNION是BigQuery 中的地理函数。
使用这个答案,我尝试:
SELECT ST_UNION(ourpolygons) FROM (SELECT ourpolygons FROM `project.dataset.table`) AS multipolig;
我收到错误:
No matching signature for function ST_UNION for argument types: GEOGRAPHY. Supported signatures: ST_UNION(GEOGRAPHY, GEOGRAPHY); ST_UNION(ARRAY<GEOGRAPHY>) at [1:8]
我也尝试过:
SELECT ST_UNION(ourpolygons) FROM `project.dataset.table` AS multipolig;
给我错误:
No matching signature for function ST_UNION for argument types: GEOGRAPHY. Supported signatures: ST_UNION(GEOGRAPHY, GEOGRAPHY); ST_UNION(ARRAY<GEOGRAPHY>) at [1:8]
最终,我将结果放入一个新表中,其中一行:并集。
如何从现有表中选择所有多边形并创建它们的并集?