我有一个查询返回许多列,这些列要么是 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) 我想使用 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()
- 有人可以简单地向我解释这是如何工作的吗?如果我已经登录,它会查找我的身份验证详细信息吗?如果我有多个项目的许可,我是否需要指定我正在与哪个项目合作?
我正在尝试编写一个可以存储为过程的 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 中声明的变量的值动态创建表?
我正在使用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:缺少必需的参数
我可以每次都写出数据并替换表格吗?
我正在处理我的第一个 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) 我正在运行以下查询来返回每个用户最常购买的类别,这在 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) 我正在获取主页热点图的数据,并且我只希望看到前一页为主页的综合浏览量。
我的数据是导入的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子句中使用什么来定义上一个页面路径?