我想知道是否转换为字符串即str(sth)可以引发异常,例如float(sth)吗?我要求知道是否有必要将我的代码包装在:
try:
x = str(value)
except ValueError:
x = None
Run Code Online (Sandbox Code Playgroud)
确保执行不会因转换失败而停止.
这在Python 2和3中也有所不同,因为它们的str类不同吗?
我有一个很大的表,有一个字段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 …
我在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 by在nest/ 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) 我正在使用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)
我有两个问题:
在这种情况下,你能否确认我们只使用LSTM的最后一个隐藏层(后面是完全连接的层和softmax),并且没有类似于lstm的连续隐藏层的max/mean-pooling (像这里的情感分析http://deeplearning.net/tutorial/lstm.html)?
您如何看待,而不是将lstm的最后一个隐藏层连接到一个大小为N(30.000)的大型完全连接层,连接到一个大小为EMBEDDING_DIM的层,并预测嵌入下一个单词而不是单词本身,在这种情况下,我们用mse之类的东西代替损失,减少训练时间,主要是"帮助"我们的模型,因为词汇量很大,嵌入也可以用于网络的末端?
谢谢 !
我想为我的表中的每个用户选择不同的列值(在 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 中的所有值field1或field2为空,我收到此错误消息:Array 'f1' cannot have a null element
我想知道是否有一种解决方法可以避免此错误,或者是否有另一种方法可以在不使用的情况下实现结果 ARRAY_AGG()
我想在重复的字段中选择具有更多感谢k值的行.(例如,考虑选择具有3个以上电子邮件地址的用户)
在标准SQL中我知道我可以使用
SELECT * FROM dataset.users
WHERE array_length(email_address) > 3
Run Code Online (Sandbox Code Playgroud)
但是在BigQuery遗留SQL中执行此操作的方法是什么?
我可以使用 BigQuery 查询表的存储大小SELECT size_bytes FROM dataset.__TABLES__ WHERE table_id='mytable',但这仅适用于查找表的总大小。如何从时间分区表中获取特定分区的大小,例如我想找出 mytable$20180701 中存储了多少数据。
我知道我可以将该分区复制到非分区表并使用上面的方法,但我觉得这不是正确的方法。