我正在尝试运行以下查询:
SELECT
tc.ID_NUMBER AS AFC_RPP_Number,
hc.BUSINESS AS Business,
hc.DIRECTOR AS Director,
tc.REASON_FOR_REVISION AS Description_of_Change
FROM alo_gg.AWS_PIM tc
left join lateral(
select BUSINESS,DIRECTOR
FROM alo_ggg.tracker
WHERE START_DATE <= tc.DATE AND SO = tc.SO
ORDER BY START_DATE DESC
LIMIT 1
) hc;
Run Code Online (Sandbox Code Playgroud)
上面的查询显示错误:
ERROR: syntax error at or near "SELECT"
left join lateral (SELECT BUSINESS,DIRECTOR...
Run Code Online (Sandbox Code Playgroud)
如果我单独运行子查询,它会给我一个结果,但lateral
它会给我一个错误。
为Hadoop集群提供数据并使用该集群将数据输入Vertica/InfoBright数据仓库有什么意义?
所有这些供应商都在说"我们可以与Hadoop联系",但我不明白这是什么意思.在Hadoop中存储并转移到InfoBright有什么兴趣?为什么不将应用程序直接存储在Infobright/Vertica DW中?
谢谢 !
我正在建立系统来分析有关证券交易价格的大量金融数据.这方面的一个重大挑战是确定数据将使用哪种存储方法,因为数据将在10的TB级中.将对数据进行许多查询,例如取平均值,计算标准偏差以及按多个列过滤的总和,例如价格,时间,数量等.连接语句不是必需的,但是很高兴.
现在,我正在寻找infobright社区版,monetdb和greenplum社区版用于评估目的.到目前为止,它们看起来很棒,但是对于更高级的功能,某些版本中不提供某些功能(使用多个服务器,插入/更新语句等).
您将在这种情况下使用哪些解决方案,并为替代方案提供哪些好处?具有成本效益是一个重要的优点.如果我必须支付数据仓库解决方案,我会,但我宁愿避免它,并尽可能采用开源/社区版路线.
我们有一个相当大的Greenplum v4.3集群.18个主机,每个主机有3个段节点.每个主机有大约40个内核和60G内存.
我们的表是30列宽,有1亿行.当没有并发压力时,我们正在测试的查询有3-10秒的响应时间.随着我们增加并行触发的查询数量,延迟从平均3秒减少到50毫秒,如预期的那样.
但是我们发现无论我们并行发射多少个查询,我们只有非常低的QPS(每秒查询数),几乎只有3-5个查询/秒.我们设置了max_memory = 60G,memory_limit = 800MB和active_statments = 100,希望CPU和内存可以被高度利用,但它们仍然使用不足,比如30%-40%.
我有一种强烈的感觉,我们试图并行地支持集群,希望能够充分利用CPU和内存利用率.但它不像我们预期的那样有效.设置有什么问题吗?还是还有其他我不知道的事情?
这是我想在 Greenplum 数据库(如 postgresql 8.2.15)中完成的非常基本的查询。
表 t 中的字段 create_date 是不带时区的时间戳。谁能指出我正确的查询来完成此任务?谢谢。
select * from generate_series ((select EXTRACT (YEAR FROM MIN(t1.create_date)) from t1),(select EXTRACT (YEAR FROM MAX(t1.create_date)) from t1))
Run Code Online (Sandbox Code Playgroud)
它的投掷错误
ERROR: function generate_series(double precision, double precision) does not exist
Run Code Online (Sandbox Code Playgroud)
第 1 行: select * fromgenerate_series ((select EXTRACT (YEAR FROM MI... ^ 提示:没有函数与给定名称和参数类型匹配。您可能需要添加显式类型转换。
我在Greenplum DB中有TB结构化数据.我需要在我的数据上运行基本上是MapReduce的作业.
我发现自己至少重新实现了MapReduce的功能,以便这些数据适合内存(以流式方式).
然后我决定到别处寻找更完整的解决方案.
我看了Pivotal HD + Spark,因为我使用Scala和Spark基准测试是令人惊叹的因素.但我相信这背后的数据存储HDFS的效率将低于Greenplum.(请注意"我相信".我很高兴知道我错了,但请提供一些证据.)
因此,为了与Greenplum存储层保持一致,我查看了Pivotal的HAWQ,它基本上是在Greenplum上使用SQL的Hadoop.
这种方法有很多功能丢失.主要是使用Spark.
或者是否更好地使用内置的Greenplum功能?
所以我处在不知道哪条路最好的十字路口.我想要很好地处理适合关系数据库模型的TB数据,我希望Spark和MapReduce的好处.
我要求太多了吗?
假设我在 psql 上运行以下查询:
> select a.c1, b.c2 into temp_table from db.A as a inner join db.B as b
> on a.x = b.x limit 10;
Run Code Online (Sandbox Code Playgroud)
我收到以下消息:
注意:表没有“DISTRIBUTED BY”子句——使用名为“c1”的列作为该表的Greenplum数据库数据分布键。
提示:“DISTRIBUTED BY”子句确定数据的分布。确保选择的列是最佳数据分布键,以最大限度地减少偏差。
DISTRIBUTED BY
柱?temp_table
?它存储在我的客户端还是服务器上?PostgreSQL v8.2(Greenplum)
CREATE OR REPLACE FUNCTION util.retrec(OUT p1 date, OUT p2 boolean)
RETURNS RECORD
AS
$BODY$
DECLARE
BEGIN
p1 := current_date;
p2 := true;
RETURN;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;
SELECT util.retrec();
Run Code Online (Sandbox Code Playgroud)
这将返回(2016-03-24,t)
-我该如何分别提取这两个值?
我可以与之交互进行操作,SELECT p1,p2 FROM util.retrec();
但是如何在过程中将两个值分配给两个变量?我尝试了这个:
SELECT util.retrec() INTO r1, r2;
Run Code Online (Sandbox Code Playgroud)
运气不好,这试图将记录分配到r1中。
我应该如何重写我的插入语句?
CREATE TABLE test_table (
rate decimal(16,8)
);
INSERT INTO test_table VALUES (round(3884.90000000 / 0.00003696, 8));
Run Code Online (Sandbox Code Playgroud)
例外:
ERROR: numeric field overflow
SQL state: 22003
Detail: A field with precision 16, scale 8 must round to an absolute value less than 10^8. Rounded overflowing value: 105110930.73593074
Run Code Online (Sandbox Code Playgroud)
数据库:Greenplum Database 4.3.8.0 build 1(基于PostgreSQL 8.2.15)
我在表中有 30 个数字数字列。我想为表中的所有列找到平均值、标准和百分位数。我不想像下面那样手动编写所有列名
select date,
avg(col1), stddev(col1),
avg(col2), stddev(col2),
from table name group by date;
Run Code Online (Sandbox Code Playgroud)
有什么方法可以一次找到所有列的均值、标准差和百分位数。
greenplum ×10
postgresql ×3
sql ×3
hadoop ×2
infobright ×2
apache-spark ×1
database ×1
hawq ×1
lateral-join ×1
monetdb ×1
plpgsql ×1
scala ×1
sqldatatypes ×1
vertica ×1