小编Mik*_*ant的帖子

当 write_disposition='WRITE_TRUNCATE' 时,BigQueryOperator 会更改表架构和列模式

我正在使用 Airflow 的 BigQueryOperator 用 write_disposition='WRITE_TRUNCATE' 填充 BQ 表。问题是,每次任务运行时,它都会将表架构和列模式从“必需”更改为“可空”。我使用的 create_disposition 是“CREATE_NEVER”。由于我的表是预先创建的,因此我不希望更改架构或列模式。使用 write_disposition='WRITE_APPEND' 可以解决该问题,但我的要求是使用 WRITE_TRUNCATE。知道 BigQueryOperator 为什么改变架构和模式吗?

python google-bigquery

7
推荐指数
1
解决办法
4560
查看次数

Davies-Bouldin 指数越高或越低得分越好

这里

我使用 Google Bigquery 训练了 KMEANS 聚类模型,它在模型的评估选项卡中为我提供了这些指标。我的问题是我们是否试图最大化或最小化戴维斯-布尔丁指数和均方距离?

cluster-analysis machine-learning k-means

6
推荐指数
1
解决办法
1万
查看次数

BigQuery 中的 PERCENT_RANK() 返回超出资源

当我尝试在大型数据集上使用 PERCENT_RANK() 时,它会给我一个错误。

SELECT 
  a2_lngram, 
  a2_decade, 
  a2_totalfreq, 
  a2_totalbooks, 
  a2_freq, a2_bfreq, 
  a2_arf, 
  c_avgarf, 
  d_arf, 
  oi, 
  PERCENT_RANK() OVER (ORDER BY d_arf DESC) plarf 
FROM [trigram.trigrams8]
Run Code Online (Sandbox Code Playgroud)

使用目标表和AllowLargeResults 返回:

“查询执行期间超出资源。”

当我将结果限制为几百时,它运行得很好。

JobID:oticyproject1:job_PpTpmMXYETUMiM_2scGgc997JVg 数据集是公共的。

google-bigquery

5
推荐指数
1
解决办法
7934
查看次数

如何在BigQuery中扩展透视?

比方说,我有一个给定的一天音乐视频播放统计数据表格mydataset.stats(3B行,1M用户,6K艺术家).简化的架构是:UserGUID String,ArtistGUID String

我需要从行列枢轴/转的艺术家,这样的模式将是:
UserGUID字符串,Artist1诠释,Artist2诠释,... Artist8000诠释
与艺术家通过各自的用户播放次数

如何将行转换为具有BigQuery/SQL中大量数据的列中的方法中提出了一种方法以及如何在Google BigQuery中为数千个类别创建虚拟变量列?但看起来它不能扩展我的例子中的数字

我的例子可以缩放这种方法吗?

sql google-bigquery

5
推荐指数
1
解决办法
3800
查看次数

使用 mysql 正则表达式验证我的 google bigquery 数据库中的电子邮件地址

我正在尝试验证我的 google bigquery 表中的电子邮件地址。我正在使用以下查询来执行此操作,但 bigquery 抛出错误。我不确定我的代码有什么问题。我找到了用于验证以下故事的正则表达式:-电子邮件地址中允许使用哪些字符?

select email
FROM my table
WHERE REGEXP_CONTAINS(email, regex)
Run Code Online (Sandbox Code Playgroud)

这里的正则表达式是

Perl 的 RFC2822 正则表达式

regex sql google-bigquery

5
推荐指数
1
解决办法
3647
查看次数

获取 BigQuery 表(流缓冲区)中的行数

我正在通过流媒体进行插入。在用户界面中,我可以看到以下行数:

在此输入图像描述

有没有办法通过 API 获取它?当前当我这样做时:

from google.cloud import bigquery
client = bigquery.Client()
dataset = client.dataset("bqtesting")
table = client.get_table(dataset.table('table_streaming'))
table.num_rows
0
Run Code Online (Sandbox Code Playgroud)

显然 0 不是我想要得到的数字。从 API 文档中可以看出:

numRows unsigned long [仅输出] 此表中的数据行数,不包括流缓冲区中的任何数据。

那么,我的问题是:我们如何获得表中的确切行数?目前我正在做:

