标签: netezza

数据仓库:一个数据库还是多个?

在我的新公司,他们将与数据仓库相关的所有数据(包括导入、暂存、审计、维度和事实表)保存在同一个物理数据库中。

我已经成为数据库开发人员多年了,这种功能和形式的整合似乎与我所知道的一切背道而驰。

它似乎使安全、备份/恢复和性能管理问题更加需要人工处理。

这是行业内的做法吗?是否有充分的理由去做或不做?

该平台是 Netezza。大小以 TB 为单位,数亿行。

我希望从这个问题的答案中得到的是对这条道路是对是错的深刻理解。根据您的经验,如果这是一条会给我们带来麻烦的道路,我应该重点讨论哪些问题。如果这没什么大不了的,那么我也想知道。

database-design data-warehouse netezza

5
推荐指数
1
解决办法
4286
查看次数

Netezza Sql查询

我有一个Netezza数据库中的表列表,我想获得每个表的主键名称.

任何人都可以提供我的查询.

sql netezza

5
推荐指数
1
解决办法
1万
查看次数

Netezza中的子查询

我正在尝试将SQL 11从Oracle 11 G移植到Netezza.

这是我在Oracle中的查询:

SELECT
    ID, TEACHERID, CLASS, SECTION, MAJOR, SUPERVISOR, COURSE, SCORE, SCOREDATE, 
    (select SCORE from STUDENT_SCORES d2 where d2.ID=d1.ID and d2.SCOREDATE (d1.SCOREDATE)-28 and d1.COURSE=d2.COURSE)  as PRIORSCORE, 
    (d1.SCOREDATE)-28 as PRIORSCOREDT,
    REMCD
FROM 
    STUDENT_SCORES d1
WHERE 
    TEACHERID='T1' AND SCOREDATE=(SELECT MAX(SCOREDATE) FROM STUDENT_SCORES WHERE TEACHERID='T1')
Run Code Online (Sandbox Code Playgroud)

当我在Netezza中运行它时出现错误:

ERROR:  (2) This form of correlated query is not supported - consider rewriting
Run Code Online (Sandbox Code Playgroud)

如何为Netezza重写此查询?请帮忙.

oracle netezza

5
推荐指数
1
解决办法
5482
查看次数

在Netezza中,我试图在case语句中使用序列,但序列值不会增加

以下是使用的序列创建语法:

CREATE SEQUENCE BD_ID_SEQ AS INTEGER
    START WITH 999
    INCREMENT BY 1
    NO MINVALUE 
    NO MAXVALUE 
    NO CYCLE;
Run Code Online (Sandbox Code Playgroud)

我有一个包含以下值记录的表:

b_id
-------
2547
NULL
2800
NULL
NULL
NULL
NULL

我执行以下操作:

select case 
          when b_id is NULL then cast((select next value for bd_id_seq) as character varying(10)) 
          else b_id 
       end b_id
from table1;
Run Code Online (Sandbox Code Playgroud)

结果是:

b_id
-------
2547
1000
2800
1000
1000
1000
1000

我在期待:

2547
1000
2800
1001
1002
1003
1004

任何想法为什么在case语句中序列似乎没有增加超过第一个值?谢谢,金妮

netezza sequence-sql

5
推荐指数
1
解决办法
4859
查看次数

在 ANSI SQL 中设置变量

我是 SQL 新手,一直在寻找一种在 ANSI SQL 中设置变量的方法。我有这个:

select * from table1
where first_date > '2014-01-01'
and where second_date = '2014-01-01'
and where third_date < '2014-01-01'
Run Code Online (Sandbox Code Playgroud)

但我希望有这样的事情:

set x = '2010-12-31'
select * from table1
where first_date > x
and where second_date = x
and where third_date < x
Run Code Online (Sandbox Code Playgroud)

我读过有关存储过程的内容,但对于看似简单的事情来说,这似乎有点矫枉过正。我正在 Netezza 上运行,但我想要一个也可以在其他数据库上运行的通用解决方案。

sql ansi-sql netezza

5
推荐指数
1
解决办法
6010
查看次数

在win 7上从Aginity工作台找到IBM netezza sql数据库上的表大小

我需要在win 7上从Aginity workbench在IBM netezza sql数据库中找到一个表大小.

我用过这个

 SELECT  * FROM _V_TABLE
 where tablename = 'my_table_name'
Run Code Online (Sandbox Code Playgroud)

但是,没有关于表大小的信息.

我在Aginity中右键单击了表名,但是没有任何结果.

任何帮助,将不胜感激.

谢谢

sql database windows-7 netezza

5
推荐指数
1
解决办法
1万
查看次数

当前日期的 Netezza 日期函数 - 16 天

