我有一个用户事件表,我想将这些事件投影到一个带有一些谓词的新列中,然后将每个用户的事件聚合到一个新的投影中,该投影告诉我用户是否曾经有过与他们匹配的谓词,或者如果他们从未匹配过,等等。
在其他语言中,这通常被称为all()and any(),您向它传递一个布尔值列表,它会告诉您是否所有这些都匹配,或者是否至少有一个匹配。它相当于AND在所有布尔值上使用布尔值(例如在 的情况下all)或OR在所有布尔值上使用布尔值(如在 中any)。
BigQuery 有这个功能吗?我可以使用它来近似它max,
min但它并不理想。
例子:
select
month(date_time) m,
count(*) as ct,
max(id_is_present),
min(id_is_present),
max(starts_with_one) max_one,
min(starts_with_one) min_one,
from
(
select
length(user_id) > 1 id_is_present,
regexp_match(user_id, r'^1') starts_with_one,
date_time
from
[user_events.2015_02]
)
group by
m
Run Code Online (Sandbox Code Playgroud)
它利用了max(true, false, false)yielding的行为true,因此您可以实现any并all通过在列中搜索值然后从那里构建。
这是我必须依赖的技巧还是 BigQuery 支持布尔聚合?
假设我有一堆:
Array.make (int_of_float (2. ** 17.)) 1
|> Array.to_list;;
- : int list
= [1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1;
1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1;
1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; 1; …Run Code Online (Sandbox Code Playgroud) 我正在为我自己的教育创建一个 javascript 游戏。游戏需要几个页面,我通过 hidden 实现这些页面,div当你想查看它们时,这些页面会被隐藏/取消隐藏(题外话:欢迎任何关于这是否是个好主意的建议)。
我有一个 CSS 规则,它隐藏了我所有的 div,display: none;然后是一个用display:block;. 但是,不是取消隐藏类,而是我用于选择所有 div 的 css 选择器覆盖了类,导致规则不适用。我知道我可以使用!important属性来解决这个问题,但我想了解为什么我写的东西不起作用。我认为一个类将是一个足够具体的选择器,并且该规则甚至出现在隐藏规则之后。
这是我的来源:
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css" media="screen" charset="utf-8">
</head>
<body>
<div id="game">
<div id="content">
<div id="viewport">
<div id="home_page" class="current_page">Home</div>
<div id="work_page">Work</div>
</div>
</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
和CSS:
#content
{
background: #eef;
padding: 5px;
}
#viewport div
{
display:none;
}
.current_page
{
display:block;
//display:block !important; //One solution, but not preferred
}
Run Code Online (Sandbox Code Playgroud) 我有一大堆代码打开文件并逐行搜索内容,然后对每个匹配的行执行某些操作.我想把它考虑到它自己的函数中,它接受一个文件的路径并给你匹配的行,但我无法弄清楚如何正确地考虑这个.
这是我认为很接近的,但是我得到了一个编译器错误:
/// get matching lines from a path
fn matching_lines(p: PathBuf, pattern: &Regex) -> Vec<String> {
let mut buffer = String::new();
// TODO: maybe move this side effect out, hand it a
// stream of lines or otherwise opened file
let mut f = File::open(&p).unwrap();
match f.read_to_string(&mut buffer) {
Ok(yay_read) => yay_read,
Err(_) => 0,
};
let m_lines: Vec<String> = buffer.lines()
.filter(|&x| pattern.is_match(x)).collect();
return m_lines;
}
Run Code Online (Sandbox Code Playgroud)
而编译错误:
src/main.rs:109:43: 109:52 error: the trait `core::iter::FromIterator<&str>` is not implemented for the type …Run Code Online (Sandbox Code Playgroud) 我有一项工作使用该ds变量来协调它处理的工作量,并且计划每天使用@daily.
select * from events
where date = '{{ ds }}';
Run Code Online (Sandbox Code Playgroud)
但是,我想编写一个新版本的@monthly. 我不需要做太多改变,但我需要访问下一次运行的日期戳以便干净地移植它。
select * from events
where
date >= '{{ ds }}'
and
date < '{{ macros.ds_add(ds, 32) }}';
Run Code Online (Sandbox Code Playgroud)
我可以通过制作 DAGrun 的结束日期来解决问题,{{ ds_add(ds, 32) }}因为我的工作能够处理运行之间的重叠,但我希望有一种方法可以让日期戳成为下个月的第一天或第一天上个月。
select * from events
where
date >= '{{ ds }}'
and
date < '{{ next_month }}';
Run Code Online (Sandbox Code Playgroud)
我怎么能实现这个?