count=[item[0] for item in client.query('SELECT COUNT(*) FROM `bqtesting.table_streaming`').result()][0]    
Run Code Online (Sandbox Code Playgroud)

但这需要大约 5 秒才能获得计数(并且我需要非常频繁地执行此查询以查看所有流插入是否已“完成”)。

python google-bigquery

5
推荐指数
1
解决办法
2万
查看次数

java.io.IOException:方案没有文件系统:C 和 WinError 10054:现有连接被远程主机强制关闭

我试图使用 Pyspark 将数据从 BigQuery 数据集连接并获取到本地 Pycharm。

我在 Pycharm 中运行了以下脚本:

from pyspark.sql import SparkSession

spark = SparkSession.builder\
    .config('spark.jars', "C:/Users/PycharmProjects/pythonProject/spark-bigquery-latest.jar")\
    .getOrCreate()

conn = spark.read.format("bigquery")\
    .option("credentialsFile", "C:/Users/PycharmProjects/pythonProject/google-bq-api.json")\
    .option("parentProject", "Google-Project-ID")\
    .option("project", "Dataset-Name")\
    .option("table", "dataset.schema.tablename")\
    .load()
conn.show()
Run Code Online (Sandbox Code Playgroud)

为此我收到以下错误:

Exception in thread "main" java.io.IOException: No FileSystem for scheme: C
    at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2660)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2667)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:94)
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2703)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2685)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:373)
    at org.apache.spark.deploy.DependencyUtils$.resolveGlobPath(DependencyUtils.scala:191)
    at org.apache.spark.deploy.DependencyUtils$.$anonfun$resolveGlobPaths$2(DependencyUtils.scala:147)
    at org.apache.spark.deploy.DependencyUtils$.$anonfun$resolveGlobPaths$2$adapted(DependencyUtils.scala:145)
    at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:245)
    at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36)
    at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:33)
    at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
    at scala.collection.TraversableLike.flatMap(TraversableLike.scala:245)
    at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:242)
    at scala.collection.AbstractTraversable.flatMap(Traversable.scala:108)
    at org.apache.spark.deploy.DependencyUtils$.resolveGlobPaths(DependencyUtils.scala:145)
    at org.apache.spark.deploy.SparkSubmit.$anonfun$prepareSubmitEnvironment$4(SparkSubmit.scala:363)
    at …
Run Code Online (Sandbox Code Playgroud)

python-3.x apache-spark pyspark

5
推荐指数
1
解决办法
7181
查看次数

Data Studio将结果过滤到数组包含两个值的行

我有一个这样的表:

姓名 大批
[吠叫,毛茸茸的]
[咕噜声、毛茸茸的、其他]
破鸭子 [咕噜声,羽毛]

当我使用控件并选择 Purrs 和 Furry 时,我会得到所有三行。期望的结果是只得到猫排。

BQ Name 的底层是一个字符串,Array 实际上是一个Array<struct<type: string, value:string>>eg [{'array_element':'Barks'}],所有type值都等于array_element

looker-studio

5
推荐指数
1
解决办法
974
查看次数

如果没有文件,请处理gsutil ls和rm命令错误

我正在运行以下命令,以从gcs存储桶中删除文件,然后再在其中加载新文件。

gsutil -m rm gs://mybucket/subbucket/*
Run Code Online (Sandbox Code Playgroud)

如果存储桶中没有文件,它将引发“ CommandException:一个或多个URL与对象不匹配”。

我希望它删除文件(如果存在)而不会引发错误。

有相同的错误 gsutil ls gs://mybucket/subbucket/*

如何重写此代码而不必显式处理异常?或者,如何最好地在批处理脚本中处理这些异常?

gsutil

4
推荐指数
2
解决办法
1726
查看次数

读取 Avro 文件并将其写入 BigQuery 表

我的目标是从云存储中读取 avro 文件数据并使用 Java 将其写入 BigQuery 表。如果有人提供代码片段/想法来读取 avro 格式数据并使用 Cloud Dataflow 将其写入 BigQuery 表,那就太好了。

google-cloud-storage google-bigquery google-cloud-dataflow apache-beam

4
推荐指数
1
解决办法
1903
查看次数