在 Redshift 上,为什么我的表没有显示在以下查询中?它确实存在,如我运行的下一个查询所示。我想要一种列出模式的所有表的方法:
mydb=# select distinct(tablename) from pg_table_def where schemaname = 'db';
tablename
-----------
(0 rows)
mydb=# \d db.some_table
Table "db.some_table"
Column | Type | Modifiers
-----------------+-----------------------------+-----------
...correct info shows up here...
...but nothing showed up above?
Run Code Online (Sandbox Code Playgroud) 我需要在大数据仓库中支持动态字段和值来存储 API 请求日志,我的用户案例是我需要存储所有 API 请求查询字符串并能够在未来对它们执行查询(所以它不仅仅是存储,所以我不能为他们使用 blob)
例如 http://example.com/?action=test&foo=abc&bar=def...
我需要存储所有field => value映射,即(action => test), (foo => abc), (bar => def),由于该字段是如此动态,我找到的唯一解决方案是使用 Entity-Attribute-Value,但是,人们一直说这是一个非常糟糕的设计。
那么,考虑一下我上面的用例,什么是 EAV 的合适替代品?
我当前使用 KAV 的模式
表requests
(id, timestamp, uri)
例如(1, 149382220, '/')
表params
(request_id, key, value)
例如(1, 'action', 'test'), (1, 'foo', 'abc'), (1, 'bar', 'def')
有什么建议?
更新:我们在 AWS RedShift 上运行仓库
我正在尝试为SELECTRedshift 中的组分配权限。所以我在该组中创建了一个组和一个用户:
CREATE GROUP data_viewers;
CREATE USER <user> PASSWORD '<password>' IN GROUP data_viewers;
Run Code Online (Sandbox Code Playgroud)
现在我想让这个组能够从任何表中读取数据:
GRANT SELECT ON ALL TABLES IN SCHEMA PUBLIC TO GROUP data_viewers;
Run Code Online (Sandbox Code Playgroud)
命令返回GRANT。现在,当我以新创建的用户身份连接到 Redshift 并发出问题时,SELECT * FROM something.something;我得到:
架构某物的权限被拒绝
我尝试授予某些东西的权限:GRANT SELECT ON ALL TABLES IN SCHEMA something TO GROUP data_viewers;但这并没有改变任何东西。
如何允许我组中的用户SELECT访问架构中任何表中的数据?
我一直在研究 Amazon 的 Redshift 数据库作为我们数据仓库未来可能的替代品。我的经验一直是使用维度建模和 Ralph Kimball 的方法,所以看到 Redshift 不支持自动递增列的串行数据类型等功能有点奇怪。
但是,AWS 大数据博客最近有一篇关于如何为星型架构优化 Redshift 的博客文章:https : //blogs.aws.amazon.com/bigdata/post/Tx1WZP38ERPGK5K/Optimizing-for-Star-Schemas -and-Interleaved-Sorting-on-Amazon-Redshift
我的问题是在 Redshift 中加载星型模式的最佳实践是什么?我在 Redshift 的任何文档中都找不到答案。
我倾向于将我的文件从 S3 导入到临时表中,然后在插入到目标表之前使用 SQL 进行诸如查找和生成代理键之类的转换。
这是其他人目前正在做的事情吗?是否有值得花钱的 ETL 工具使这更容易?
在 oracle 中,我可以:
Alter table table_name
modify column_name datatype;
Run Code Online (Sandbox Code Playgroud)
这在红移数据库中可能吗?
我有一个执行大量重复工作的查询:
SELECT visitor_id, '1'::text AS filter
FROM events
WHERE id IN (SELECT event_id FROM params
WHERE key = 'utm_campaign' AND value = 'campaign_one')
AND id IN (SELECT event_id FROM params
WHERE key = 'utm_source' AND value = 'facebook')
GROUP BY visitor_id
UNION ALL
SELECT visitor_id, '2'::text AS filter
FROM events
WHERE id IN (SELECT event_id FROM params
WHERE key = 'utm_campaign' AND value = 'campaign_two')
AND id IN (SELECT event_id FROM params
WHERE key = 'utm_source' AND value = 'facebook') …Run Code Online (Sandbox Code Playgroud) 我刚刚开始测试 AWS Redshift 并使用AWS 示例数据填充单个节点。
查询包含 10 行或约 400 行的表大约需要 2 秒(未缓存)。
我不确定我是否误解了什么,但我认为这会快得多。我在这里缺少什么吗?
谢谢!任何反馈表示赞赏。
我想在每笔交易中存储用户购买的自定义标签,例如,如果用户购买了鞋子,那么标签是 "SPORTS", "NIKE", SHOES, COLOUR_BLACK, SIZE_12,..
这些标签是有兴趣查询以了解销售情况的卖家。
我的想法是,当新标签出现时,为该标签创建新代码(类似于哈希码但顺序),代码从"a-z"26 个字母开始,然后"aa, ab, ac...zz"继续。现在,将一笔交易中给出的所有标签保存在tag (varchar)用 分隔的一列中"|"。
让我们假设映射是(在应用程序级别)
"SPORTS" = a
"TENNIS" = b
"CRICKET" = c
...
...
"NIKE" = z //Brands company
"ADIDAS" = aa
"WOODLAND" = ab
...
...
SHOES = ay
...
...
COLOUR_BLACK = bc
COLOUR_RED = bd
COLOUR_BLUE = be
...
SIZE_12 = cq
...
Run Code Online (Sandbox Code Playgroud)
所以存储上面的购买交易,标签会像tag="|a|z|ay|bc|cq|"现在允许卖家通过添加WHERE条件来搜索售出的鞋子数量tag LIKE %|ay|%。现在的问题是我不能将索引(redshift db 中的排序键)用于“LIKE 以 % 开头”。那么如何解决这个问题,因为我可能有 1 …
对于一些测试和开发工作,我们希望能够定期克隆现有的 RedShift 数据库(所有模式和所有数据)。类似于备份还原的东西。
我能找到的最好的方法是创建整个集群的快照,这在目前是不切实际的。
我们确实有用于创建数据库和架构的脚本,但我们没有用于从另一个 AWS RedShfit 数据库填充表的简单/整洁的机制。 (我们发现我们不能使用,INSERT INTO db_new.schema.table SELECT * FROM db_old.schema.table因为不支持跨数据库语法)
有没有人有什么建议?
RDS版本:i686-pc-linux-gnu上的PostgreSQL 8.0.2,由GCC gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)编译,Redshift 1.0.1161
我已经为这个问题苦苦挣扎了几天,我在此处和 AWS 论坛找到的所有解决方案都不适合我。
基本上我正在尝试删除一个组。该组中没有用户(尽管根据 AWS 文档,这应该不重要)。
我已撤销对数据库、架构、表和函数的所有权限。它们不是 pg_tables、pg_views、pg_namespace 或 pg_database 中 ACL 的所有者或一部分。
它们也不是 pg_default_acl 中 ACL 的一部分。
当我运行时DROP GROUP my_group;,我收到以下错误:
[Amazon](500310) Invalid operation: group "my_group" cannot be dropped because some objects depend on it Details: privileges for default privileges on new relations belonging to user dwowner in schema changehistory privileges for default privileges on new relations belonging to user dwowner in schema stage privileges for default privileges …
redshift ×10
performance ×2
amazon-rds ×1
aws ×1
backup ×1
eav ×1
etl ×1
index ×1
index-tuning ×1
permissions ×1
restore ×1
star-schema ×1