小编S.M*_* sh的帖子

转换为字符串会引发错误吗?

我想知道是否转换为字符串即str(sth)可以引发异常,例如float(sth)吗?我要求知道是否有必要将我的代码包装在:

try:
    x = str(value)
except ValueError:
    x = None
Run Code Online (Sandbox Code Playgroud)

确保执行不会因转换失败而停止.

这在Python 2和3中也有所不同,因为它们的str类不同吗?

python string casting python-3.x

29
推荐指数
4
解决办法
2931
查看次数

获取 BigQuery 中每个 ID 的最新行的可扩展解决方案

我有一个很大的表,有一个字段ID,另一个字段为collection_time. 我想为每个 ID 选择最新的记录。不幸的是,(ID, collection_time)时间的组合在我的数据中并不是唯一的。我只想要一个最大的记录collection time。我尝试了两种解决方案,但没有一种对我有用:

第一:使用查询

SELECT *  FROM 
(SELECT *, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY collection_time) as rn 
FROM mytable)  where rn=1
Run Code Online (Sandbox Code Playgroud)

这导致Resources exceeded错误,我猜是因为ORDER BY在查询中。

第二 在表和最新时间​​之间使用连接:

(SELECT tab1.* 
FROM mytable AS tab1
INNER JOIN EACH 
(SELECT ID, MAX(collection_time) AS second_time 
FROM mytable GROUP EACH BY ID) AS tab2
ON tab1.ID=tab2.ID AND tab1.collection_time=tab2.second_time) 
Run Code Online (Sandbox Code Playgroud)

此解决方案对我不起作用,因为(ID, collection_time)它们不是唯一的,因此JOIN每个ID.

我想知道是否有解决 resourcesExceeded …

sql google-bigquery

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

在BigQuery的嵌套重复模式中,每个"ID"只选择一行

我在BigQuery中有一个表,其中包含ID字段和重复记录字段以及其他一些字段,如数据收集时间.

每个ID在此表中有多行,我想以某种方式为每个ID选择/合并一行.几乎每个解决方案,如选择最后一个,首先选择并在一行中聚合具有重复ID的行,在我的用例中是可以接受的,但到目前为止我无法使它们中的任何一个工作.

更确切地说,我的表有一个ID字段,在BigQuery术语中是: {name: ID, type: STRING, mode: NULLABLE}和重复字段:{name: data, type: RECORD, mode: REPEATED}以及其他一些(普通)字段.在我的表中,每个ID都有多行,每个ID都有自己的重复字段data.在我的查询结果中,我想要一个具有完全相同模式的表,其中每个ID只出现一次,其对应的data字段是data原始表中出现的ID之一的字段.(或理想地从其所有出现的联合)

以下是此处不起作用的解决方案列表:

第一:使用

row_number() OVER (PARTITION BY ID ORDER BY collection_time) as rn ... where  rn=1
Run Code Online (Sandbox Code Playgroud)

原因:partition by即使使用Unflatten Results选项,BigQuery 也会在使用时展平结果.

第二步:选择具有最大/最小收集时间值的行:

因为:由于系统其他部分的重复,列的值对于表中的每个id都不是唯一的.

第三:group bynest/ first其他字段上使用ID .

原因:使用nest的重复记录销毁的记录字段之间的关系.例如SELECT ID, nest(data.a), nest(data.b)来自:

ID     data.a      data.b
--------------------------
1      1a1          null
       1a2          1b2
--------------------------
1 …
Run Code Online (Sandbox Code Playgroud)

sql google-bigquery

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

使用嵌入的Keras LSTM语言模型

我正在使用keras做一个语言模型.

基本上,我的词汇量N大约是30.000,我已经训练了一个word2vec,所以我使用嵌入,然后是LSTM,然后我预测下一个单词的完全连接层,然后是softmax.我的模型编写如下:

EMBEDDING_DIM = 256
embedding_layer = Embedding(N,EMBEDDING_DIM,weights=[embeddings],
trainable=False)

model = Sequential()
model.add(embedding_layer)
model.add(LSTM(EMBEDDING_DIM))
model.add(Dense(N))   
model.add(Activation('softmax')) 

model.compile(loss="categorical_crossentropy", optimizer="rmsprop")
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 在这种情况下,你能否确认我们只使用LSTM的最后一个隐藏层(后面是完全连接的层和s​​oftmax),并且没有类似于lstm的连续隐藏层的max/mean-pooling (像这里的情感分析http://deeplearning.net/tutorial/lstm.html)?

  2. 您如何看待,而不是将lstm的最后一个隐藏层连接到一个大小为N(30.000)的大型完全连接层,连接到一个大小为EMBEDDING_DIM的层,并预测嵌入下一个单词而不是单词本身,在这种情况下,我们用mse之类的东西代替损失,减少训练时间,主要是"帮助"我们的模型,因为词汇量很大,嵌入也可以用于网络的末端?

谢谢 !

neural-network lstm keras

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

将 ARRAY_AGG() 与输入中的所有空值一起使用

我想为我的表中的每个用户选择不同的列值(在 Google BigQuery 中)。我想过使用ARRAY_AGG()像:

SELECT user_id, ARRAY_AGG(DISTINCT field1) AS f1, ARRAY_AGG(DISTINCT field2) AS f2
FROM t GROUP BY user_id
Run Code Online (Sandbox Code Playgroud)

但是因为对于某些user_ids 中的所有值field1field2为空,我收到此错误消息:Array 'f1' cannot have a null element

我想知道是否有一种解决方法可以避免此错误,或者是否有另一种方法可以在不使用的情况下实现结果 ARRAY_AGG()

sql google-bigquery

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

在BigQuery中重复字段中计算值

我想在重复的字段中选择具有更多感谢k值的行.(例如,考虑选择具有3个以上电子邮件地址的用户)

在标准SQL中我知道我可以使用

SELECT * FROM dataset.users
WHERE array_length(email_address) > 3
Run Code Online (Sandbox Code Playgroud)

但是在BigQuery遗留SQL中执行此操作的方法是什么?

sql google-bigquery

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

在Google BigQuery中,如何获取时间分区表中分区的存储大小?

我可以使用 BigQuery 查询表的存储大小SELECT size_bytes FROM dataset.__TABLES__ WHERE table_id='mytable',但这仅适用于查找表的总大小。如何从时间分区表中获取特定分区的大小,例如我想找出 mytable$20180701 中存储了多少数据。

我知道我可以将该分区复制到非分区表并使用上面的方法,但我觉得这不是正确的方法。

google-bigquery

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