小编Ben*_*n P的帖子

对 BigQuery 中多列的数字求和

我有一个查询返回许多列,这些列要么是 1 要么是 0,具体取决于用户与网站的许多点的交互,我的数据如下所示:

UserID   Variable_1   Variable_2   Variable_3   Variable_4   Variable_5
User 1        1           0             1            0           0
User 2        0           0             1            0           0
User 3        0           0             0            0           1
User 4        0           1             1            1           1
User 5        1           0             0            0           1
Run Code Online (Sandbox Code Playgroud)

每个变量都用它自己的代码行定义,例如: MAX(IF(LOWER(hits_product.productbrand) LIKE "Variable_1",1,0)) AS Variable_1,

我想要一列汇总每个用户的所有行。看起来像这样:

UserID   Total     Variable_1   Variable_2   Variable_3   Variable_4   Variable_5
User 1     2             1           0             1            0           0
User 2     3             1           1             1            0           0
User 3     0             0           0 …
Run Code Online (Sandbox Code Playgroud)

sql google-bigquery

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

在 Python 中运行 BigQuery SQL 查询,如何进行身份验证?

我想使用 Python 对 BigQuery 运行 SQL 查询,我是一个完整的初学者。我已经阅读了“使用 API 创建一个简单的应用程序”页面(https://cloud.google.com/bigquery/create-simple-app-api#bigquery-simple-app-build-service-python)并获得了我的代码如下:

from google.cloud import bigquery

client = bigquery.Client()

query_job = client.query("""
    #standardSQL
    SELECT date, totals.visits AS visits
    FROM `myproject.mydataset.ga_sessions_20180111`
    GROUP BY date
    """)

results = query_job.result()  # Waits for job to complete.

for row in results:
    print("{}: {}".format(row.title, row.unique_words))
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到错误: OSError: Project was not passed and could not be determined from the environment.

阅读这个我认为这个问题与身份验证有关client = bigquery.Client()- 有人可以简单地向我解释这是如何工作的吗?如果我已经登录,它会查找我的身份验证详细信息吗?如果我有多个项目的许可,我是否需要指定我正在与哪个项目合作?

python google-bigquery

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

在 BigQuery 界面中使用变量名称创建表

我正在尝试编写一个可以存储为过程的 BigQuery 脚本,我希望在脚本写出的表名中使用我传递的参数之一,例如:

DECLARE id STRING;
SET id = '123';

CREATE OR REPLACE TABLE test.id AS(
SELECT * FROM dataset.table
)
Run Code Online (Sandbox Code Playgroud)

但是,在此示例中,表是使用名称id而不是“id”变量的值创建的123。有什么方法可以使用 BigQuery UI 中声明的变量的值动态创建表?

google-bigquery

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

将 BigQuery 表替换为 API 作业

我正在使用BigQuery 客户端库执行数据 ETL jpb,然后将数据加载回 BigQuery。

我想每次都覆盖目标表,但目前我的代码每次运行时都会将新数据附加到表中。我已阅读有关 job_config 的文档,并使用它来设置查询参数,但我不知道如何为查询设置写入配置。

这是我到目前为止所尝试过的:

roc_df = pd.DataFrame(roc_score)

job_config.write_disposition = bigquery.WriteDisposition.WRITE_TRUNCATE

dataset_ref = client.dataset('Customers')
table_ref = dataset_ref.table('propensity_scores_test')

client.load_table_from_dataframe(roc_df, table_ref, job_config=job_config).result()
Run Code Online (Sandbox Code Playgroud)

我也尝试过这种格式:

query_config = bigquery.QueryJobConfig(
    query_parameters=[
        bigquery.job.WriteDisposition('WRITE_TRUNCATE')
    ]
)
Run Code Online (Sandbox Code Playgroud)

但目前两者都返回错误:

BadRequest:400 POST https://www.googleapis.com/upload/bigquery/v2/projects/my_project/jobs?uploadType=resumable:缺少必需的参数

我可以每次都写出数据并替换表格吗?

google-bigquery

3
推荐指数
1
解决办法
5146
查看次数

在单个 Django 模板上显示来自 2 个模型的内容

我正在处理我的第一个 Django 项目,并且使用视图将我的第一个模板标签打印到我的页面模板上。我想在我的页面上显示一些其他数据库值,但重复相同的过程似乎是错误的。

这是我的两个模型:

class Drink(models.Model):
    drink_name = models.CharField(max_length=100)
    strength = models.IntegerField(default=0)
    def __str__(self):
        return self.drink_name


class status(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    health = models.IntegerField(default=100)
    strength = models.IntegerField(default=50)
    charisma = models.IntegerField(default=50)
Run Code Online (Sandbox Code Playgroud)

而我的观点:

from django.shortcuts import render

from .models import Drink
from .models import status

# Create your views here.
def index(request):
    served_drinks = Drink.objects.order_by('strength')
    context = {'served_drinks': served_drinks}
    return render(request, 'tavern/index.html', context)
Run Code Online (Sandbox Code Playgroud)

还有我的模板:

  Hello {{ user.get_username }}, welcome to the tavern.

  <br><br>

  <div class="card-panel teal lighten-3">Grab a drink from the …
Run Code Online (Sandbox Code Playgroud)

python django django-templates

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

扩大日期范围时,数组索引 1 超出范围(溢出)

我正在运行以下查询来返回每个用户最常购买的类别,这在 30 天和 60 天的日期范围内运行良好,但是当我尝试在过去 100 天运行它时,我收到错误:

Array index 1 is out of bounds (overflow)

为什么扩大日期范围会导致此错误?

WITH `query_result` AS (

SELECT customDimension.value AS UserID,
SUM(CASE WHEN LOWER(hits_product.v2ProductName) LIKE "% mens%" THEN 1 ELSE 0 END) AS mens,
SUM(CASE WHEN LOWER(hits_product.v2ProductName) LIKE "%womens%" THEN 1 ELSE 0 END) AS womens,
SUM(CASE WHEN LOWER(hits_product.v2ProductName) LIKE "%boys%" 
OR LOWER(hits_product.v2ProductName) LIKE "%girls%"
THEN 1 ELSE 0 END) AS kids
FROM `xxx.xxx.ga_sessions_20*` AS t
  CROSS JOIN UNNEST(hits) AS hits
  CROSS JOIN UNNEST(t.customdimensions) AS customDimension
  CROSS …
Run Code Online (Sandbox Code Playgroud)

sql google-bigquery

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

计算BigQuery中的上一页路径

我正在获取主页热点图的数据,并且我只希望看到前一页为主页的综合浏览量

我的数据是导入的Google Analytics(分析)表格-BQ中不存在“上一页路径”指标,那么我该如何解决呢?

这是我的查询的基本示例:

SELECT
  hits.page.pagePath
FROM (TABLE_DATE_RANGE([***.ga_sessions_],
      DATE_ADD(CURRENT_TIMESTAMP(), -4, 'DAY'),
      DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')))
WHERE ? -- Where previous page path was the homepage?
GROUP BY hits.page.pagePath
Run Code Online (Sandbox Code Playgroud)

我可以在WHERE子句中使用什么来定义上一个页面路径?

google-bigquery

0
推荐指数
1
解决办法
1925
查看次数

标签 统计

google-bigquery ×6

python ×2

sql ×2

django ×1

django-templates ×1