Есть ли способ приведения больших целых чисел в виде строки при запросе данных из BigQuery через R? - PullRequest
7 голосов
/ 18 мая 2019

Есть ли лучший способ для работы с большими целыми числами, чем приведение их в виде строк при запросе данных из BigQuery через R через API?

Вот MVE, показывающая проблему с целым числом, которое выглядит как «NA»:

> library(bigrquery)
> 
> bq_str <- "
+ SELECT 
+    206932402797274623 AS big_pk
+   ,SAFE_CAST(206932402797274623 AS string) AS string_pk
+ "
> 
> my_df <- bigrquery::query_exec(query = bq_str, 
+                                project = 'XXXXXXXXXXX', 
+                                use_legacy_sql = FALSE,
+                                bigint = "integer64")
0 bytes processed
Warning message:
In converter[[type]](data_m[i, ]) :
  NAs introduced by coercion to integer range
> head(my_df)
  big_pk          string_pk
1     NA 206932402797274623

Вот код:

library(bigrquery)

bq_str <- "
SELECT 
   206932402797274623 AS big_pk
  ,SAFE_CAST(206932402797274623 AS string) AS string_pk
"

my_df <- bigrquery::query_exec(query = bq_str, 
                               project = 'XXXXXX', 
                               use_legacy_sql = FALSE,
                               bigint = "integer64")
head(my_df)

Я использую версию 1.1.1bigrquery.

1 Ответ

5 голосов
/ 21 мая 2019

Относительно query_exec, это было устарело , попробуйте использовать bq_query.

Если вы только ждете, чтобы избежать приведения к строке, я рекомендую привести к числовому типу.

В противном случае вы также можете использовать bq_table_download, помните, что bigint сопоставлен с "integer64".

...