Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

ODBC接続時に抽出されるデータについて

掲題の内容について相談させてください。

QlikViewからOracleにODBC接続しデータ取得を行っているのですが、

データを見てみると本来10桁のコードが4桁や5桁、6桁といった形で取り込まれる場合が出てきてしまっています。

現状DB管理者側では正常に全て10桁でデータを参照できる状態です。

-----------------------------------------------------------------

【テストした内容】

① カート番号を指定してデータを取得

 ====================

 <<ロードスクリプト>>

 SQL SELECT *

 FROM ○○."ORDER"

 Where CART_NO IN ('0001111111', '0002222222', …);

 ====================

 <<実行結果>>

 CART_NO      PRODUCT_CD

 0001111111     0000123456

 0002222222     0000345678

 0002222222     0000567890

 ====================

 ⇒全PRODUCT_CD が10桁で正常に取得される

② 全量取得、QlikView上で絞り込み

 ====================

 <<ロードスクリプト>>

 SQL SELECT *

 FROM ○○."ORDER";

 ====================

 <<実行結果>>

 CART_NO      PRODUCT_CD

 0001111111     123456

 0002222222     345678

 0002222222     0000567890

 ====================

 ⇒一部のPRODUCT_CDの桁数が変動する

  ゼロパディングされた部分が削られている模様

-----------------------------------------------------------------

皆様の中で同様の事象をご覧になられたことのある方はいらっしゃいますか?

アドバイスをいただければ幸いです。

--- 環境 ---

【DB】

 種類      :Oracle

 バージョン:11.2

使用ドライバ

instantclient-odbc-windows.x64-11.2.0.4.0

【QlikView】

11.20.12904.0 SR12 64-bit

【QlikView Server OS】

Windows Server 2012 R2 Standard

Labels (3)
1 Solution

Accepted Solutions
Anonymous
Not applicable
Author

本件、解決しましたので情報共有です。


改めてデータを精査したところ、

現行システム(10桁)になる以前の過去システムから移行したデータに

同一の数値になるデータ(0000123456⇒123456)が混在していることを確認しました。

過去システム側のデータ(123456)を先に読み込んでいたために

既存システム側のデータも同じパターンに集約されて取り込まれていたようです。

並行して質問を投げていたサポートからも下記のようにご回答をいただいています。

----------------------------------------------

QlikViewは処理の高速化と使用メモリー量の抑制の為、

最初に取り込みましたデータパターンにより、それ以降の

同じ数値として扱われるデータは同一のパターンとして

内部的に取り扱われます。

例えば以下の順で取り込まれましたデータは

a,0002

b,02

c,2

以下の様にQlikView内部に保持されます。

a,0002

b,0002

c,0002

これが以下の順でデータが取り込まれた場合

a,2

b,02

c,0002

QlikView内部では以下の様に保持されます。

a,2

b,2

c,2

この動作に対してデータをテキストとして取り込むことにより

回避可能でございます。

----------------------------------------------

View solution in original post

1 Reply
Anonymous
Not applicable
Author

本件、解決しましたので情報共有です。


改めてデータを精査したところ、

現行システム(10桁)になる以前の過去システムから移行したデータに

同一の数値になるデータ(0000123456⇒123456)が混在していることを確認しました。

過去システム側のデータ(123456)を先に読み込んでいたために

既存システム側のデータも同じパターンに集約されて取り込まれていたようです。

並行して質問を投げていたサポートからも下記のようにご回答をいただいています。

----------------------------------------------

QlikViewは処理の高速化と使用メモリー量の抑制の為、

最初に取り込みましたデータパターンにより、それ以降の

同じ数値として扱われるデータは同一のパターンとして

内部的に取り扱われます。

例えば以下の順で取り込まれましたデータは

a,0002

b,02

c,2

以下の様にQlikView内部に保持されます。

a,0002

b,0002

c,0002

これが以下の順でデータが取り込まれた場合

a,2

b,02

c,0002

QlikView内部では以下の様に保持されます。

a,2

b,2

c,2

この動作に対してデータをテキストとして取り込むことにより

回避可能でございます。

----------------------------------------------