我想把今天的日期加上过去四个星期。有没有人知道 Netezza 中的这个功能?我下面的猜测是行不通的。另外,我不想提取日期。

 Select c.BUSINESS_UNIT_NBR, c.BUSINESS_UNIT_NAME, b.STORE_NBR, b.INV_CUST_ACNT_NBR,c.INV_CUST_NAME, a.NDC_NBR, a.GENERIC_NAME, a.INV_NBR, a.CONTRACT_ID, a.CONTRACT_NAME, a.ORD_DT, b.INV_DT, b.SHIP_DT, a.ORD_QTY, a.SHIPPED_QTY, a.INV_PRICE_AMT, a.INV_COST_AMT, a.MARKUP_MARKDOWN_PCT, a.INV_LINE_AMT
    from fct_dly_invoice_detail a, fct_dly_invoice_header b, dim_invoice_customer c
    where a.INV_HDR_SK = b.INV_HDR_SK
    and b.DIM_INV_CUST_SK = c.DIM_INV_CUST_SK
    and a.SRC_SYS_CD = 'ABC'
    and a.NDC_NBR is not null 
    **and b.inv_dt(current_date)-16**
    and b.store_nbr in (813, 1197, 2771, 3048, 3177, 3387, 3477, 3602, 3766, 3912, 4020, 4138, 4228, 4434, 4435, 4507, 4742, 4791, 5353, 5392, 5775, 5776, 5890, 6177, 6692, 6736, 6806, 7933, 9175, …
Run Code Online (Sandbox Code Playgroud)

netezza

5
推荐指数
1
解决办法
2万
查看次数

从 Pandas DataFrame 在 Netezza 上创建临时表

我希望将我的工作流程从 SAS 更改为 Python,到目前为止,除了一件非常重要的事情之外,我已经取得了相当大的成功。我不知道如何将 Pandas DataFrames 上传到我公司的 Netezza 以用于以后的查询。这实际上非常重要,因为我们有许多数据集可以上传并用于查询。

我有以下熊猫数据帧:

[In ]  df
[Out]
       col1  col2  col3  
    0     1     2     3
    1     4     5     6
    2     7     8     9
Run Code Online (Sandbox Code Playgroud)

我想通过 ODBC 连接将此 DataFrame 上传到我的 Netezza 盒子。连接已经建立如下:

import pyodbc
conn = pyodbc.connect("Driver=NetezzaSQL;Server=...;")
Run Code Online (Sandbox Code Playgroud)

我已将此连接与 Pandas 结合使用read_sql来提取数据并将其存储在 DataFrame 中。但是,我还没有弄清楚如何提取数据。在 SAS 中,我会执行以下操作:

proc sql _method;
connect to netezza as net_dw
(auth domain info goes here...)
execute( create temporary table my_table
                                ( col1   int,
                                  col2   int,
                                  col3   int ) distribute on (col1) by …
Run Code Online (Sandbox Code Playgroud)

python sql odbc netezza pandas

5
推荐指数
1
解决办法
1791
查看次数

执行SQL文件,其中多个语句以";"分隔 使用pyodbc

我目前正在编写一个脚本来使用Python运行多个SQL文件,在您提到替代方法之前有一些背景知识; 这是自动化脚本,Python是我在Windows 2008服务器上使用的唯一工具.我有一个适用于一组的脚本,但问题是当另一组有两个语句而不是一个由';'分隔时 这是我的代码:

import os
import pyodbc

print ("Connecting via ODBC")

conn = pyodbc.connect('DSN=dsn', autocommit=True)

print ("Connected!\n")

 inputdir = 'C:\\path'
cursor = conn.cursor()

for script in os.listdir(inputdir):

   with open(inputdir+'\\' + script,'r') as inserts:

       sqlScript = inserts.readlines()

       sql = (" ".join(sqlScript))

       cursor.execute(sql)

       print (script)

conn.close()

print ('Run Complete!')
Run Code Online (Sandbox Code Playgroud)

所以这段代码可以显示整个文件,但它只在";"之前执行一条语句.

任何帮助都会很棒!

谢谢.

python pyodbc netezza

5
推荐指数
2
解决办法
2万
查看次数

字符串编码/解码问题 - 从末尾缺少字符

NVARCHAR在我的数据库中有类型列.我无法在我的代码中将此列的内容转换为纯字符串.(我pyodbc用于数据库连接).

# This unicode string is returned by the database
>>> my_string = u'\u4157\u4347\u6e65\u6574\u2d72\u3430\u3931\u3530\u3731\u3539\u3533\u3631\u3630\u3530\u3330\u322d\u3130\u3036\u3036\u3135\u3432\u3538\u2d37\u3134\u3039\u352d'

# prints something in chineese 
>>> print my_string
??????????????????????????
Run Code Online (Sandbox Code Playgroud)

我离开的最近的是通过将其编码utf-16为:

>>> my_string.encode('utf-16')
'\xff\xfeWAGCenter-04190517953516060503-20160605124857-4190-5'
>>> print my_string.encode('utf-16')
??WAGCenter-04190517953516060503-20160605124857-4190-5
Run Code Online (Sandbox Code Playgroud)

但是,根据数据库中的值存储,我需要的实际值是:

WAGCenter-04190517953516060503-20160605124857-4190-51
Run Code Online (Sandbox Code Playgroud)

我试图用编码它utf-8,utf-16,ascii,utf-32但似乎没有任何工作.

有没有人知道我错过了什么?以及如何从中获得所需的结果my_string.

编辑:在转换为utf-16-le,我能够从开始删除不需要的字符,但仍然从一端丢失一个字符

>>> print t.encode('utf-16-le')
WAGCenter-04190517953516060503-20160605124857-4190-5
Run Code Online (Sandbox Code Playgroud)

在尝试其他一些列时,它正在工作.这个间歇性问题的原因可能是什么?

python encode pyodbc netezza python-2.7

5
推荐指数
1
解决办法
609
查看次数