这段代码的结果:
for($i = 0; $i <= 7; $i++){
$eachone[] = array ('a' => '1', 'b' => '2', 'c' => '3');
$a[] = array($i => $eachone);
unset($eachone);
}
$json_string = json_encode($a);
echo $json_string;
Run Code Online (Sandbox Code Playgroud)
是:
[
[
[
{
"a": "1",
"b": "2",
"c": "3"
}
]
],
{
"1": [
{
"a": "1",
"b": "2",
"c": "3"
}
]
},
{
"2": [
{
"a": "1",
"b": "2",
"c": "3"
}
]
},
{
"3": [
{
"a": "1",
"b": "2", …Run Code Online (Sandbox Code Playgroud) 我正在尝试将newtable上的商店ID与来自维护者的ID同步:
UPDATE newtable t SET t.store_id = (SELECT store_id FROM maintable s
WHERE t.state = s.state AND s.city = t.city AND t.name = s.name)
Run Code Online (Sandbox Code Playgroud)
每当子查询返回多行时,它就会出现"Subquery返回超过1行"的错误,但是当它返回零行时,子查询被认为没有返回任何内容,因此newtable上的store_id保持为NULL.这里没有什么新东西,它只是它的工作原理.
我想知道是否可以让子查询输出与没有匹配时的子查询输出相同,当它有多个匹配行时.
这样我就可以让store_id只为主表上的一个匹配行同步,并在子查询中出现多个匹配行时跳过.
在破解快速CSV格式到Firebase上传的过程中,我只是这样做,而不是编写自定义接收器。这是代码的过度简化:
public static void main(String[] args) throws Exception {
Options options = PipelineOptionsFactory.as(Options.class);
Pipeline p = Pipeline.create(options);
PCollection<String> CsvData = p.apply(TextIO.Read.from("/my_file.csv"));
CsvData.apply(ParDo.named("Firebase").of(new DoFn<String, Void>() {
@Override
public void processElement(ProcessContext c) {
Firebase fb = new Firebase("https://MYAPP.firebaseio.com/");
fb.child("someId").setValue(c.element.getValue());
}
});
}
Run Code Online (Sandbox Code Playgroud)
有用。这是在Cloud Dataflow上使用REST API的地方吗?