对于简短的摘要 - 我想设置一个变量,该变量等于表中存在的行数或数据条目的数量。
我在Python脚本中运行一个查询,该查询计算过去一周我的应用中使用的设备数量。我通过计算不同的序列号来做到这一点。目前我正在使用此查询。
#standardsql
SELECT count(distinct serial)
FROM `dataworks-356fa.FirebaseArchive.test2`
Where (PeripheralType = 1 or PeripheralType = 2 or PeripheralType = 12)
AND EXTRACT(WEEK FROM createdAt) = EXTRACT(WEEK FROM CURRENT_TIMESTAMP()) - 1
AND serial != 'null'
然后我使用此代码将此结果发送到我的python脚本中的稍后时间。
with open('Count_BB_Serial_weekly.json', 'r') as lowfile:
low = json.load(lowfile)
low1 = low["f0_"]
f0_
=计算的不同序列号的数量
但是,现在我想添加一个功能,我还可以看到已使用的序列号以及使用的不同序列号的数量。列出序列号的查询与上面的类似,只是没有count(distinct)
部分。有没有办法可以将low1
设置为等于表中的行数,因为我无法运行同时列出序列号的count函数。希望你能跟上这个。如果有任何混淆,我会在评论中解决。
谢谢!
答案 0 :(得分:3)
您可能已经将此结果带入BigQuery。例如:
#standardSQL
WITH data AS(
SELECT '1' AS serial UNION ALL
SELECT '2' as serial UNION ALL
SELECT '3' AS serial UNION ALL
SELECT '1' AS serial
)
SELECT
ARRAY_AGG(DISTINCT serial) distinct_serials,
ARRAY_LENGTH(ARRAY_AGG(DISTINCT serial)) total_serials
FROM
data
结果:
[
{
"distinct_serials": [
"2",
"1",
"3"
],
"total_serials": "3"
}
]
或者在您的查询中,它将类似于:
#standardsql
SELECT
ARRAY_AGG(serial) serials,
ARRAY_LENGTH(ARRAY_AGG(serial)) total_serials
FROM(
SELECT distinct serial AS serial
FROM `dataworks-356fa.FirebaseArchive.test2`
Where (PeripheralType = 1 or PeripheralType = 2 or PeripheralType = 12)
AND EXTRACT(WEEK FROM createdAt) = EXTRACT(WEEK FROM CURRENT_TIMESTAMP()) - 1
AND serial != 'null')
结果应该是这样的:
[{"serials": ["serial_1", "serial_2", (...)], "total_serials": 10}]
您将拥有包含序列号的ARRAY和包含总条目的另一个字段。