Couchbase通过重新调整空结果来订购

Couchbase通过重新调整空结果来订购,couchbase,n1ql,Couchbase,N1ql,我使用N1QL以以下方式查询我的数据库: SELECT sum(l.lo_revenue) as revenue, o.d_year, p.p_brand1 from (SELECT p_brand1, lineorder from part where p_brand1='MFGR#2221') as p UNNEST p.lineorder l UNNEST l.supplier s UNNEST l.orderdate o where s.s_region='EUROPE' group b

我使用N1QL以以下方式查询我的数据库:

SELECT sum(l.lo_revenue) as revenue, o.d_year, p.p_brand1 from (SELECT p_brand1, lineorder from part where p_brand1='MFGR#2221') as p UNNEST p.lineorder l UNNEST l.supplier s UNNEST l.orderdate o
where s.s_region='EUROPE'
group by o.d_year, p.p_brand1
order by o.d_year, p.p_brand1
limit 5;
但它返回的收入为空

如果我不按顺序进行查询,它会给出正确的答案,但没有排序,如下所示:

SELECT sum(l.lo_revenue) as revenue, o.d_year, p.p_brand1 from (SELECT p_brand1, lineorder from part where p_brand1='MFGR#2221') as p UNNEST p.lineorder l UNNEST l.supplier s UNNEST l.orderdate o
where s.s_region='EUROPE'
group by o.d_year, p.p_brand1
order by o.d_year, p.p_brand1
limit 5;
{
        "p_partkey": 1,
        "p_name": "lace spring",
        "p_mfgr": "MFGR#1",
        "p_category": "MFGR#11",
        "p_brand1": "MFGR#1121",
        "p_color": "goldenrod",
        "p_type": "PROMO BURNISHED COPPER",
        "p_size": 7,
        "p_container": "JUMBO PKG",
        "lineorder": [{
                    "lo_orderkey": 504065,
                    "lo_linenumber": 6,
                    "lo_custkey": 14704,
                    "lo_partkey": 1,
                    "lo_suppkey": 557,
                    "lo_orderdate": 19920603,
                    "lo_orderpriority": "5-LOW",
                    "lo_shippriority": "0",
                    "lo_quantity": 49,
                    "lo_extendedprice": 4414900,
                    "lo_ordtotalprice": 26849571,
                    "lo_discount": 3,
                    "lo_revenue": 4282453,
                    "lo_supplycost": 54060,
                    "lo_tax": 0,
                    "lo_commitdate": 19920712,
                    "lo_shipmode": "RAIL",
                    "orderdate": [{
                        "d_datekey": 19920603,
                        "d_date": "June 3, 1992",
                        "d_dayofweek": "Thursday",
                        "d_month": "June",
                        "d_year": 1992,
                        "d_yearmonthnum": 199206,
                        "d_yearmonth": "jun\/92",
                        "d_daynuminweek": 5,
                        "d_daynuminmonth": 3,
                        "d_daynuminyear": 155,
                        "d_monthnuminyear": 6,
                        "d_weeknuminyear": 23,
                        "d_sellingseason": "Summer",
                        "d_lastdayinweekfl": false,
                        "d_lastdayinmonthfl": true,
                        "d_holidayfl": false,
                        "d_weekdayfl": true
                    }],
                    "commitdate": [{
                        "d_datekey": 19920712,
                        "d_date": "July 12, 1992",
                        "d_dayofweek": "Monday",
                        "d_month": "July",
                        "d_year": 1992,
                        "d_yearmonthnum": 199207,
                        "d_yearmonth": "jul\/92",
                        "d_daynuminweek": 2,
                        "d_daynuminmonth": 12,
                        "d_daynuminyear": 194,
                        "d_monthnuminyear": 7,
                        "d_weeknuminyear": 28,
                        "d_sellingseason": "Summer",
                        "d_lastdayinweekfl": false,
                        "d_lastdayinmonthfl": true,
                        "d_holidayfl": false,
                        "d_weekdayfl": true
                    }],
                    "customer": [{
                        "c_custkey": 14704,
                        "c_name": "Customer#000014704",
                        "c_address": "uZaxFV8o9IGgayUEWtPU1Xmw",
                        "c_city": "JORDAN   5",
                        "c_nation": "JORDAN",
                        "c_region": "MIDDLE EAST",
                        "c_phone": "23-688-772-4209",
                        "c_mktsegment": "BUILDING"
                    }],
                    "supplier": [{
                        "s_suppkey": 557,
                        "s_name": "Supplier#000000557",
                        "s_address": "jj0wUYh9K3fG5Jh",
                        "s_city": "CANADA   5",
                        "s_nation": "CANADA",
                        "s_region": "AMERICA",
                        "s_phone": "13-390-153-6699"
                    }]
                }, {
                    "lo_orderkey": ...}
我也可以通过这种方式进行查询,得到正确答案,排序如下:

SELECT SUM(l.lo_revenue), o.d_year, p.p_brand1
from part p UNNEST p.lineorder l UNNEST l.supplier s UNNEST l.orderdate o
where p.p_brand1='MFGR#2221' and s.s_region='EUROPE' 
group by o.d_year, p.p_brand1
order by o.d_year, p.p_brand1;
但是这需要很多时间,我想在不测试之前过滤文档,而不是不测试所有文档。是虫子,还是我做错了什么

我的数据如下:

SELECT sum(l.lo_revenue) as revenue, o.d_year, p.p_brand1 from (SELECT p_brand1, lineorder from part where p_brand1='MFGR#2221') as p UNNEST p.lineorder l UNNEST l.supplier s UNNEST l.orderdate o
where s.s_region='EUROPE'
group by o.d_year, p.p_brand1
order by o.d_year, p.p_brand1
limit 5;
{
        "p_partkey": 1,
        "p_name": "lace spring",
        "p_mfgr": "MFGR#1",
        "p_category": "MFGR#11",
        "p_brand1": "MFGR#1121",
        "p_color": "goldenrod",
        "p_type": "PROMO BURNISHED COPPER",
        "p_size": 7,
        "p_container": "JUMBO PKG",
        "lineorder": [{
                    "lo_orderkey": 504065,
                    "lo_linenumber": 6,
                    "lo_custkey": 14704,
                    "lo_partkey": 1,
                    "lo_suppkey": 557,
                    "lo_orderdate": 19920603,
                    "lo_orderpriority": "5-LOW",
                    "lo_shippriority": "0",
                    "lo_quantity": 49,
                    "lo_extendedprice": 4414900,
                    "lo_ordtotalprice": 26849571,
                    "lo_discount": 3,
                    "lo_revenue": 4282453,
                    "lo_supplycost": 54060,
                    "lo_tax": 0,
                    "lo_commitdate": 19920712,
                    "lo_shipmode": "RAIL",
                    "orderdate": [{
                        "d_datekey": 19920603,
                        "d_date": "June 3, 1992",
                        "d_dayofweek": "Thursday",
                        "d_month": "June",
                        "d_year": 1992,
                        "d_yearmonthnum": 199206,
                        "d_yearmonth": "jun\/92",
                        "d_daynuminweek": 5,
                        "d_daynuminmonth": 3,
                        "d_daynuminyear": 155,
                        "d_monthnuminyear": 6,
                        "d_weeknuminyear": 23,
                        "d_sellingseason": "Summer",
                        "d_lastdayinweekfl": false,
                        "d_lastdayinmonthfl": true,
                        "d_holidayfl": false,
                        "d_weekdayfl": true
                    }],
                    "commitdate": [{
                        "d_datekey": 19920712,
                        "d_date": "July 12, 1992",
                        "d_dayofweek": "Monday",
                        "d_month": "July",
                        "d_year": 1992,
                        "d_yearmonthnum": 199207,
                        "d_yearmonth": "jul\/92",
                        "d_daynuminweek": 2,
                        "d_daynuminmonth": 12,
                        "d_daynuminyear": 194,
                        "d_monthnuminyear": 7,
                        "d_weeknuminyear": 28,
                        "d_sellingseason": "Summer",
                        "d_lastdayinweekfl": false,
                        "d_lastdayinmonthfl": true,
                        "d_holidayfl": false,
                        "d_weekdayfl": true
                    }],
                    "customer": [{
                        "c_custkey": 14704,
                        "c_name": "Customer#000014704",
                        "c_address": "uZaxFV8o9IGgayUEWtPU1Xmw",
                        "c_city": "JORDAN   5",
                        "c_nation": "JORDAN",
                        "c_region": "MIDDLE EAST",
                        "c_phone": "23-688-772-4209",
                        "c_mktsegment": "BUILDING"
                    }],
                    "supplier": [{
                        "s_suppkey": 557,
                        "s_name": "Supplier#000000557",
                        "s_address": "jj0wUYh9K3fG5Jh",
                        "s_city": "CANADA   5",
                        "s_nation": "CANADA",
                        "s_region": "AMERICA",
                        "s_phone": "13-390-153-6699"
                    }]
                }, {
                    "lo_orderkey": ...}
这是explain的输出,它显示order by函数,但返回null:

{
    "requestID": "654ee29a-69b9-437a-9f0e-242ac936b4f7",
    "signature": "json",
    "results": [
        {
            "#operator": "Sequence",
            "~children": [
                {
                    "#operator": "Sequence",
                    "~children": [
                        {
                            "#operator": "Sequence",
                            "~children": [
                                {
                                    "#operator": "PrimaryScan",
                                    "index": "#primary",
                                    "keyspace": "part",
                                    "namespace": "default",
                                    "using": "gsi"
                                },
                                {
                                    "#operator": "Parallel",
                                    "~child": {
                                        "#operator": "Sequence",
                                        "~children": [
                                            {
                                                "#operator": "Fetch",
                                                "keyspace": "part",
                                                "namespace": "default"
                                            },
                                            {
                                                "#operator": "Filter",
                                                "condition": "((`part`.`p_brand1`) = \"MFGR#1121\")"
                                            },
                                            {
                                                "#operator": "InitialProject",
                                                "result_terms": [
                                                    {
                                                        "expr": "(`part`.`p_brand1`)"
                                                    },
                                                    {
                                                        "expr": "(`part`.`lineorder`)"
                                                    }
                                                ]
                                            }
                                        ]
                                    }
                                }
                            ]
                        },
                        {
                            "#operator": "Alias",
                            "as": "p"
                        },
                        {
                            "#operator": "Parallel",
                            "~child": {
                                "#operator": "Sequence",
                                "~children": [
                                    {
                                        "#operator": "Unnest",
                                        "as": "l",
                                        "expr": "(`p`.`lineorder`)"
                                    },
                                    {
                                        "#operator": "Unnest",
                                        "as": "s",
                                        "expr": "(`l`.`supplier`)"
                                    },
                                    {
                                        "#operator": "Unnest",
                                        "as": "o",
                                        "expr": "(`l`.`orderdate`)"
                                    },
                                    {
                                        "#operator": "Filter",
                                        "condition": "((`s`.`s_region`) = \"AMERICA\")"
                                    },
                                    {
                                        "#operator": "InitialGroup",
                                        "aggregates": [
                                            "sum((`l`.`lo_revenue`))"
                                        ],
                                        "group_keys": [
                                            "(`o`.`d_year`)",
                                            "(`p`.`p_brand1`)"
                                        ]
                                    }
                                ]
                            }
                        },
                        {
                            "#operator": "IntermediateGroup",
                            "aggregates": [
                                "sum((`l`.`lo_revenue`))"
                            ],
                            "group_keys": [
                                "(`o`.`d_year`)",
                                "(`p`.`p_brand1`)"
                            ]
                        },
                        {
                            "#operator": "FinalGroup",
                            "aggregates": [
                                "sum((`l`.`lo_revenue`))"
                            ],
                            "group_keys": [
                                "(`o`.`d_year`)",
                                "(`p`.`p_brand1`)"
                            ]
                        },
                        {
                            "#operator": "Parallel",
                            "~child": {
                                "#operator": "Sequence",
                                "~children": [
                                    {
                                        "#operator": "InitialProject",
                                        "result_terms": [
                                            {
                                                "as": "revenue",
                                                "expr": "sum((`l`.`lo_revenue`))"
                                            },
                                            {
                                                "as": "year",
                                                "expr": "(`o`.`d_year`)"
                                            },
                                            {
                                                "as": "p_brand1",
                                                "expr": "(`p`.`p_brand1`)"
                                            }
                                        ]
                                    }
                                ]
                            }
                        }
                    ]
                },
                {
                    "#operator": "Order",
                    "sort_terms": [
                        {
                            "expr": "(`o`.`d_year`)"
                        },
                        {
                            "expr": "(`p`.`p_brand1`)"
                        }
                    ]
                },
                {
                    "#operator": "FinalProject"
                }
            ]
        }
    ],
    "status": "success",
    "metrics": {
        "elapsedTime": "8.921246ms",
        "executionTime": "8.838345ms",
        "resultCount": 1,
        "resultSize": 6915
    }
}
遵循以下说明,无需命令:

cbq> EXPLAIN
   > {CT SUM(l.lo_revenue) as revenue, o.d_year as year, p.p_brand1 as p_brand1
   > {1121') as p UNNEST p.lineorder l UNNEST l.supplier s UNNEST l.orderdate o
   > where s.s_region='AMERICA'
   > group by o.d_year, p.p_brand1
   > ;
{
    "requestID": "160cbad9-1d32-4d67-9c94-1623bba27d51",
    "signature": "json",
    "results": [
        {
            "#operator": "Sequence",
            "~children": [
                {
                    "#operator": "Sequence",
                    "~children": [
                        {
                            "#operator": "PrimaryScan",
                            "index": "#primary",
                            "keyspace": "part",
                            "namespace": "default",
                            "using": "gsi"
                        },
                        {
                            "#operator": "Parallel",
                            "~child": {
                                "#operator": "Sequence",
                                "~children": [
                                    {
                                        "#operator": "Fetch",
                                        "keyspace": "part",
                                        "namespace": "default"
                                    },
                                    {
                                        "#operator": "Filter",
                                        "condition": "((`part`.`p_brand1`) = \"MFGR#1121\")"
                                    },
                                    {
                                        "#operator": "InitialProject",
                                        "result_terms": [
                                            {
                                                "expr": "(`part`.`p_brand1`)"
                                            },
                                            {
                                                "expr": "(`part`.`lineorder`)"
                                            }
                                        ]
                                    },
                                    {
                                        "#operator": "FinalProject"
                                    }
                                ]
                            }
                        }
                    ]
                },
                {
                    "#operator": "Alias",
                    "as": "p"
                },
                {
                    "#operator": "Parallel",
                    "~child": {
                        "#operator": "Sequence",
                        "~children": [
                            {
                                "#operator": "Unnest",
                                "as": "l",
                                "expr": "(`p`.`lineorder`)"
                            },
                            {
                                "#operator": "Unnest",
                                "as": "s",
                                "expr": "(`l`.`supplier`)"
                            },
                            {
                                "#operator": "Unnest",
                                "as": "o",
                                "expr": "(`l`.`orderdate`)"
                            },
                            {
                                "#operator": "Filter",
                                "condition": "((`s`.`s_region`) = \"AMERICA\")"
                            },
                            {
                                "#operator": "InitialGroup",
                                "aggregates": [
                                    "sum((`l`.`lo_revenue`))"
                                ],
                                "group_keys": [
                                    "(`o`.`d_year`)",
                                    "(`p`.`p_brand1`)"
                                ]
                            }
                        ]
                    }
                },
                {
                    "#operator": "IntermediateGroup",
                    "aggregates": [
                        "sum((`l`.`lo_revenue`))"
                    ],
                    "group_keys": [
                        "(`o`.`d_year`)",
                        "(`p`.`p_brand1`)"
                    ]
                },
                {
                    "#operator": "FinalGroup",
                    "aggregates": [
                        "sum((`l`.`lo_revenue`))"
                    ],
                    "group_keys": [
                        "(`o`.`d_year`)",
                        "(`p`.`p_brand1`)"
                    ]
                },
                {
                    "#operator": "Parallel",
                    "~child": {
                        "#operator": "Sequence",
                        "~children": [
                            {
                                "#operator": "InitialProject",
                                "result_terms": [
                                    {
                                        "as": "revenue",
                                        "expr": "sum((`l`.`lo_revenue`))"
                                    },
                                    {
                                        "as": "year",
                                        "expr": "(`o`.`d_year`)"
                                    },
                                    {
                                        "as": "p_brand1",
                                        "expr": "(`p`.`p_brand1`)"
                                    }
                                ]
                            },
                            {
                                "#operator": "FinalProject"
                            }
                        ]
                    }
                }
            ]
        }
    ],
    "status": "success",
    "metrics": {
        "elapsedTime": "10.661133ms",
        "executionTime": "10.575926ms",
        "resultCount": 1,
        "resultSize": 5600
    }
}

子查询中缺少FinalProject。即将发布的4.5测试版中将包含此修复程序。

ORDER BY不应更改结果值,因此这可能是一个bug。您使用的是什么版本的Couchbase,能否将EXPLAIN的输出添加到您的问题中?您是否也可以在CB 4.1和/或4.5 DP中尝试此功能。@geraldss谢谢您的帮助,我已经在使用CB 4.5企业版了。我已经发布了我查询的解释结果。我们正在查看。如果您注意到我已将查询更改为使用另一台具有次要数据库的计算机搜索另一个数据,并且它也返回null,那么您是否可以在没有ORDER BY的情况下发布EXPLAIN的输出?@geraldss。同样的问题。我已经更正了第一个解释(我第一次在这里解释时没有加和)。你能给这个答案添加更多细节吗?你在回答什么问题?你的两句话有什么关系?什么的4.5测试版?@vsr何时会发生?@BPS,修复程序在这里:JIRA票据在这里:。Couchbase 4.5 Beta版将在几周内推出,包括此修复程序。如果我理解,您只需在其代码上添加一行代码:this.delayProjection=false。我可以在我的沙发上做吗。哪个文件?我没有找到任何名为planner的文件夹。或者我必须等待4.5测试版?等待测试版更安全。