所以每天晚上我都有一个sql构建脚本,它以红移的方式运行,大约需要30分钟。这已经持续了一年多
昨晚amazon集群更新后,脚本现在需要6个小时
以前有人有过这个问题吗
有什么想法吗
谢谢 根据更改列表,我看到的唯一一件可能会影响您的事情是,现在您必须为真空指定一个排序阈值,因此您的表可能无法重新排序,这可能会严重影响性能。除此之外,我会对您的查询运行一些解释计划,看看什么占用了最多的资源。可能是不断增长的表格已经达到了切片倾斜的阈值。谢谢,我想这是他们的问题。你只需要等待它结束。这就是他们所说
不幸的是,我有大量的csv文件,缺少分隔符,如下所示。请注意,第二个数据只有1个分隔符和2个值。目前我收到“未找到分隔符错误”
只有在只有两个值的情况下,我才能在第三列中插入NULL
1,avc,99
2,xyz
3,timmy,6
是否可以在不修改CSV文件的情况下将此文件复制到红移中?使用FILLRECORD参数为空白列加载空值
有关更多详细信息,您可以使用FILLRECORD参数为空白列加载空值
您可以查看更多详细信息
我正在寻找一种在temp_08文件夹中创建文件夹的方法。Temp_08是我唯一有写入权限的文件夹,因此我需要在Temp_08中创建该文件夹。我希望将表存储在此文件夹中,以便更干净地组织我的表。在红移中执行此功能的最佳方式是什么
亚马逊红移基于PostgreSQL的分支。因此,它继承了PostgreSQL的许多属性
要将表排列成更多逻辑组,可以使用:
从文件中:
数据库包含一个或多个命名架构。数据库中的每个模式都包含表和其他类型的命名对象。默认情况下,数据库只有一个模式,名为PUBLIC。
在红移中,我使用下面的代码。但我只得到第一个特殊字符的位置
如果您最终需要单个字段值,而不仅仅是可以使用的逗号位置,请从测试中选择id、regexp_instr(id’、’、regexp_instr(id’、’、2):
您能提供您试图解析的记录的示例吗?我的记录如5434980cd70ba0c37d0028、544976cae79548b16810、55AFDBE67245000A01。所以我需要(,)值的第一、第二、第三个位置。为什么要找到这些位置?是解析字段中的单个元素吗?谢谢!完美地工作
在红移中按数据时,我不熟悉红移,在红移中创建的主键为Vin(车辆识别号)。即使两次按同一个键,也不会得到任何约束异常,而是将相同的数据保存为记录
当使用外键约束时,再次遇到同样的问题。我是否缺少启用db中的贡献者的任何配置?来自:
在适当的情况下定义表之间的主键和外键约束。即使它们只是信息性的,查询优化器也会使用这些约束来生成更高效的查询计划
除非应用程序强制执行约束,否则不要定义主键和外键约束Amazon红移不强制执行唯一、主键和外键约束。
如果我正确阅读了此信息,您应该遵循的解决方法是在应用
我感兴趣的是从split_part函数结果中获取最后一项
如果field1具有:
abc : def : ghi : jkl
abc : def : ghi : jkl : lmn
拆分部分(反向(字段1),“:”,1)不起作用,因为它返回
lkj
nml
我想要它回来:
jkl
lmn
我想你在找这样的东西:
reverse(split_part(reverse(field1), ':', 1));
admin@dev# select reverse_split_part(field1
我正在尝试使用python将数据从JIRA更新到Redshift DB。我在更新“说明”列中的值时遇到问题。DB中的目标列的类型为varchar
下面给出了在将“description”列插入Redshift DB之前如何修改该列
df['description'] = df['description'].astype(str)
它抛出以下错误:
DataError: value too long for type character varying(256)
插入此字段是否有任何错误。“说
在整个24小时内,我每分钟都会生成一个序列。生成一个仅以hh24:mi:ss和hh24:mi格式显示每小时的序列如何
结果应该是
00:00
01:00
02:00
:
:
23:00此查询:
SELECT to_char(generate_series(0, 23) * interval '1 hour' + '2019-01-01 00:00:00'::timestamp, 'HH24:MI')
将返回:
00:00
01:00
02:00
03:00
...
23:00
只需根据需要修
我试图创建一个表,将平均销售额除以某个月内注册帐户的用户群,然而,我只能计算出除以该特定月份内进行购买的人数,该数字低于该群体的总金额。如何更改下面的查询,使每个月的平均成功交易金额除以0
多谢各位
select sum (t.amount_in_dollars)/ count (distinct u.id) as Avg_Successful_Transacted, (datediff(month,[u.created:month],[t.createdon:month])) as Coho
我有动力消防水带把数据输入红移。我的数据有一个IP地址字符串字段,我使用第二个整数IP地址列进行地理定位,这不在我的源数据中。我希望在每次复制完成时运行更新查询,以更新字符串ip列中的整数ip列,其中整数ip列为空
有没有办法在加载后运行查询?还有一种方法可以安排重复查询,而不引入ec2实例?UDF-?@Guy我已经用python编写了一个UDF来进行实际的解析,这不是问题。问题是我现在必须手动触发解析。我希望它自动化。也许我缺少一些基本的东西,但你不需要触发UDF的计算。如果你有一个基于整数计
这对我来说更像是一个令人困惑的问题,我想知道为什么
我有两个表,几乎相同,唯一的区别是一列的数据类型和sortkey
table mbytes rows
stg_user_event_properties_hist 460948 2378751028
stg_user_event_properties_hist_1 246442 2513860837
尽管它们的行数几乎相同,但大小几乎是原来的两倍
以下是表格结构
我试图通过CTEs在查询顶部设置一些变量,以使长查询的维护更易于处理
我提取了一个例子,说明我正在努力实现的目标。我没有设法让“标签”被视为一个列表,而不是一个完整的字符串。我试过分开,但没能得到我所需要的
WITH tmp AS (
SELECT
'tag1, tag2, tag3' as tags
)
select
CASE WHEN 'tag1' in (select tags from tmp) THEN 1 ELSE 0 END matched_tags
基本上我需要的
我有一个文本字段“presence\u changed\u at”,带有文本值,即'2014/12/17 08:05:28+0000。我需要把它转换成时间戳。在postgreSQL中,有函数_TIMESTAMP(),但是在redshift中,这似乎不受支持。我可以在没有时间的情况下提前得到日期
TO_DATE("presence_changed_at",'YYYY/MM/DD HH24:MI:SS')
产生
2014-12-12
但是我找不到任何方法来获取时间戳格式
提前感谢您解决此问题请尝
我一直在使用Amazon Redshift来执行我的查询。
我知道之前有人问过这个问题。但我不明白如何合并UDF
我想分配一个临时变量,它接受一个特定的值。
我想这样做,使我的脚本动态。例如,这是我的
编写代码的常用方法
SELECT * FROM transaction_table WHERE invoice_date >= '2013-01-01'
AND invoice_date <= '2013-06-30';
我想做的是。。。
类似于您将在下面看到的内容。我相信SQLS
有人能告诉我如何在amazon redshift中检查表依赖关系吗?
i、 我想删除我的主表,并列出依赖于我的主表的所有其他表
我正在检查以下查询,但它没有按要求工作
SELECT DISTINCT c_p.oid AS tbloid
,n_p.nspname AS schemaname
,c_p.relname AS NAME
,n_c.nspname AS refbyschemaname
,c_c.relname AS refbyname
,c_c.oid AS viewoid
FROM p
我需要对我的Redshift集群模拟一些基本的负载测试,我需要并行执行大约20个SELECT查询
由于红移不支持存储过程,我很想了解如何实现这一点。查看
选中要并行启动选择,请安装此
然后您可以像这样对红移运行并行sql命令
export PGPASSWORD=your_pw; par_psql -h your_redshift -p 5439 -U your_username -d mydb —-file=myscript.sql
工作负载管理中的查询队列?感谢您提供此解决方案。
我们的一个外部表出现红移问题
AWS Glue中有300多个表,它们作为名为events的外部模式添加到我们的红移集群中。events中的大多数表都可以正常运行。但是当查询一个名为item_loaded的表时,我们得到以下错误:
select * from events.item_loaded limit 1;
ERROR: XX000: Failed to incorporate external table "events"."item_loaded" into local catalog
我希望在开发环境中重置权限,我注意到有两个用户我无法删除。我检查了所有的权限等,我发现对这些用户的唯一引用是在pg_default_acl中
select * from pg_default_acl;
返回:
defacluser | defaclnamespace | defaclobjtype | defaclacl
----------------------------------------------------------------------
101
根据,SVV_TABLE_INFO.tbl_rows字段包括标记为删除但尚未清空的行。但SVV_TABLE_INFO.size字段仅描述为表的大小,单位为1MB数据块。我想获取运行手动真空命令前后的数据,以确定在工作台上进行真空吸尘的有效性。因此需要澄清。是的,大小包括删除的记录大小,直到出现真空
证明我观点的步骤
# select table_id,size from SVV_TABLE_INFO where table_id='358723';
table_id | size
-----
我正在创建一个保留队列,它显示了我的应用程序用户群的保留情况,但我只知道如何在计数版本中计算结果,然而,我真的希望结果是总队列起始组的百分比(即,在第0个月,平台上有1000名活跃用户,但在第2个月,只有500名用户仍然活跃,因此第2个月的保留率为50%,第3个月,只有300名用户仍然活跃,因此保留率=30%)
我编写的代码用于计算以下每个月的计数:
select count(distinct u.id), count(t.id), [u.created:month] as ucm, (date
根据亚马逊红移文档,密码必须至少为8个字符,并且至少包含一个大写字母、一个小写字母和一个数字
有没有办法对数据库禁用此功能
我们不需要这样严格的要求
此外,文档不清楚,但如果我在“某物”之前不指定有效,那么它将永远有效,对吗?文档中说,您也可以使用“无限期”之前的有效密码,但没有解释如果您根本不包括“无限期”之前的有效密码,会发生什么情况您无法修改红移密码标准
如果您指的是ALTER USER。。。[有效期至],有效期日期不是必填字段。密码将永远有效。通过使用md5功能,您可以绕过长度/字符要求
我通过控制台创建了一个查询组test,并执行了下面的查询,效果很好
将查询_组设置为“测试”
插入虚拟(时间戳,产品ID)值(至时间戳('2018-06-25 23:14:00','YYYY-MM-DD HH:MI:SS'),'DummyProduct')
重置查询组
这一切都如期而至
然后我运行了相同的查询,但查询组不存在(例如:XYZ)
甚至这个问题也很有效
第二个查询是如何执行的,因为它无法访问任何查询组。若查询组不存在,请求是否会转到默认队列
我们如何验证哪个查询转到哪个查询组
包含
以下查询适用于Postgresql,但不适用于红移:
WITH bar (baz) AS
(VALUES ('a'), ('b'), ('c'))
SELECT * from bar;
给
baz
---
a
b
c
如何在红移中复制此行为?不幸的是,联合是唯一的方法:
WITH bar (baz) AS
(select 'a' union select 'b' union select 'c')
SELECT * from bar;
创建一个表并首先插入值。然后使用该表。UNIO
据我所知,红移是为了性能而构建的,但不是为了可用性。
文件
建议在任何节点关闭后,整个集群将关闭,直到节点恢复。在AZ失败的情况下,你一点运气都没有
这篇文章建议使用双集群
但是,我不清楚如何复制Looker的PDT表以支持通过路由53到备用群集的即时故障切换
只是好奇人们如何处理红移的医管局问题
我有一个包含以下字段的日历表,如何使用以下红移字段计算MTD/YTD。如何创建MTD/YTD字段
聚合上下文中的MTD/YTD用于聚合MTD从月初到今天的数据/指标,以及YTD从年初到今天的数据/指标。仅此表不符合该标准
参考-
我已经将每日转储文件解压缩,然后将其放回s3
当我尝试在postgresql中执行copy语句时,我收到以下错误
Missing newline: Unexpected character 0x14 found at location 4
查询:
copy temp from 's3://bucket/top-1m.csv' credentials 'blah blah blah';
我需要在每行中添加一些字符吗
原始数据:
1,facebook.com
2,google.com
3,yo
我们使用此处定义的推荐方法执行“升级”:
加载一个只有150行的文件几乎需要两分钟。几乎所有的时间都用于此删除操作:
删除
从…起
使用测量温度进行测量
哪里
测量。测量\标记\ id=测量\温度测量\标记\ id
和measurement.date\u time=measurement\u temp.date\u time
即使临时表为空,完成此操作仍需要将近两分钟。
在所有桌子上运行全真空后,速度仍然如此缓慢
谓词中的两列都是复合排序键的一部分,度量值标记id是分布键,所以我不清楚为什
我有一张表,上面有日期和一些计数,如下所示:
| Date | Count |
| 2019-01-02 | 100 |
| 2019-01-03 | 101 |
| 2019-01-04 | 99 |
| 2019-01-05 | 95 |
| 2019-01-06 | 90 |
| 2019-01-07 | 88 |
根据此表,我要计算的是对每个日期前3天的计数求和,如下所示:
| Date | Prev3DaysCount |
|
当我使用Glue将表格从S3上传到AWS redshift时,在redshift上显示的表格包括表格中的单引号(“”)
我想这是原始表格中的空白。请帮我解决这个问题。非常感谢。您能提供输入文件的示例吗?你确信这是一个双引号( ),而不是两个单引号(”/代码>?在我的输入文件中有空白,当我点击空白时,它显示出一个空格键。我认为分隔符将空白中的空格条视为STIN,并用引号('')覆盖该条带。.2011-03-31,CONV-FI,,PURC,,,E,,,,,,,,,29440801572,1900-
我正在AWS红移中测试alter命令。我已经创建了一个test_table_sort table,我正在尝试向其中添加一个名为school的列
create table test_table_sort (
id int generated by default as identity (1,3) not null,
student_name varchar(50),
primary key(id))
sortkey (student_name);
我添加了一些学生ID和姓名。现
我正在使用红移中的SELECT INTO从dos创建一个新表dos3。但是,虽然位置代码是表dos中的主键(非空),但在执行SELECT INTO操作后,新表将其转换为可空字段
也不支持Alter Column SET NOT NULL。如何做到这一点
SELECT
location_code, item_no
INTO analytics.dos3
FROM analytics.dos
WHERE date>'2020-10-20'
我的表dos很大,我想从另一个表联接在表的开头添
我正试图通过Spark Redshift执行S3复制操作,并希望在运行copy命令之前修改Redshift表结构,以便添加任何缺少的列(它们都应该是VARCHAR)
我能做的是在运行拷贝之前发送一个SQL查询,所以理想情况下,我希望更改TABLE ADD COLUMN IF NOT EXISTS COLUMN\u name VARCHAR(256)。不幸的是,如果不存在,Redshift不支持ADD COLUMN,所以我目前正在寻找一种解决方法
我试图查询pg_table_def表以检查列的存在
我使用COPY命令将JSON数据集从S3加载到红移表。数据正在部分加载,但它会忽略缺少数据(键值/数组)的记录,即从下面的示例中,只有第一条记录将被加载
查询:
从“s3://mybucket/address.json”复制地址
凭证“aws\u访问\u密钥\u id=XXXXXXX;aws_secret_access_key=XXXXXXX'
最大错误为250
json's3:/mybucket/address_jsonpath.json'
我的问题是如何从address.json加载所有记录
我的红移表中有一个变量。变量名是service_date,它是一个字符变量。我想从这个变量中得到年份。我正在使用下面的代码,但它不工作
extract(year from (cast(service_date as date))
日期样本数据-
17-Mar-10
2-Mar-10
19-Nov-10
19-Nov-10 etc.
你可以按照下面的方法做--
从时间戳开始
select DATE_PART_YEAR('2019-01-15 04:47:22');
date_part_y
我们有一个具有大数据集的表。我们遇到了两个性能问题:
根据aws文档,我们第一次执行时需要更长的时间,但所有后续执行(即使过滤器值发生变化)都应该更快。当我们在aws控制台上从查询编辑器运行测试查询时,这是不一致的
当我们从lambda函数(nodejs)运行相同的查询时,所花费的时间甚至更长,大部分时间是原来的两倍,并导致网关超时错误
我们需要更多的信息来帮助你。请提供集群的大小和类型、被查询表的DDL(您可以替换列名)、表中的行数以及正在运行的查询。关于item1,这指的是查询编译。如果您运
在红移中,我检查用户的授权。我怎么知道他们是否可以更改表格
我知道他们是否可以删除表,因为“只有表的所有者、架构所有者或超级用户可以删除表。”-对于alter table,不存在此类限定:
HAS_TABLE_PRIVILEGE提供有关其他特权的信息,但不提供alter TABLE:我收到AWS支持部门的响应。tl;dr:alter table可以由那个些,并且只有那个些可以删除表格的人来运行
“”“
这是因为,确定用户是否可以更改表的工作方式与确定给定用户是否可以删除表的工作方式类似。也就是说
我正在将红移SQL迁移到雪花SQL。
需要关于如何将偏移值作为表达式包含在snowflake的LAG()中的建议。关于偏移量,红移支持LAG()中的表达式,而雪花则不支持
例如:
SF中应为sql:
LAG(exp, **exp**) over (partition by col1 order by col2)
当前不支持LAG函数第二个输入参数的表达式。如果使用pass A表达式,您将收到如下所示的错误
错误:SQL编译错误:函数LAG的参数2需要为常量,找到“EXPR”-其中EXPR是一个
从概念上讲,我理解物化视图是计算值的静态表示,但我不理解这在功能上与创建包含相同预计算数据的表有什么不同。我认为一张桌子可能会更有性能,因为可以添加排序键
物化视图,或之前所知的快照,是一个表段,其内容根据查询定期刷新,无论是针对本地表还是远程表。对远程表使用物化视图是实现站点间数据复制的最简单方法
它可以用作基于使用联接的多个表的聚合表。我们还可以实现行级安全特权
物化视图可用于提高各种查询的性能,包括执行数据聚合和转换的查询
一旦加载了MV的连接表,就会根据刷新机制自动刷新MVS数据
我试图运行下面的查询并得到错误。
错误:由于内部错误,不支持此类型的相关子查询模式。如何在不改变结果的情况下重新编写子查询。粗体突出显示的是导致问题的原因
挑选
宾斯马克斯,
本努伯爵,
四舍五入比报告占总计数的5%
从…起
选择
宾斯马克斯,
cum_count-lagcum_count,1个超订单数量(按仓位最大仓位计数)
从…起
选择
b、 宾斯马克斯,
选择计数*
来自ndw_owner.MBP_USER_用户ulbu登录
哪里
ulbu.DAYS\u自\u首次登录\u后>30天
和ul
我正在编写一个代码,它必须在给定的日期范围内多次访问事务文件。我想知道是否可以设置我的表的视图,以允许在代码开始时从中进行一次删除,而不影响下面的表,以便在整个代码中始终应用日期范围
因此,在一个简化的示例中,将代码从
SELECT SUM(sales)
FROM trans_file
WHERE date_field BETWEEN '2012-01-01' AND '2012-01-31'
对此
DELETE
FROM trans_file
WHERE
我正在尝试在单个主机上安装Wonder replicator。我的源数据源是MYSQL,目标是redshift。
我正在安装复制器。
台阶
1) 默认配置
./tools/tpm configure defaults --reset
./tools/tpm configure alpha \
--install-directory=/opt/continuent \
--enable-heterogenous-service=true \
--members=localhost,localhos
我已经在AWS DMS服务中创建了一个红移端点
运行测试连接时,我收到以下错误消息:
Error Details: [errType=CALL_SERVER_ERROR, status=0, errMessage=Failed executing command on Replication Server, errDetails=]
DMS复制实例和Redshift群集都位于同一区域和同一VPC中。您是否通过Redshift上的入站规则授予DMS IP地址访问Redshift群集的权限?您的意
有没有一种好方法可以在红移中生成尽可能小的时间戳?
这就是我想到的:
SELECT to_timestamp(0, 'utc')
这是可行的(但与“0”一起),并且不可能有更小的日期,为什么要更小的日期?对不起,是的,我只需要一个最小的日期,不一定是最小的日期。
我有一个事件表,其中包含一列IP地址。我还有一个映射表,它采用0填充的IP地址范围,并有一个相应的城市和国家
我可以编写将IP地址转换为0填充IP地址的查询,然后根据映射表进行连接
但就性能而言,我什么都做不到。events表有40m+行,因此在拔出插头之前,尝试基于字段操作的连接需要30分钟。我尝试映射一个映射表(IP到0填充的IP),但它并没有改善情况。甚至用city构建一个精简的唯一IP地址表也要花很长时间
这里是否有一种方法或策略可以让我更有效地合并这些数据集?您不必每次都在运行中这样做
我在几天的时间间隔内运行了相同的查询,在Amazon Redshift上第一次执行时,执行时间不同。
对于两次运行,我都将会话的缓存设置为FALSE
对于这两个查询,后续查询的速度更快(以毫秒为单位)。我检查了查询缓存的使用情况,但没有使用查询缓存
问题:
在没有使用查询缓存的情况下,后续查询为什么运行得更快,以及如何运行得更快?
为什么同一查询的第一次执行时间不同
另外,我使用了相同的排序、分布和列编码。附上我的执行时间基准的图像
红移中的查询(技术上称为查询段)在第一次执行时进行编译。后续执
我已经编写了以下代码:
create or replace function max_price()
returns real
volatile
as
$$
select
max(main_amount)
from
table
$$
language sql;
我收到此错误消息:
错误:选择表达式不能具有聚合或窗口函数。
上下文:创建SQL函数max_price body
如何解决这个问题?不,红移UDF是标量的-每行输
指示可以有多个排序键列。不过,我想不出正确的语法。这适用于一列:
create table elt.tmptmp (
val1 smallint sortkey,
val2 smallint,
);
这就是我假设它可以用于多个列的方式,但它会导致一个错误:
create table elt.tmptmp (
val1 smallint,
val2 smallint,
sortkey(val1, val2)
);
ERROR: syntax error at or near
我在Amazon Redshift中创建新用户时遇到问题。我遵循上的描述,并能够使用上面描述的示例中的数据创建集群。我可以使用最新版本的SQL Workbench/J(Build 1222017-02-04)和驱动程序(JDBC 4.2兼容)从EC2实例连接到集群。尝试创建新用户时失败:
create user dbuser25x with password 'abcD1234';
其中一种情况会发生:
我收到确认用户已创建的消息,但没有用户:
User dbuser25x created
E
我目前正在将一个主要包含web分析数据的数据库从Postgresql迁移到Redshift。我无法优化加载过程。我正在寻求关于我的模式和我使用的一般方法的反馈
下面是模式的一个小示例,它说明了我遇到的问题:
CREATE TABLE dim_browser (
browser_key integer IDENTITY(-2,1) PRIMARY KEY,
browser_name varchar(40) DEFAULT 'Unknown'::text NOT NULL,
我有一个每天递增更新一次的表。表中有大约1000万条记录,但我只更新在过去24小时内创建或更新的行。这运行得非常好,但是我对其中一列有一个问题,该列计算每个销售(记录)的账龄,该账龄是根据记录创建时的时间计算的,并将其与最新数据运行时进行比较。我想知道,每次表增量更新时,我怎么能只更新1000万行中的每一行的这个列
我使用亚马逊红移作为数据库
谢谢..红移不允许以您描述的方式更新单个列。您可以写入UPDATE x SET y=z,其中不管是什么,但整行仍为逻辑删除(软删除),并将一条新记录写入文
1 2 3 4 5 6 ...
下一页 最后一页 共 19 页