...

Informatica Developer - 9.5.1

by user

on
Category: Documents
67

views

Report

Comments

Transcript

Informatica Developer - 9.5.1
Informatica Developer
(参照項目 9.5.1)
トランスフォーメーション言語
リファレンス
Informatica Developer トランスフォーメーション言語リファレンス
参照項目 9.5.1
12月 2012
著作権 1998-2012 Informatica. すべての権利を保留する.
本ソフトウェアおよびマニュアルには、Informatica Corporationの所有権下にある情報が収められています。これらは使用および開示の制
限等を定めた使用許諾契約のもとに提供され、著作権法により保護されています。本ソフトウェアのリバースエンジニアリングは禁じられて
います。本マニュアルのいかなる部分も、いかなる手段(電子的複写、写真複写、録音など)によっても、Informatica Corporation の事前
の承諾なしに複製または転載することは禁じられています。このソフトウェアは、米国および/または国際的な特許、およびその他の出願中
の特許によって保護されています。
合衆国政府によるソフトウェアの使用、複製または開示は、DFARS 227.7202-1(a)および227.7702-3(a)(1995年)、DFARS
252.227-7013(C)(1)(ii)(1988年10月)、FAR 12.212(a)(1995年)、FAR 52.227-19、またはFAR 52.227-14(ALT III)に記載されて
いるとおりに、当該ソフトウェア使用許諾契約に定められた制限によって規制されます。
本製品または本書の情報は、予告なしに変更されることがあります。お客様が本製品または本書内に問題を発見された場合は、書面にて当社
までお知らせください。
Informatica、Informatica Platform、Informatica Data Services、PowerCenter、PowerCenterRT、PowerCenter Connect、PowerCenter
Data Analyzer、PowerExchange、PowerMart、Metadata Manager、Informatica Data Quality、Informatica Data Explorer、Informatica
B2B Data Transformation、Informatica B2B Data Exchange、Informatica On Demand、Informatica Identity Resolution、Informatica
Application Information Lifecycle Management、Informatica Complex Event Processing、Ultra Messaging、およびInformatica Master
Data Managementは、Informatica Corporationの米国および世界中の管轄地での商標または登録商標です。その他のすべての企業名および製
品名は、それぞれの企業の商標または登録商標です。
本ソフトウェアまたはドキュメントの一部は、次のサードパーティが有する著作権に従います(ただし、これらに限定されません)。
Copyright DataDirect Technologies.All Rights Reserved.Copyright © Sun Microsystems.All Rights Reserved.Copyright © RSA
Security Inc. All Rights Reserved.Copyright © Ordinal Technology Corp. All rights reserved. Copyright © Aandacht c.v. All
rights reserved. Copyright Genivia, Inc. All rights reserved. Copyright Isomorphic Software. All Rights Reserved.Copyright ©
Meta Integration Technology, Inc. All rights reserved. Copyright © Intalio. All Rights Reserved.Copyright © Oracle. All
Rights Reserved.Copyright © Adobe Systems Incorporated. All Rights Reserved.Copyright © DataArt, Inc. All rights reserved.
Copyright © ComponentSource. All Rights Reserved.Copyright © Microsoft Corporation. All Rights Reserved.Copyright (C) Rogue
Wave Software, Inc. All rights reserved. Copyright © Teradata Corporation. All Rights Reserved.Copyright © Yahoo! Inc. All
rights reserved. Copyright © Glyph & Cog, LLC. All Rights Reserved.Copyright (C) Thinkmap, Inc. All rights reserved. Copyright
(C) Clearpace Software Limited. All Rights Reserved.Copyright (C) Information Builders, Inc. All rights reserved. Copyright
(C) OSS Nokalva, Inc. All rights reserved. Copyright Edifecs, Inc. All rights reserved. Copyright Cleo Communications, Inc.
All rights reserved.Copyright © International Organization for Standardization 1986. All Rights Reserved.Copyright © ejtechnologies GmbH. All Rights Reserved.Copyright © Jaspersoft Corporation. All Rights Reserved.Copyright (c) is International
Business Machines Corporation. All Rights Reserved.Copyright (c) yWorks GmbH. All Rights Reserved.Copyright (c) Lucent
Technologies 1997. All Rights Reserved.Copyright (c) 1986 by University of Toronto. All Rights Reserved.Copyright (c)
1998-2003 Daniel Veillard. All Rights Reserved.Copyright (c) 2001-2004 Unicode, Inc. Copyright 1994-1999 IBM Corp. All rights
reserved. Copyright (c) MicroQuill Software Publishing, Inc. All rights reserved. Copyright (c) PassMark Software Pty Ltd. All
rights reserved.
本製品には、Apache Software Foundation(http://www.apache.org/)によって開発されたソフトウェア、およびApache License, Version
2.0(「ライセンス」)の下に許諾されたその他のソフトウェアが含まれています。ライセンスのコピーはhttp://www.apache.org/licenses/
LICENSE-2.0から入手することができます。適用法にて要求されないか書面にて合意されない限り、ライセンスの下に配布されるソフトウェ
アは「現状のまま」で配布され、明示的あるいは黙示的かを問わず、いかなる種類の保証も行われません。ライセンス下での許諾および制限
を定める具体的文言については、ライセンスを参照してください。
本製品には、Mozilla(http://www.mozilla.org/)によって開発されたソフトウェア、ソフトウェアcopyright The JBoss Group, LLC, all
rights reserved、ソフトウェアcopyright, Red Hat Middleware, LLC, all rights reserved、Copyright © 1999-2006 by Bruno Lowagie
and Paulo SoaresおよびGNU Lesser General Public License Agreement(http://www.gnu.org/licenses/lgpl.htmlを参照)に基づいて許諾
されたその他のソフトウェアが含まれています。資料は、Informaticaが無料で提供しており、一切の保証を伴わない「現状渡し」で提供さ
れるものとし、Informatica Corporationは市場性および特定の目的の適合性の黙示の保証などを含めて、一切の明示的及び黙示的保証の責
任を負いません。
製品には、ワシントン大学、カリフォルニア大学アーバイン校、およびバンダービルト大学のDouglas C.Schmidtおよび同氏のリサーチグル
ープが著作権を持つACE(TM)およびTAO(TM)ソフトウェアが含まれています。Copyright © 1993-2006, all rights reserved.
本製品には、OpenSSL Toolkitを使用するためにOpenSSL Projectが開発したソフトウェア(copyright The OpenSSL Project.All Rights
Reserved)が含まれています。また、このソフトウェアの再配布は、http://www.openssl.orgおよびhttp://www.openssl.org/source/
license.htmlにある使用条件に従います。
本ソフトウェアには、CurlソフトウェアCopyright 1996-2007, Daniel Stenberg, <[email protected]>が含まれます。All Rights Reserved.本
ソフトウェアに関する許諾および制限は、http://curl.haxx.se/docs/copyright.htmlにある使用条件に従います。すべてのコピーに上記の
著作権情報とこの許諾情報が記載されている場合、目的に応じて、本ソフトウェアの使用、コピー、変更、ならびに配布が有償または無償で
許可されます。
本製品には、ソフトウェアcopyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.が含まれます。本ソフトウェアに関する許諾お
よび制限は、http://www.dom4j.org/license.htmlにある使用条件に従います。
製品には、ソフトウェアcopyright (C) 2004-2007, The Dojo Foundationが含まれます。All Rights Reserved.本ソフトウェアに関する許諾
および制限は、http://dojotoolkit.org/licenseにある使用条件に従います。
本製品には、ICUソフトウェアcopyright International Business Machines Corporationおよび他のソフトウェアが含まれます。All Rights
Reserved.本ソフトウェアに関する許諾および制限は、http://source.icu-project.org/repos/icu/icu/trunk/license.htmlにある使用条件
に従います。
本製品には、ソフトウェアcopyright © 1996-2006 Per Bothnerが含まれます。All Rights Reserved.お客様がこのようなソフトウェアを使
用するための権利は、ライセンスで規定されています。http://www.gnu.org/software/kawa/Software-License.htmlを参照してください。
本製品には、OSSP UUIDソフトウェアCopyright (C) 2002 Ralf S. Engelschall, Copyright (C) 2002 The OSSP Project Copyright (C)
2002 Cable & Wireless Deutschlandが含まれます。本ソフトウェアに関する許諾および制限は、http://www.opensource.org/licenses/mitlicense.phpにある使用条件に従います。
本製品には、Boost(http://www.boost.org/)によって開発されたソフトウェアまたはBoostソフトウェアライセンスの下で開発されたソフ
トウェアが含まれています。本ソフトウェアに関する許諾および制限は、http://www.boost.org/LICENSE_1_0.txtにある使用条件に従いま
す。
本製品には、ソフトウェアcopyright © 1997-2007 University of Cambridgeが含まれます。本ソフトウェアに関する許諾および制限は、
http://www.pcre.org/license.txtにある使用条件に従います。
本製品には、ソフトウェアcopyright (C) 2007 The Eclipse Foundationが含まれます。All Rights Reserved.本ソフトウェアに関する許諾
および制限は、http://www.eclipse.org/org/documents/epl-v10.phpにある使用条件に従います。
本製品には、http://www.tcl.tk/software/tcltk/license.html、http://www.bosrup.com/web/overlib/?License、http://www.stlport.org/
doc/license.html、http://www.asm.ow2.org/license.html、http://www.cryptix.org/LICENSE.TXT、http://hsqldb.org/web/
hsqlLicense.html、http://httpunit.sourceforge.net/doc/license.html、http://jung.sourceforge.net/license.txt、http://
www.gzip.org/zlib/zlib_license.html、http://www.openldap.org/software/release/license.html、http://www.libssh2.org、http://
slf4j.org/license.html、http://www.sente.ch/software/OpenSourceLicense.html、http://fusesource.com/downloads/licenseagreements/fuse-message-broker-v-5-3-license-agreement、http://antlr.org/license.html、http://aopalliance.sourceforge.net/、
http://www.bouncycastle.org/licence.html、http://www.jgraph.com/jgraphdownload.html、http://www.jcraft.com/jsch/LICENSE.txt、
http://jotm.objectweb.org/bsd_license.html、http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231、http://
developer.apple.com/library/mac/#samplecode/HelpHook/Listings/HelpHook_java.html、http://www.jcraft.com/jsch/LICENSE.txt、
http://nanoxml.sourceforge.net/orig/copyright.html、http://www.json.org/license.html、http://forge.ow2.org/projects/
javaservice/、http://www.postgresql.org/about/licence.html、http://www.sqlite.org/copyright.html、http://www.tcl.tk/software/
tcltk/license.html、http://www.jaxen.org/faq.html、http://www.jdom.org/docs/faq.html、http://www.iodbc.org/dataspace/iodbc/
wiki/iODBC/License、http://www.keplerproject.org/md5/license.html、http://www.toedter.com/en/jcalendar/license.html、http://
www.edankert.com/bounce/index.html、http://www.net-snmp.org/about/license.html、http://www.openmdx.org/#FAQ、http://
www.php.net/license/3_01.txt、http://srp.stanford.edu/license.txt、http://www.schneier.com/blowfish.html、http://
www.jmock.org/license.html、およびhttp://xsom.java.net/基づいて許諾されたソフトウェアが含まれています。
本製品には、Academic Free License(http://www.opensource.org/licenses/afl-3.0.php)、Common Development and Distribution
License(http://www.opensource.org/licenses/cddl1.php)、Common Public License(http://www.opensource.org/licenses/
cpl1.0.php)、Sun Binary Code License Agreement Supplemental License Terms、BSD License(http://www.opensource.org/licenses/
bsd-license.php)、MIT License(http://www.opensource.org/licenses/mit-license.php)、およびArtistic License(http://
www.opensource.org/licenses/artistic-license-1.0)に基づいて許諾されたソフトウェアが含まれています。
本製品には、ソフトウェアcopyright © 2003-2006 Joe WaInes, 2006-2007 XStream Committersが含まれています。All Rights Reserved.本
ソフトウェアに関する許諾および制限は、http://j.org/license.htmlにある使用条件に従います。本製品には、Indiana University
Extreme! Labによって開発されたソフトウェアが含まれています。詳細については、http://www.extreme.indiana.edu/を参照してくださ
い。
本ソフトウェアは、米国の特許番号5,794,246、6,014,670、6,016,501、6,029,178、6,032,158、6,035,307、6,044,374、6,092,086、
6,208,990、6,339,775、6,640,226、6,789,096、6,820,077、6,823,373、6,850,947、6,895,471、7,117,215、7,162,643、7,243,110、
7,254,590、7,281,001、7,421,458、7,496,588、7,523,121、7,584,422、7,676,516、7,720,842、7,721,270、および7,774,791、および国際
的な特許、ならびにその他の出願中の特許によって保護されています。
免責: 本文書は、一切の保証を伴わない「現状渡し」で提供されるものとし、Informatica Corporationは他社の権利の非侵害、市場性およ
び特定の目的への適合性の黙示の保証などを含めて、一切の明示的および黙示的保証の責任を負いません。Informatica Corporationでは、
本ソフトウェアまたはドキュメントに誤りのないことを保証していません。本ソフトウェアまたはドキュメントに記載されている情報には、
技術的に不正確な記述や誤植が含まれる場合があります。本ソフトウェアまたはドキュメントの情報は、予告なしに変更されることがありま
す。
特記事項
このInformatica製品(以下「ソフトウェア」)には、Progress Software Corporation(以下「DataDirect」)の事業子会社である
DataDirect Technologiesからの特定のドライバ(以下「DataDirectドライバ」)が含まれています。DataDirectドライバには、次の用語お
よび条件が適用されます。
1.DataDirectドライバは、特定物として現存するままの状態で提供され、商品性の保証、特定目的適合性の保証および法律上の瑕疵担保
責任を含むすべての明示もしくは黙示の保証責任を負わないものとします。国または地域によっては、法律の強行規定により、保証責任
の制限が禁じられる場合、強行規定の制限を受けるものとします。
2.DataDirectまたは第三者は、予見の有無を問わず発生したODBCドライバの使用に関するいかなる直接的、間接的、偶発的、特別、ある
いは結果的損害に対して責任を負わないものとします。本制限事項は、すべての訴訟原因に適用されます。訴訟原因には、契約違反、保
証違反、過失、厳格責任、詐称、その他の不法行為を含みますが、これらに限るものではありません。
Part Number: IN-TLR-95100-0001
目次
序文.............................................. vi
Informaticaのリソース. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vi
Informaticaカスタマポータル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
Informaticaのマニュアル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
InformaticaのWebサイト. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
Informatica How-To Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Informatica Knowledge Base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Informatica Multimedia Knowledge Base. . . . . . . . . . . . . . . . . . . . . vii
Informaticaグローバルカスタマサポート. . . . . . . . . . . . . . . . . . . . . vii
第 1 章 : トランスフォーメーション言語............. 1
トランスフォーメーション言語の概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
トランスフォーメーション言語の構成要素. . . . . . . . . . . . . . . . . . . . . . 1
国際化およびトランスフォーメーション言語. . . . . . . . . . . . . . . . . . . . . 2
式の構文. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
式の構成要素. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
式の構文のルールとガイドライン. . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
式へのコメント追加. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
予約語. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
第 2 章 : 定数..................................... 7
DD_DELETE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
DD_INSERT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
DD_REJECT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
DD_UPDATE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
FALSE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
NULL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
ブール式におけるNull値の扱い. . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
比較式におけるNULL値の扱い. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
集計関数におけるNULL値. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
目次
i
フィルタ条件におけるNULL値. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
NULLと演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
TRUE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
第 3 章 : 演算子.................................. 12
演算子の優先順位. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
算術演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
文字列演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
NULL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
比較演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
論理演算子. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
NULL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
第 4 章 : 変数.................................... 17
ビルトイン変数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
SYSDATE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
ローカル変数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
第 5 章 : 日付.................................... 19
日付の概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Date/Timeデータ型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
ユリウス日、修正ユリウス日、およびグレゴリオ暦. . . . . . . . . . . . . . . 20
西暦2000年の日付. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
リレーショナルデーターベースの日付. . . . . . . . . . . . . . . . . . . . . . . . 22
フラットファイルの日付. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
デフォルトの日付形式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
日付形式文字列. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
TO_CHAR形式文字列. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
TO_DATEおよびIS_DATE形式文字列. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
日付形式文字列のルールとガイドライン. . . . . . . . . . . . . . . . . . . . . . . 30
例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
日付の算術演算について. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
第 6 章 : 関数.................................... 32
関数の分類. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
集計関数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
集計関数とNULL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
ii
目次
文字関数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
変換関数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
データークレンジング関数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
日付関数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
エンコード関数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
財務関数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
数値関数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
科学関数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
特殊関数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
文字列関数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
テスト関数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
ABORT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
ABS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
ADD_TO_DATE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
AES_DECRYPT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
AES_ENCRYPT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
ASCII. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
AVG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
CEIL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
CHOOSE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
CHR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
CHRCODE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
COMPRESS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
CONCAT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
CONVERT_BASE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
COS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
COSH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
COUNT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
CRC32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
CUME. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
DATE_COMPARE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
DATE_DIFF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
DEC_BASE64. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
DECODE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
DECOMPRESS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
ENC_BASE64. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
ERROR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
EXP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
FIRST. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
FLOOR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
目次
iii
FV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
GET_DATE_PART. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
GREATEST. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
IIF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
IN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
INDEXOF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
INITCAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
INSTR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
ISNULL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
IS_DATE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
IS_NUMBER. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
IS_SPACES. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
LAST. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
LAST_DAY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
LEAST. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
LENGTH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
LN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
LOG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
LOWER. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
LPAD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
LTRIM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
MAKE_DATE_TIME. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
MAX (Dates). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
MAX (Numbers). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
MAX (String). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
MD5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
MEDIAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
METAPHONE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
104
MIN (Dates). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
MIN (Numbers). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
110
MIN (String). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
MOD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
MOVINGAVG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
114
MOVINGSUM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
115
NPER. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
PERCENTILE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
PMT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
POWER. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
119
PV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
120
RAND. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
iv
目次
RATE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
REG_EXTRACT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
REG_MATCH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
REG_REPLACE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
REPLACECHR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
REPLACESTR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
REVERSE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
ROUND (Dates). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
ROUND(数値). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
RPAD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
RTRIM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
SET_DATE_PART. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
SIGN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
SIN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
SINH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
SOUNDEX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
SQRT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
STDDEV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
SUBSTR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
SUM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
SYSTIMESTAMP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
TAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
TANH. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
TO_BIGINT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
TO_CHAR (Dates). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
TO_CHAR(数値). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
TO_DATE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
TO_DECIMAL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
TO_FLOAT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
TO_INTEGER. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
TRUNC (Dates). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
TRUNC(数値). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
UPPER. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
VARIANCE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
索引............................................. 176
目次
v
序文
『Informaticaデベロッパ』は、マッピングの作成を担当する開発者向けの資料です。
『Informaticaデベロッパ』は、読者がSQL、リレーショナルデータベースの概念、および
使用するアプリケーションのインタフェース条件に関して十分な知識を持っていることを
前提にしています。
Informaticaのリソース
Informaticaカスタマポータル
Informaticaのユーザーとして、Informaticaカスタマポータルサイト
(http://mysupport.informatica.com)にアクセスできます。このサイトには、製品情
報、ユーザーグループ情報、ニュースレター、Informaticaカスタマサポート事例管理シス
テム(ATLAS)へのアクセス、Informatica How-To Library、Informatica Knowledge
Base、Informatica Product Documentation、Informaticaユーザーグループコミュニティ
へのアクセスが含まれています。
Informaticaのマニュアル
Informaticaのマニュアルチームは、正確で役に立つマニュアルの作成に努めています。こ
のマニュアルに関する質問、コメント、ご意見の電子メールの送付先は、Informaticaマニ
ュアルチーム([email protected])です。 お客様のフィードバック
は、マニュアルの改良に利用させていただきます。コメントに返信をご希望のお客様は、
その旨をお知らせください。
マニュアルチームは、必要に応じてマニュアルを更新します。製品の最新のマニュアルを
入手するには、http://mysupport.informatica.comから製品マニュアルにアクセスしま
す。
InformaticaのWebサイト
Informatica社のWebサイトは、http://www.informatica.comからアクセスできます。この
サイトでは、Informatica社の概要と沿革、今後のイベント、営業拠点などの情報を提供し
ています。また、製品情報やパートナー情報もあります。サービス関連のページには、テ
vi
クニカルサポート、トレーニングと教育、および実装に関するサービスの重要な情報を掲
載しています。
Informatica How-To Library
Informaticaのユーザーとして、Informatica How-To Library
(http://mysupport.informatica.com)にアクセスできます。How-To Libraryは、
Informaticaの製品および機能についての詳細を確認できるリソースのコレクションです。
一般的な問題に対するソリューションを提供したり、機能や動作を比較したり、特定の実
際のタスクを実行するための方法を示したりする記事やインタラクティブなデモンストレ
ーションが含まれています。
Informatica Knowledge Base
Informaticaのユーザーとして、Informatica Knowledge Base
(http://mysupport.informatica.com)にアクセスできます。このKnowledge Baseを利用
して、Informatica製品に関する既知の技術的問題の解決策を検索することができます。ま
た、FAQ(よくある質問)の答え、技術的ホワイトペーパー、技術的なヒントも得られま
す。Knowledge Baseに関する質問、コメント、ご意見の電子メールの送付先は、
Informatica Knowledge Baseチーム([email protected])です。
Informatica Multimedia Knowledge Base
Informaticaのユーザとして、Informatica Multimedia Knowledge Base
(http://mysupport.informatica.com)にアクセスできます。Multimedia Knowledge
Baseは、一般的な概念の理解を助け、具体的な各タスクの実行をガイドする教育用のマル
チメディアファイルの集まりです。 Multimedia Knowledge Baseに関する質問、コメン
ト、ご意見の電子メールの送付先は、Informatica Knowledge Baseチーム
([email protected])です。
Informaticaグローバルカスタマサポート
電話、またはオンラインサポートからカスタマサポートセンターに連絡できます。 オンラ
インサポートのご利用には、ユーザ名とパスワードが必要です。
http://mysupport.informatica.comから、ユーザー名とパスワードが入手できます。
電話によるInformaticaグローバルカスタマサポートへの問い合わせ先は次のとおりです。
北米/南米
ヨーロッパ/中東/アフ
リカ
アジア/オーストラ
リア
フリーダイヤル
フリーダイヤル
フリーダイヤル
ブラジル: 0800 891
0202
フランス: 0805 804632
オーストラリア: 1
800 151 830
メキシコ: 001 888 209
8853
イタリア: 800 915 985
北米: +1 877 463 2435
ドイツ: 0800 5891281
オランダ: 0800 2300001
ニュージーランド:
09 9 128 901
ポルトガル: 800 208 360
スペイン: 900 813 166
はじめに
vii
北米/南米
ヨーロッパ/中東/アフ
リカ
アジア/オーストラ
リア
スイス: 0800 463 200
有料(標準料金)
英国: 0800 023 4632
インド:+91 80 4112
5738
有料(標準料金)
ベルギー: +31 30 6022
797
フランス: +33 1 4138
9226
ドイツ:+49 1805 702 702
オランダ:+31 306 022
797
英国: +44 1628 511445
viii
序文
第 1 章
トランスフォーメーション言
語
この章では、以下の項目について説明します。
¨ トランスフォーメーション言語の概要, 1 ページ
¨ 式の構文, 3 ページ
¨ 式へのコメント追加, 5 ページ
¨ 予約語, 6 ページ
トランスフォーメーション言語の概要
Informatica デベロッパでは、ソースデータを変換するために、SQLに似た関数を含むトラ
ンスフォーメーション言語が提供されています。これらの関数を使用して式を記述しま
す。
式はデータを変更します。または、データが条件に一致するかテストします。たとえば、
AVG関数を使用して従業員の平均給与を計算したり、SUM関数を使用して特定の支店の総売
上高を計算したりします。
この場合、ORDERSなどのポートや、10などの数値定数のみを含む単純な式を作成できま
す。また、複雑な式として、関数の中に別の関数をネストしたり、トランスフォーメーシ
ョン言語演算子を使って異なる複数のポートを結合したりすることもできます。
トランスフォーメーション言語の構成要素
トランスフォーメーション言語には以下の構成要素が含まれ、ユーザーはこれらを使用し
て簡単なトランスフォーメーション式から複雑なトランスフォーメーション式まで作成す
ることができます。
¨ 関数。マッピングでデータを変更するために、SQLに似た関数が100個以上用意されてい
ます。
¨ 演算子。トランスフォーメーション演算子を使用することにより、トランスフォーメー
ション式で算術演算を実行したり、データを結合または比較できます。
1
¨ 定数。一定の値を保つ値を参照するために、TRUEなどの定数が用意されています。
¨ マッピングパラメータ。各州のサービス税率のような、マッピングまたはマッピングの
実行を通して一定の値を保つ値を参照するために、マッピングまたはマップレットで使
用するマッピングパラメータを作成します。
¨ ビルトイン変数およびローカル変数。 ビルトイン変数を使用して、変化する値(シス
テム日付など)を参照する式を記述できます。 トランスフォーメーション内でローカ
ル変数を作成することもできます。
¨ 戻り値。Lookupトランスフォーメーションからの戻り値が含まれる式を記述することも
できます。
国際化およびトランスフォーメーション言語
トランスフォーメーション言語の関数は、ASCIIまたはUnicodeのいずれかのデータ移動モ
ードで文字データを取り扱うことができます。Unicodeモードは、 マルチバイトデータを扱
う場合に使用します。以下の関数およびトランスフォーメーションは、Data Integration
Serviceのコードページおよびデータ移動モードに応じて異なる戻り値を返します。
¨ INITCAP
¨ LOWER
¨ UPPER
¨ MIN (Date)
¨ MIN (Number)
¨ MIN (String)
¨ MAX (Date)
¨ MAX (Number)
¨ MAX (String)
¨ 条件文を使って文字列を比較する関数(IIF、DECODEなど)
MINとMAXの戻り値は、Data Integration Serviceのコードページに関連したソート順によ
っても異なります。
式のエディタを使って無効な式を検査すると、ダイアログボックスで式の中にエラーを示
す“>>>>”が表示されます。このインジケータは、式の中でエラーを含む部分の左側に表
示されます。たとえば、式a = b + cのcの部分にエラーがある場合、エラーメッセージは
次のように表示されます。
a = b +
>>>> c
文字データを評価するトランスフォーメーション言語関数は、バイト基準ではなく、文字
基準で処理を行います。たとえば、LENGTH関数が返すのは文字列中の文字数であり、バイ
ト数ではありません。LOWER関数は、Data Integration Serviceのコードページに従って
小文字の文字列を返します。
2
章 1: トランスフォーメーション言語
式の構文
トランスフォーメーション言語は標準SQLに基づいていますが、2つの言語には異なる点も
あります。たとえば、SQLは集計関数に対してキーワードALLおよびDISTINCTをサポートし
ていますが、トランスフォーメーション言語ではサポートしていません。一方、トランス
フォーメーション言語は集計関数に対してオプションのフィルタ条件をサポートしていま
すが、SQLではサポートしていません。
簡単な式としては、1つのポート(ORDERSなど)または1つの数値リテラル(10など)だけ
からなる式があります。また、複雑な式として、関数の中に別の関数をネストしたり、ト
ランスフォーメーション言語演算子を使って異なる複数のカラムを結合したりすることも
できます。
式の構成要素
式には、以下の要素を組み合わせることができます。
¨ ポート(入力、入出力、変数)
¨ 文字列リテラル、数値リテラル
¨ 定数
¨ 関数
¨ ビルトイン変数とローカル変数
¨ マッピングパラメータ
¨ 演算子
¨ 戻り値
ポートと戻り値
コネクトされていないトランスフォーメーションからのポートまたは戻り値を含む式を記
述する場合は、次の表の参照修飾子を使用します。
参照修飾子
説明
:LKP
コネクトされていないLookupトランスフォーメーションからの戻
り値を含む式を作成する場合に必要です。一般的な構文は次のと
おりです。
:LKP.lookup_transformation(argument1, argument2, ...)
引数はルックアップ条件で使用されるローカルポートです。引数
の順序はトランスフォーメーションにおけるポートの順序と一致
しなければなりません。ローカルポートのデータ型は、ルックア
ップ条件で使用されるLookupポートのデータ型に必ず一致してい
なければなりません。
文字列リテラルと数値リテラル
式には数値リテラルまたは文字列リテラルを含むことができます。
式の構文
3
文字列リテラルは必ず一重引用符で囲んでください。以下に例を示します。
'Alice Davis'
文字列リテラルでは大文字と小文字が区別されます。一重引用符を除くすべての文字を使
用できます。 たとえば、次のような文字列は許されません。
'Joan's car'
一重引用符を含む文字列を返すには、CHR関数を使用します。
'Joan' || CHR(39) || 's car'
数値リテラルでは一重引用符を使用しないでください。含めたい数値をそのまま入力しま
す。以下に例を示します。
.05
または
$$Sales_Tax
式の構文のルールとガイドライン
式を記述する場合、以下のルールおよびガイドラインを適用します。
¨ Aggregatorトランスフォーメーションには、単一レベルの集計関数とネストされた集計
関数の両方を含めることはできません。
¨ 単一レベルの関数とネストされた関数の両方を作成する必要がある場合は、別々の
Aggregatorトランスフォーメーションを作成してください。
¨ 数字式では文字列を使用できません。
たとえば、1 + '1'という式は無効です。加算は数値データ型でしか実行できないからで
す。整数と文字列は加算できません。
¨ 文字列は数値パラメータとして使用できません。
たとえば、式SUBSTR(TEXT_VAL, '1', 10)の場合、SUBSTR関数は開始位置に文字列ではなく整
数値が必要なため、無効になります。
¨ 比較演算子を使用する場合は、データ型を混在させることはできません。
たとえば、123.4 = '123.4'という式は無効です。小数と文字列を比較しているからです。
¨ 式に渡すことができる値は、ポートからの値、文字列リテラルまたは数値リテラル、
Lookupトランスフォーメーションからの値、または他の式の結果です。
¨ 式のエディタの[ポート]タブを使用して、式にポート名を入力します。接続されたト
ランスフォーメーションのポート名を変更すると、Developerツールは名称変更をトラ
ンスフォーメーションの式に反映させます。
¨ 関数内の各引数はカンマで区切ります。
¨ リテラルを除き、トランスフォーメーション言語では大文字と小文字は区別されませ
ん。
¨ リテラルを除き、DeveloperツールとData Integration Serviceではスペースが無視さ
れます。
¨ コロン(:)、カンマ(,)、ピリオド(.)は特別な意味を持っているため、構文を指
定する場合にのみ使用します。
¨ Data Integration Serviceでは、ダッシュ(-)がマイナス演算子として扱われます。
4
章 1: トランスフォーメーション言語
¨ 関数にリテラル値を渡す場合、文字列リテラルは一重引用符で囲みます。数値リテラル
には引用符を使用しないでください。Data Integration Serviceでは、一重引用符で囲
まれた値はすべて文字列として扱われます。
¨ 式の中で関数にマッピングパラメータを渡す場合、マッピングパラメータを指定する際
に引用符を使用しないでください。
¨ ポートを指定する際に引用符を使用しないでください。
¨ 式の中に複数の関数をネストすることができます(集計関数は1つしかネストできませ
ん)。Data Integration Serviceでは、最も内側の関数から式の評価が開始されます。
式へのコメント追加
トランスフォーメーション言語では、式にコメントを挿入するために2種類の方法を提供し
ています。
¨ 2つのダッシュの後にコメントを記述します。
-- These are comments
¨ 2つのスラッシュの後にコメントを記述します。
// These are comments
Data Integration Serviceは、上記の2種類の方法で記述された行のテキストをすべて無
視します。 たとえば、2つの文字列を連結する場合、連結を記述する式の途中に次のよう
なコメントの付いた式を挿入することができます。
-- This expression concatenates first and last names for customers:
FIRST_NAME -- First names from the CUST table
|| // Concat symbol
LAST_NAME // Last names from the CUST table
// Joe Smith Aug 18 1998
Data Integration Serviceでは、コメントを無視して、この式を次のように評価します。
FIRST_NAME || LAST_NAME
コメントを次の行に続けることはできません。
-- This expression concatenates first and last names for customers:
FIRST_NAME -- First names from the CUST table
|| // Concat symbol
LAST_NAME // Last names from the CUST table
Joe Smith Aug 18 1998
この場合、最後の行が正しい式でないため、Developerツールは式を無効と判断します。
コメントを埋め込みたくない場合は、式エディタで[コメント]をクリックしてコメント
を追加できます。
式へのコメント追加
5
予約語
トランスフォーメーション言語で使用されるいくつかのキーワード(定数、演算子、ビル
トイン変数など)は、特定の関数に対する予約語となっています。予約語には以下のもの
があります。
¨ :INFA
¨ :LKP
¨ :MCR
¨ AND
¨ DD_DELETE
¨ DD_INSERT
¨ DD_REJECT
¨ DD_UPDATE
¨ FALSE
¨ NOT
¨ NULL
¨ OR
¨ PROC_RESULT
¨ SPOUTPUT
¨ SYSDATE
¨ TRUE
注: ポートやローカル変数の名前として予約語を使用することはできません。予約語はト
ランスフォーメーション式の中でのみ使用できます。予約語は式の中であらかじめ定義さ
れた意味を持ちます。
6
章 1: トランスフォーメーション言語
第 2 章
定数
この章では、以下の項目について説明します。
¨ DD_DELETE, 7 ページ
¨ DD_INSERT, 8 ページ
¨ DD_REJECT, 8 ページ
¨ DD_UPDATE, 9 ページ
¨ FALSE, 9 ページ
¨ NULL, 10 ページ
¨ TRUE, 11 ページ
DD_DELETE
更新方式の式でレコードに削除フラグを設定する場合に使用します。DD_DELETEは整数リテ
ラル2と等価です。
注: DD_DELETE定数は、Update Strategyトランスフォーメーションでのみ使用します。
複雑な数値式のトラブルシューティングを円滑に行うには、整数リテラル2の代わりに
DD_DELETEを使用します。
例
下記に、ID番号1001の項目を削除し、ほかのすべての項目を挿入する式を表わします。
IIF( ITEM_ID = 1001, DD_DELETE, DD_INSERT )
この更新方式の式では、数値リテラルを使っても同じ結果が得られます。
IIF( ITEM_ID = 1001, 2, 0 )
注:
数値リテラルを使った式よりも定数を使った式の方が読みやすくなります。
7
DD_INSERT
更新方式の式でレコードに挿入フラグを設定する場合に使用します。DD_INSERTは整数リテ
ラル0と等価です。
注: DD_INSERT定数は、Update Strategyトランスフォーメーションでのみ使用します。
複雑な数値式のトラブルシューティングを円滑に行うには、整数リテラル0の代わりに
DD_INSERTを使用します。
例
次の例は、販売員ごとの毎月の販売額を計算するマッピングを、1人の販売員の販売額だけ
を調べられるように変更する式です。
次の更新方式の式では、従業員の販売額を挿入対象に設定し、その他はすべて拒否対象に
設定しています。
IIF( EMPLOYEE.NAME = 'Alex', DD_INSERT, DD_REJECT )
この更新方式の式では、数値リテラルを使っても同じ結果が得られます。
IIF( EMPLOYEE.NAME = 'Alex', 0, 3 )
ヒント:
数値リテラルを使った式よりも定数を使った式の方が読みやすくなります。
DD_REJECT
更新方式の式でレコードに拒否フラグを設定する場合に使用します。DD_REJECTは整数リテ
ラル3と等価です。
注: DD_REJECT定数は、Update Strategyトランスフォーメーションでのみ使用します。
複雑な数値式のトラブルシューティングを円滑に行うには、整数リテラル3の代わりに
DD_REJECTを使用します。
DD_REJECTは、データのフィルタリングや検査に使用します。レコードに拒否フラグを設定
すると、Data Integration Serviceはそのレコードをスキップし、セッション拒否ファイ
ルに書き込みます。
例
次の例は、現在の月の販売額を計算するマッピングを変更して、正の数だけを含むように
する式です。
この更新方式の式では、0より小さいレコードを拒否対象に、その他のレコードをすべて挿
入対象に設定します。
IIF( ORDERS.SALES > 0, DD_INSERT, DD_REJECT )
この更新方式の式では、数値リテラルを使っても同じ結果が得られます。
IIF( ORDERS.SALES > 0, 0, 3 )
数値リテラルを使った式よりも定数を使った式の方が読みやすくなります。
8
章 2: 定数
以下のデータドリブンの例では、DD_REJECTおよびIS_SPACESを使用して、ターゲットテー
ブル内の文字を取る列にスペースが書き込まれるのを回避しています。 この式では、スペ
ースのみからなるレコードが拒否対象に設定され、その他はすべて挿入対象に設定されま
す。
IIF( IS_SPACES( CUST_NAMES ), DD_REJECT, DD_INSERT )
DD_UPDATE
更新方式の式でレコードに更新フラグを設定する場合に使用します。DD_UPDATEは整数リテ
ラル1と等価です。
注: DD_UPDATE定数は、Update Strategyトランスフォーメーションでのみ使用します。
複雑な数値式のトラブルシューティングを円滑に行うには、整数リテラル1の代わりに
DD_UPDATEを使用します。
例
次の例は、現在の月の販売額を計算するマッピングを変更する式です。マッピングでは1人
の従業員の販売額がロードされます。
この式では、Alexのレコードを更新対象にフラグを設定し、その他はすべて拒否対象に設
定しています。
IIF( EMPLOYEE.NAME = 'Alex', DD_UPDATE, DD_REJECT )
この式では、数値リテラルを使っても同じ結果が得られます。Alexの販売額だけが更新対
象(1)となり、その他の販売額レコードはすべて拒否対象(3)となります。
IIF( EMPLOYEE.NAME = 'Alex', 1, 3 )
数値リテラルを使った式よりも定数を使った式の方が読みやすくなります。
次の更新方式の式では、SYSDATEを使用し、過去2日間に出荷された注文だけを検索して挿
入フラグを設定しています。DATE_DIFFを使用することにより、この式はシステム日付から
DATE_SHIPPEDを減算して、2つの日付の差を返します。DATE_DIFFはDouble値を返すため、
式ではTRUNCを使って差を切り詰めています。その後で、結果を整数リテラル2と比較しま
す。結果が2より大きい場合は、レコードに拒否フラグを設定します。結果が2以下の場
合、レコードに更新フラグを設定します。それ以外の場合、拒否フラグを設定します。
IIF( TRUNC( DATE_DIFF( SYSDATE, ORDERS.DATE_SHIPPED, 'DD' ), 0 ) > 2, DD_REJECT, DD_UPDATE )
FALSE
条件式を明確にするために使用します。 FALSEは整数0と等価です。
DD_UPDATE
9
例
次の例では、DECODE式でFALSEを使用し、比較結果に基づいて値を返しています。これは1
つの検索値に基づいて複数の検索を行いたい場合に便利です。
DECODE( FALSE,
Var1 = 22,'Variable 1 was 22!',
Var2 = 49,'Variable 2 was 49!',
Var1 < 23, 'Variable 1 was less than 23.',
Var2 > 30, 'Variable 2 was more than 30.',
'Variables were out of desired ranges.')
NULL
値が未知または未定義であることを示します。NULLは空の文字列(文字が入る列の場
合)、または0(数値が入る列の場合)と等価ではありません。
NULL値を返す式を記述することは可能ですが、NOT NULLまたはPRIMARY KEY制約が指定さ
れた列ではNULLは許可されません。 したがって、Data Integration Serviceがいずれか
の制約のある列にNULL値を書き込もうとした場合、データベースはその行を拒否し、Data
Integration Serviceはそれを拒否ファイルに書き込みます。 トランスフォーメーション
を作成する際には、必ずNULLについて考慮するようにしてください。
各関数は別々の方法でNULLを扱うことができます。関数にNULL値を渡した場合、0やNULLを
返す関数もあれば、NULL値を無視する関数もあります。
関連項目:
¨ 「関数」
(32ページの)
ブール式におけるNull値の扱い
NULL値とブール式を結合する式はANSIに準拠した結果を生成します。たとえば、Data
Integration Serviceは下記の結果を生成します。
¨ NULL AND TRUE = NULL
¨ NULL AND FALSE = FALSE
比較式におけるNULL値の扱い
比較演算子を含む式でNULL値を使用した場合は、Data Integration ServiceはNULL値を生
成します。
集計関数におけるNULL値
Data Integration Serviceは集計関数においてNULL値をNULLとして処理します。ポートま
たはグループ全体のNULL値を渡すと、関数はNULLを返します。
10
章 2: 定数
フィルタ条件におけるNULL値
フィルタ条件の評価結果がNULLとなった場合、関数はレコードを選択しません。選択され
たポートのすべてのレコードに対するフィルタ条件の評価結果がNULLとなった場合、集計
関数はNULLを返します(ただしCOUNT関数は0を返します)。集計関数や、CUME、
MOVINGAVG、およびMOVINGSUM関数では、フィルタ条件を使用できます。
NULLと演算子
演算子(文字列演算子 || を除く)を使用した式にNULL値が含まれると、式の評価結果が
常にNULLになります。たとえば、次の式を評価した結果はNULLになります。
8 * 10 - NULL
NULLかどうかをテストするには、ISNULL関数を使用します。
TRUE
比較の結果に基づいて値を返します。TRUEは整数1と等価です。
例
次の例では、DECODE式でTRUEを使用し、比較結果に基づいて値を返しています。これは1つ
の検索値に基づいて複数の検索を行いたい場合に便利です。
DECODE( TRUE,
Var1 = 22,'Variable 1 was 22!',
Var2 = 49,'Variable 2 was 49!',
Var1 < 23, 'Variable 1 was less than 23.',
Var2 > 30, 'Variable 2 was more than 30.',
'Variables were out of desired ranges.')
TRUE
11
第 3 章
演算子
この章では、以下の項目について説明します。
¨ 演算子の優先順位, 12 ページ
¨ 算術演算子, 13 ページ
¨ 文字列演算子, 14 ページ
¨ 比較演算子, 15 ページ
¨ 論理演算子, 15 ページ
演算子の優先順位
トランスフォーメーション言語では、複数の演算子を使用することができ、ネストした式
の中でも演算子を使用できます。
複数の演算子を含む式を記述した場合、Data Integration Serviceは以下の順序で式を評
価します。
1.
算術演算子
2.
文字列演算子
3.
比較演算子
4.
論理演算子
Data Integration Serviceは、以下の表に示された順序に従い演算子を評価します。 1つ
の式の中の演算子については、左から右にすべての演算子を等しい優先順位で評価しま
す。
以下の表に、トランスフォーメーション言語のすべての演算子の優先順位を示します。
12
演算子
意味
( )
かっこ。
+, -, NOT
単項のプラスとマイナス、および論理否定演算子。
*、/、%
乗算、除算、剰余。
演算子
意味
+, -
加算、減算。
||
連結。
<, <=, >, >=
より小さい、以下、より大きい、以上。
=, <>, !=, ^=
等しい、等しくない、等しくない、等しくない。
AND
論理演算子AND(条件の指定時に使用)。
OR
論理演算子OR(条件の指定時に使用)。
トランスフォーメーション言語では、ネストした式の中で演算子を使用することもできま
す。式にかっこが含まれている場合、Data Integration Serviceはかっこの外の演算の前
にかっこ内の演算を評価します。 最も内側のかっこ内の演算が最初に評価されます。
たとえば、演算をどのようにネストするかによって、式8 + 5 - 2 * 8の返す値が異なりま
す。
式
戻り値
8 + 5 - 2 * 8
-3
8 + (5 - 2) * 8
32
算術演算子
算術演算子は、数値データーに対して算術計算を実行するときに使用します。
以下の表に、トランスフォーメーション言語の算術演算子の優先順位を示します。
演算子
意味
+, -
単項のプラスおよびマイナス。単項のプラスは正の値を示します。
単項のマイナスは負の値を示します。
*, /, %
乗算、除算、剰余。剰余とは、整数を整数で割ったときの余りで
す。たとえば、13 % 2 = 1 となります。 13 を 2 で割ると商が6
で余りが 1 だからです。
+, -
加算、減算。
加算演算子(+)で文字列を連結することはできません。文字列を
連結するには、文字列演算子 || を使用します。日付値に算術演算
を実行するには、日付関数を使用します。
算術演算子
13
NULL値に対して算術演算を実行すると、関数はNULLを返します。
式で算術演算子を使用する場合、式中のすべてのオペランドは数値でなければなりませ
ん。たとえば、式 1+'1' は、文字列に整数を加算しているため無効です。 式 1.23+4/2
は、すべてのオペランドが数値であるため、有効です。
注: トランスフォーメーション言語には組込み日付関数が用意されており、日付や時刻の
値に対して算術演算を実行できます。
関連項目:
¨ 「日付の算術演算について」
(31ページの)
文字列演算子
2つの文字列を連結するには、文字列演算子 || を使用します。|| 演算子は、任意のデー
ター型(Binaryを除く)のオペランドをStringデーター型に変換してから連結します。
入力値
戻り値
'alpha' || 'betical'
alphabetical
'alpha' || 2
alpha2
'alpha' || NULL
alpha
||演算子は、文字列の先頭や末尾にあるスペースもそのまま連結します。2つの文字列を連
結する前に先頭や末尾のスペースを削除するには、LTRIM関数およびRTRIM関数を使用しま
す。
NULL
|| 演算子はNULL値を無視します。ただし、演算子の両側がともにNULLである場合には、
NULLを返します。
例
次の例は、2つの列から従業員の名前と姓を連結する式を示しています。この式は、名前の
末尾と姓の先頭からスペースを削除し、各名前の末尾にスペースを1つ連結してから、姓を
連結します。
LTRIM( RTRIM( EMP_FIRST ) || ' ' || LTRIM( EMP_LAST ))
EMP_FIRST
' Alfred'
' Bernice'
NULL
' Curt'
NULL
14
章 3: 演算子
EMP_LAST
' Rice '
' Kersins'
' Proud'
NULL
NULL
RETURN VALUE
Alfred Rice
Bernice Kersins
Proud
Curt
NULL
注: CONCAT関数を使って2つの文字列を連結することもできます。ただし、演算子を使う
と短い時間で同じ結果を得られます。
比較演算子
比較演算子を使用すると、文字列または数値を比較し、データーを操作して、TRUE(1)ま
たはFALSE(0)の値を返すことができます。
以下の表に、トランスフォーメーション言語の比較演算子を示します。
演算子
意味
=
等しい。
>
より大きい。
<
より小さい。
>=
以上。
<=
以下。
<>
等しくない。
!=
等しくない。
^=
等しくない。
数値を比較する場合、または特定のポートのプライマリキーに対するソート順に基づく範
囲の行を返す場合、より大きい(>)演算子および、より小さい(<)演算子を使用しま
す。
式中で比較演算子を使う場合は、オペランドは同じデーター型でなければなりません。た
とえば、123.4 > ‘123’という式は無効です。この式では小数と文字列を比較しているか
らです。式123.4 > 123と式‘a’ != ‘b’は、オペランドが同じデーター型なので、有効
です。
値をNULL値と比較すると、結果はNULLになります。
フィルタ条件の評価結果がNULLの場合、Integration ServiceはNULLを返します。
論理演算子
論理演算子は、数値データーの操作に使用します。数値を返す式は、0以外の値であれば
TRUE、0の場合はFALSE、NULLの場合はNULLと評価されます。
比較演算子
15
以下の表に、トランスフォーメーション言語の論理演算子を示します。
演算子
意味
NOT
式の結果を否定します。たとえば、式の評価結果がTRUEであれ
ば、演算子NOTはFALSEを返します。式の評価結果がFALSEであれ
ば、NOTはTRUEを返します。
AND
2つの条件を結合して、両方の評価結果がTRUEであればTRUEを返
します。いずれか一方の条件がTRUEでない場合は、FALSEを返し
ます。
OR
2つの条件を結合して、いずれか一方の評価結果がTRUEであれば
TRUEを返します。条件が両方ともTRUEでない場合は、FALSEを返
します。
NULL
NULL値とブール式を結合する式は、ANSIに準拠した結果を生成します。たとえば、Data
Integration Serviceは下記の結果を生成します。
¨ NULL AND TRUE = NULL
¨ NULL AND FALSE = FALSE
16
章 3: 演算子
第 4 章
変数
この章では、以下の項目について説明します。
¨ ビルトイン変数, 17 ページ
¨ ローカル変数, 18 ページ
ビルトイン変数
トランスフォーメーション言語には、システム日付を返すビルトイン変数SYSDATEがありま
す。SYSDATEは式の中で使用できます。たとえば、SYSDATEはDATE_DIFF関数で使用できま
す。
SYSDATE
SYSDATEは、トランスフォーメーションにより渡される各行について、データを処理するノ
ードの現在の日付と時刻を秒単位で返します。 SYSDATEは、トランスフォーメーションの
Date/Timeデータ型の値として格納されます。
例
次の式では、SYSDATEを使用し、過去2日間に出荷された注文を検索して挿入フラグを設定
しています。DATE_DIFFを使用して、Data Integration Serviceはシステム日付から
DATE_SHIPPEDを減算し、2つの日付の差を返します。 DATE_DIFFはDouble値を返すため、
式では差が切り詰められます。その後で、結果を整数リテラル2と比較します。結果が2よ
り大きい場合は、行に拒否フラグを設定します。結果が2以下の場合は、挿入フラグを設定
します。
IIF( TRUNC( DATE_DIFF( SYSDATE, DATE_SHIPPED, 'DD' ),
0 ) > 2, DD_REJECT, DD_INSERT
17
ローカル変数
マッピング使用する場合であれば、ローカル変数はマッピング内のどのトランスフォーメ
ーション式でも使用できます。たとえば、ある複雑な税金計算をマッピング全体を通して
使用する場合は、その式を一度だけ記述して、変数として指定することができます。これ
により、Data Integration Serviceが実行する計算の回数は1回だけになるため、パフォ
ーマンスが改善されます。
ローカル変数は、ストアドプロシージャ式で複数の戻り値を取得する場合に便利です。
18
章 4: 変数
第 5 章
日付
この章では、以下の項目について説明します。
¨ 日付の概要, 19 ページ
¨ 日付形式文字列, 23 ページ
¨ TO_CHAR形式文字列, 24 ページ
¨ TO_DATEおよびIS_DATE形式文字列, 27 ページ
¨ 日付の算術演算について, 31 ページ
日付の概要
トランスフォーメーション言語には、日付に対するトランスフォーメーションを実行する
助けとして、いくつかの日付関数と組込み日付変数一式が用意されています。日付関数を
使用することで、日付を丸める、切り詰める、比較する、日付の一部を抽出する、日付に
算術演算を行う、などの操作を実行できます。日付関数には、日付データ型を持つ任意の
値を渡すことができます。
日付変数を使用して、Data Integration Serviceのホストノードの現在の日付を取得でき
ます。
また、トランスフォーメーション言語には次の3種類の形式文字列があります。
¨ 日付形式文字列。日付関数で日付の要素を指定するために使用します。
¨ TO_CHAR形式文字列。戻り文字列の形式を指定するために使用します。
¨ TO_DATEおよびIS_DATE形式文字列。日付への変換またはテストを行う文字列の形式を指
定するために使用します。
Date/Timeデータ型
Informaticaでは、さまざまなソースからデータを変換するために汎用的なデータ型が使用
されます。そのようなトランスフォーメーションのデータ型の1つとして、Date/Timeデー
タ型があり、ナノ秒単位の日時の値をサポートしています。 Informaticaは内部ではバイ
ナリ形式で日付を格納します。
19
日付関数は、Date/Time値のみを取ります。日付関数に文字列を渡すには、まずTO_DATEを
使って文字をDate/Time値に変換します。たとえば、次の式は文字列ポートをDate/Time値
に変換してから、各日付の月の数値に1を加えます。
ADD_TO_DATE( TO_DATE( STRING_PORT, 'MM/DD/RR'), 'MM', 1 )
グレゴリオ暦の西暦1年から西暦9999年の範囲の日付を使用できます。
ユリウス日、修正ユリウス日、およびグレゴリオ暦
グレゴリオ暦の日付のみを使用できます。ユリウス暦の日付はユリウス 日(複数)と呼ば
れ、Informaticaではサポートされていません。 この用語をユリウス 日や修正ユリウス日
と混同しないように注意する必要があります。
修正ユリウス日(MJD)の形式は、Jフォーマット文字列を使用して操作できます。ある日
付に対するMJDは、紀元前4713年1月1日深夜00時00分00秒を起点とした日数で表されます。
定義により、MJDの時間部分は24時間の一部を表す10進数として表現されます。Jフォーマ
ット文字列では、この時間部分は変換されません。
たとえば、次のTO_DATE式は、SHIP_DATE_MJD_STRINGポートの文字列をデフォルト日付形
式の値に変換します。
TO_DATE (SHIP_DATE_MJD_STR, 'J')
SHIP_DATE_MJD_STR
2451544
2415021
SHIP_DATE_MJD_STR
2451544
2415021
RETURN_VALUE
Dec 31 1999 00:00:00.000000000
Jan 1 1900 00:00:00.000000000
RETURN_VALUE
Dec 31 1999 00:00:00.000000000
Jan 1 1900 00:00:00.000000000
Jフォーマット文字列には日付の時間部分が含まれないため、戻り値では時間が
00.000000000:00:00に設定されています。
Jフォーマット文字列をTO_CHAR式で使用することもできます。たとえば、TO_CHAR式でJフ
ォーマット文字列を使用して、日付値をMJD値の文字列に変換できます。以下に例を示しま
す。
TO_CHAR(SHIP_DATE, 'J')
SHIP_DATE
Dec 31 1999 23:59:59
Jan 1 1900 01:02:03
注:
RETURN_VALUE
2451544
2415021
Data Integration Serviceは、TO_CHAR式の中の日付の時刻部分を無視します。
西暦2000年の日付
トランスフォーメーション言語の日付関数は、すべて西暦2000年問題に対応しています。
Informaticaデベロッパ
RR形式文字列
トランスフォーメーション言語では、2桁の年を含む文字列を日付に変換するためのRRフォ
ーマット文字列が提供されています。TO_DATEでRRフォーマット文字列を使用することによ
20
章 5: 日付
り、MM/DD/RR形式の文字列を日付に変換できます。RRフォーマット文字列による変換結果
は、現在の年が何年であるかによって異なります。
¨ 0-49の現在の年。現在の年が0-49の間であり(たとえば2003年)、元の文字列の年が
0-49の場合、Data Integration Serviceは現在の世紀に元の文字列の2桁の年を足した
値を返します。 元の文字列の年が50-99の間であれば、Integration Serviceは前の世
紀に元の文字列の2桁の年を足した値を返します。
¨ 50-99の現在の年。現在の年が50-99の間であり(たとえば1998年)、元の文字列の年が
0-49の場合、Data Integration Serviceは次の世紀に元の文字列の2桁の年を足した値
を返します。 元の文字列の年が50-99の間であれば、Data Integration Serviceは現
在の世紀に指定された2桁の年を足した値を返します。
以下の表に、RR形式文字列による日付への変換方法をまとめて示します。
現在の年
ソースの年
RR形式文字列の戻り値
0~49
0~49
現在の世紀
0~49
50~99
前の世紀
50~99
0~49
次の世紀
50~99
50~99
現在の世紀
例
次の式は、現在の年が1950年から2049年までの間は同じ結果を返します。
TO_DATE( ORDER_DATE, 'MM/DD/RR' )
ORDER_DATE
'04/12/98'
'11/09/01'
RETURN_VALUE
04/12/1998 00:00:00.000000000
11/09/2001 00:00:00.000000000
形式文字列YYとRRの違い
InformaticaデベロッパRRもYYもともに2桁の年を指定するフォーマット文字列です。YYと
RRは、TO_DATE以外の日付関数で使用した場合はすべて同じ結果を返します。TO_DATE式で
は、RRの場合とYYの場合で結果が異なります。
以下の表に、各形式文字列が返す結果の違いを示します。
文字列
現在の年
TO_DATE(String, ‘MM/
DD/RR')
TO_DATE(String, ‘MM/
DD/YY')
04/12/98
1998
04/12/1998
00:00:00.000000000
04/12/1998
00:00:00.000000000
11/09/01
1998
11/09/2001
00:00:00.000000000
11/09/1901
00:00:00.000000000
日付の概要
21
文字列
現在の年
TO_DATE(String, ‘MM/
DD/RR')
TO_DATE(String, ‘MM/
DD/YY')
04/12/98
2003
04/12/1998
00:00:00.000000000
04/12/2098
00:00:00.000000000
11/09/01
2003
11/09/2001
00:00:00.000000000
11/09/2001
00:00:00.000000000
2000年以降の日付については、YYを使用した場合に得られる値はRRの場合に比べて有用で
はありません。21世紀の日付については、RRフォーマット文字列を使用することを推奨し
ます。
リレーショナルデーターベースの日付
一般に、リレーショナルデーターベースに格納される日付には日付と時刻の値が含まれて
います。日付には月、日、年が含まれ、時間には場合により時、分、秒、サブ秒が含まれ
ます。 これらのDate/Timeデーターはどの日付関数にも渡すことができます。
フラットファイルの日付
TO_DATE関数を使って文字列をDate/Time値に変換できます。また、TO_DATEで変換する前
に、IS_DATE関数を使って文字列が正しい日付かどうかを確認することもできます。トラン
スフォーメーション言語の日付関数は、日付値のみを取ります。日付関数に文字列を渡す
には、まずTO_DATE関数を使用して文字列をトランスフォーメーションのDate/Timeデータ
ー型に変更する必要があります。
デフォルトの日付形式
Data Integration Serviceでは、日付を表す文字列を格納および操作する場合、デフォル
トの日付形式を使用します。デフォルトの日付フォーマットを指定するには、データビュ
ーアの設定で、[Datetimeフォーマット文字列]属性に日付のフォーマットを入力しま
す。デフォルトの日付形式は、MM/DD/YYYY HH24:MI:SS.USです。
Informaticaは日付をバイナリ形式で格納するため、Data Integration Serviceは以下の
アクションを実行する場合に、デフォルトの日時形式を使用します。
¨ Date/Timeポートを文字列ポートに接続することによって日付を文字列に変換する。
Data Integration Serviceは、日付を、データビューアの設定で定義されている日付形
式の文字列に変換します。
¨ 文字列ポートをDate/Timeポートに接続することによって文字列を日付に変換する。
Data Integration Serviceでは、文字列値がデータビューアの設定で定義された日付形
式に一致していることを前提とします。 入力値がこの形式に一致しない場合、または
無効な日付の場合、Data Integration Serviceはその行をスキップします。 文字列が
この形式になっている場合、Data Integration Serviceは文字列を日付値に変換しま
す。
¨ TO_CHAR(date, [format_string])を使用して日付を文字列に変換する。形式文字列を
省略した場合、Data Integration Serviceはデータビューアの設定で定義された日付形
22
章 5: 日付
式の文字列を返します。 形式文字列を指定した場合、Data Integration Serviceは指
定された形式で文字列を返します。
¨ TO_DATE(date, [format_string])を使用して文字列を日付に変換する。形式文字列を
省略した場合、Data Integration Serviceは文字列がデータビューアの設定で定義され
た日付形式に一致していることを前提とします。 形式文字列を指定した場合、Data
Integration Serviceは文字列が指定された形式に一致していることを前提とします。
デフォルト日付形式のMM/DD/YYYY HH24:MI:SS.USには、以下のものが含まれます。
¨ 月(1月 = 01、9月 = 09)
¨ 日
¨ 年(1998のような4桁表記)
¨ 時(24時間形式、たとえば、12:00:00AM = 0, 1:00:00AM = 1, 12:00:00PM = 12,
11:00:00PM = 23)
¨ 分
¨ 秒
¨ マイクロ秒
日付形式文字列
入力された日付は、フォーマット文字列と日付関数の組み合わせによって評価できます。
日付フォーマット文字列は国際化されていないため、下の表に示す定義済みの形式で入力
しなければなりません。
以下の表に、日付の一部を指定する形式文字列のリストを示します。
形式文字列
説明
D, DD, DDD,
DAY, DY, J
日(01-31)。これらのフォーマット文字列は、日付の日の
部分全体を指定するために使用します。たとえば、日付関
数に「12-APR-1997」を渡す場合、これらのフォーマット文
字列を使って「12」の部分を指定します。
HH, HH12, HH24
時(0-23)。0は午前(深夜)12時を表します。これらのフ
ォーマット文字列は、日付の時の部分全体を指定するため
に使用します。たとえば、「12-APR-1997 2:01:32 PM」の
日付を渡す場合、HH、HH12、またはHH24を使用して日付の
時の部分を指定します。
MI
分(0-59)。
MM, MON, MONTH
月(01-12)。これらのフォーマット文字列は、日付の月の
部分全体を指定するために使用します。たとえば、日付関
数に「12-APR-1997」を渡す場合、MM、MON、またはMONTHを
使って「APR」の部分を指定します。
MS
ミリ秒(0-999)
日付形式文字列
23
形式文字列
説明
NS
ナノ秒(0-999999999)
SS , SSSS
秒(0-59)。
US
マイクロ秒(0-999999)
Y, YY, YYY,
YYYY , RR
日付の年の部分(0001-9999)。 これらのフォーマット文
字列は、日付の年の部分全体を指定するために使用しま
す。たとえば、日付関数に「12-APR-1997」を渡す場合、
Y、YY、YYY、またはYYYYを使って「1997」の部分を指定し
ます。
注: フォーマット文字列は大文字と小文字を区別しません。フォーマット文字列は必ず一
重引用符で囲んで指定します。
以下の表に、入力日付を評価する場合に日付形式文字列を使用する日付関数を示します。
機能
説明
ADD_TO_DATE
日付の中で変更したい部分。
DATE_DIFF
日付の中で、2つの日付の差を計算するために使用したい部
分。
GET_DATE_PART
日付の中で返したい部分。この関数は、デフォルトの日付
形式に基づいて整数値を返します。
IS_DATE
確認対象の日付。
ROUND
日付の中で丸めたい部分。
SET_DATE_PART
日付の中で変更したい部分。
Systimestamp
タイムスタンプ精度。
TO_CHAR (Dates)
文字列。
TO_DATE
文字列。
TRUNC (Dates)
日付の中で切り捨てたい部分。
TO_CHAR形式文字列
TO_CHAR関数は、Date/Timeデータ型を、指定した形式の文字列に変換します。日付の全
体、または日付の一部を文字列に変換できます。TO_CHARを使用して日付を文字列に変換す
ることによって、レポート用に日付の形式を変更できます。
24
章 5: 日付
一般に、TO_CHARはターゲットがフラットファイルの場合か、Date/Timeデータ型をサポー
トしないデータベースの場合に使用します。
以下の表に、TO_CHAR関数で使用される日付の形式文字列のリストを示します。
形式文
字列
説明
AM、
A.M.
午前または午後。これらのいずれかのフォーマット文字列を使用し
て、時刻が午前か午後かを指定します。AMとA.M.、PMとP.M.はそれぞ
れ同じ値を返します。
PM、
P.M.
D
曜日(1~7)。日曜日が1となります。
DAY
曜日の英語名(9文字まで)。例:Wednesday。
DD
日(01~31)。
DDD
1年における通算日(001~366)。366はうるう年の場合です。
DY
曜日の英語名の3文字の略称。例:Wed。
HH,
HH12
時(01~12)。
HH24
時(00~23)。00は午前(深夜)12時を表します。
J
修正ユリウス日。カレンダー日付を、紀元前4713年1月1日00:00:00か
ら計算した、その修正ユリウス日の値に相当する文字列に変換しま
す。日付の時刻部分は無視されます。 たとえば、
TO_CHAR( SHIP_DATE, ‘J' )の式は、「Dec 31 1999 23:59:59」を
「2451544」の文字列に変換します。
MI
分(00~59)。
MM
月(01~12)。
MONTH
月の英語名(9文字まで)。例:January。
MON
月の英語名の3文字の略称。例:Jan。
MS
ミリ秒(0-999)
NS
ナノ秒(0-999999999)
Q
四半期(1~4)。1月から3月までが1となります。
RR
年の下2桁。関数はその前の桁を削除します。たとえば、‘RR’を使
用して年1997を渡すと、TO_CHARは97を返します。TO_CHARと組み合わ
せて使用すると、‘RR’は‘YY’と同じ結果を生成し、‘YY’を置き
換えることもできます。ただし、TO_DATEと組み合わせて使用した場
合、‘RR’は直近の世紀を計算し、年の最初の2桁を表示します。
TO_CHAR形式文字列
25
形式文
字列
説明
SS
秒(00~59)。
SSSSS
深夜0時からの通算秒(00000~86399)。TO_CHAR式でSSSSSを使用し
た場合、Data Integration Serviceは日付の時刻部分しか評価できま
せん。たとえば、式TO_CHAR(SHIP_DATE, ‘MM/DD/YYYY SSSSS’)は
「12/31/1999 01:02:03」を「12/31/1999 03723」に変換します。
US
マイクロ秒(0-999999)
Y
年の下1桁。関数はその前の桁を削除します。たとえば、‘Y’を使用
して年1997を渡すと、TO_CHARは7を返します。
YY
年の下2桁。関数はその前の桁を削除します。たとえば、'YY'を使用
して年1997を渡すと、TO_CHARは97を返します。
YYY
年の下3桁。関数はその前の桁を削除します。たとえば、'YYY'を使用
して年1997を渡すと、TO_CHARは997を返します。
YYYY
年の部分全体。たとえば、'YYYY'を使用して年1997を渡すと、
TO_CHARは1997を返します。
W
月の何週目か(1-5)。週1は月の1日から7日まで、週2は8日から14日
までです。 たとえば、Feb 1は2月の第1週を示します。
WW
年の何週目か(01-53)。週01は1月1日から1月7日まで、週02は1月8
日から1月14日まで、というようになります。
- / .
; :
出力に表示する区切り文字。これらの記号を使って日付の各要素間を
区切ることができます。たとえば、以下のようにピリオドを使用して
日付の要素を区切る式を作成します。TO_CHAR( DATES,
'MM.DD.YYYY' )
"テキ
スト"
出力に表示する文字列。たとえば、TO_CHAR( DATES, 'MM/DD/YYYY
"Sales Were Up"' )という式を使用して出力ポートを作成し、日付と
して1997年4月1日を渡す場合、関数は文字列'04/01/1997 Sales Were
Up'を返します。リポジトリのコードページで有効なマルチバイト文
字も入力できます。
""
二重引用符は、D""DDDのように、意味が不明確なフォーマット文字列
を区切るために使用します。空の二重引用符は出力には表示されませ
ん。
注: フォーマット文字列は大文字と小文字を区別しません。フォーマット文字列は必ず一
重引用符で囲んで指定します。
例
J、SSSSS、RR、およびYYのフォーマット文字列を使った例を以下に示します。これ以外の
例については、各関数の説明を参照してください。
注:
26
Data Integration Serviceは、TO_CHAR式の中の日付の時刻部分を無視します。
章 5: 日付
J形式文字列
TO_CHAR式でJフォーマット文字列を使用して、日付値をMJD値の文字列に変換します。以下
に例を示します。
TO_CHAR(SHIP_DATE, 'J')
SHIP_DATE
Dec 31 1999 23:59:59
Jan 1 1900 01:02:03
RETURN_VALUE
2451544
2415021
SSSSS形式文字列
SSSSSフォーマット文字列をTO_CHAR式で使用することもできます。たとえば、次の式は
SHIP_DATEポートの日付を深夜0時からの通算秒を示す文字列に変換します。
TO_CHAR( SHIP_DATE, 'SSSSS')
SHIP_DATE
12/31/1999 01:02:03
09/15/1996 23:59:59
RETURN_VALUE
3723
86399
RR形式文字列
次の式は、日付をMM/DD/YY形式の文字列に変換します。
TO_CHAR( SHIP_DATE, 'MM/DD/RR')
SHIP_DATE
12/31/1999 01:02:03
09/15/1996 23:59:59
05/17/2003 12:13:14
RETURN_VALUE
12/31/99
09/15/96
05/17/03
YY形式文字列
TO_CHAR式では、YYフォーマット文字列はRRフォーマット文字列と同じ結果を返します。次
の式は、日付をMM/DD/YY形式の文字列に変換します。
TO_CHAR( SHIP_DATE, 'MM/DD/YY')
SHIP_DATE
12/31/1999 01:02:03
09/15/1996 23:59:59
05/17/2003 12:13:14
RETURN_VALUE
12/31/99
09/15/96
05/17/03
TO_DATEおよびIS_DATE形式文字列
TO_DATE関数は、指定した形式の文字列をDate/Time値に変換します。一般に、TO_DATEは
フラットファイルからの文字列をDate/Time値に変換するために使用します。TO_DATEフォ
ーマット文字列は国際化されていないため、「TO_DATEおよびIS_DATE形式文字列」 (27ペ
ージの)に示す定義済みの形式で入力しなければなりません。
注:
TO_DATEとIS_DATEでは、同じ種類のフォーマット文字列を使用します。
TO_DATEおよびIS_DATE形式文字列
27
TO_DATE式を作成する場合、変換元の文字列の日付の各部分に対してフォーマット文字列を
使用します。ソース文字列フォーマットおよびフォーマット文字列は、日付区切り文字を
含め、必ず一致している必要があります。一致しない部分がある場合、Data Integration
Serviceは文字列を変換せずに、その行をスキップします。 フォーマット文字列を省略す
る場合は、変換元の文字列がデータビューアの設定で指定された日付形式になっている必
要があります。
IS_DATEは、値が正しい日付であるかどうかを検査する関数です。正しい日付とは、データ
ビューアの設定で指定された日付形式で有効な日付を表している文字列を意味します。テ
ストする文字列がこの日付形式でない場合は、「TO_DATEおよびIS_DATE形式文字列」 (27
ページの)に記載されているフォーマット文字列を使用して日付形式を指定します。文字列
が指定された形式文字列に一致しない場合、または正しい日付でない場合には、関数は
FALSE(0)を返します。 文字列が形式文字列に一致し、有効な日付である場合には、関数
はTRUE(1)を返します。 IS_DATE形式文字列は国際化されていないため、下の表に示す定
義済みの形式で入力しなければなりません。
以下の表に、TO_DATEおよびIS_DATE関数で使用される形式文字列のリストを示します。
表 1. TO_DATEおよびIS_DATE形式文字列
28
形式文字列
説明
AM, a.m., PM,
p.m.
午前または午後。これらのいずれかのフォーマット文字列
を使用して、時刻が午前か午後かを指定します。AMと
A.M.、PMとP.M.はそれぞれ同じ値を返します。
DAY
曜日の英語名(9文字まで)。例:Wednesday。DAYフォー
マット文字列は大文字と小文字を区別しません。
DD
日(1-31)。
DDD
1年における通算日(001-366)。366はうるう年の場合で
す。
DY
曜日の英語名の3文字の略称。例:Wed。DYフォーマット文
字列は大文字と小文字を区別しません。
HH, HH12
時(1-12)。
HH24
時(0-23)。0は午前(深夜)12時を表します。
J
修正ユリウス日。MJD形式の文字列を日付値に変換します。
元の文字列の時刻部分を無視し、すべての日付に
00:00:00.000000000の時刻を割り当てます。たとえば、
TO_DATE('2451544', 'J')の式は2451544をDec 31 1999 00:
00:00.000000000に変換します。
MI
分(0-59)。
MM
月(1-12)。
MONTH
月の英語名(9文字まで)。例:August。大文字と小文字
は区別されません。
章 5: 日付
形式文字列
説明
MON
月の英語名の3文字の略称。例:Aug。大文字と小文字は区
別されません。
MS
ミリ秒(0-999)
NS
ナノ秒(0-999999999)
RR
4桁の年(1998、2034など)。 変換元の文字列が2桁の年
を含む場合に使用します。TO_DATEで使用すると、2桁の年
が4桁の年に変換されます。
- 50-99の現在の年。現在の年が50-99の間であり(たとえ
ば1998年)、変換元の文字列に含まれる年の値が0-49の
間であれば、Data Integration Serviceは次の世紀に変
換元の文字列の2桁の年を足した値を返します。 変換元
の文字列に含まれる年の値が50-99の間であれば、Data
Integration Serviceは現在の世紀に指定された2桁の年
を足した値を返します。
- 0-49の現在の年。現在の年が0-49の間であり(たとえば
2003年)、変換元の文字列の年が0-49の場合、Data
Integration Serviceは現在の世紀に変換元の文字列の2
桁の年を足した値を返します。 変換元の文字列の年が
50-99の間であれば、Data Integration Serviceは前の
世紀に変換元の文字列の2桁の年を足した値を返します。
SS
秒(0-59)。
SSSSS
深夜0時からの通算秒。TO_DATE式でSSSSSを使用した場
合、Data Integration Serviceは日付の時刻部分しか評価
できません。
たとえば、式TO_DATE( DATE_STR, ‘MM/DD/YYYY SSSSS’)
は「12/31/1999 3783」を「12/31/1999 01:02:03」に変換
します。
US
マイクロ秒(0-999999)
Y
Data Integration Serviceが実行されているノード上での
現在の年の下1桁を、文字列値で置き換えます。
YY
Data Integration Serviceが実行されているノード上での
現在の年の下2桁を、文字列値で置き換えます。
YYY
Data Integration Serviceが実行されているノード上での
現在の年の下3桁を、文字列値で置き換えます。
YYYY
年の全4桁。2桁の年を渡すときには、このフォーマット文
字列は使用しないでください。代わりに、RRまたはYY形式
を使用します。
TO_DATEおよびIS_DATE形式文字列
29
日付形式文字列のルールとガイドライン
日付フォーマット文字列を使用する場合、以下のルールおよびガイドラインに従ってくだ
さい。
¨ フォーマット文字列は、日付区切り文字を含め、TO_DATE文字列の形式と一致しなけれ
ばなりません。一致しない場合、Data Integration Serviceは不正確な値を返すか行を
スキップする可能性があります。たとえば、2020年5月12日を表す文字列'20200512'を
TO_DATEに渡す場合は、YYYYMMDD形式文字列を指定する必要があります。形式文字列を
指定しない場合、Data Integration Serviceは文字列がセッションで指定された日付形
式であることを前提とします。 同様に、形式文字列に一致しない文字列を渡すと、
Data Integration Serviceはエラーを返して行をスキップします。 たとえば、TO_DATE
に2020120の文字列を渡してYYYYMMDD形式文字列を指定すると、文字列が形式文字列と
一致しないため、Data Integration Serviceはエラーを返して行をスキップします。
¨ フォーマット文字列は一重引用符で囲んで指定する必要があります。
¨ Data Integration Serviceは、セッションで指定されているデフォルトの日時形式を使
用します。デフォルトはMM/DD/YYYY HH24:MI:SS.USです。フォーマット文字列は大文字
と小文字を区別しません。
例
J、RR、およびSSSSSのフォーマット文字列を使った例を以下に示します。これ以外の例に
ついては、各関数の説明を参照してください。
J形式文字列
次の式は、SHIP_DATE_MJD_STRINGポートの文字列をデフォルト日付形式の値に変換しま
す。
TO_DATE (SHIP_DATE_MJD_STR, 'J')
SHIP_DATE_MJD_STR
2451544
2415021
RETURN_VALUE
Dec 31 1999 00:00:00.000000000
Jan 1 1900 00:00:00.000000000
Jフォーマット文字列には日付の時間部分が含まれないため、戻り値では時間が
00.000000000:00:00に設定されています。
RR形式文字列
次の式は、文字列を4桁形式の年に変換します。現在の年は1998です。
TO_DATE( DATE_STR, 'MM/DD/RR')
DATE_STR
04/01/98
08/17/05
30
章 5: 日付
RETURN VALUE
04/01/1998 00:00:00.000000000
08/17/2005 00:00:00.000000000
YY形式文字列
次の式は、文字列を4桁形式の年に変換します。現在の年は1998です。
TO_DATE( DATE_STR, 'MM/DD/YY')
DATE_STR
04/01/98
08/17/05
注:
RETURN VALUE
04/01/1998 00:00:00.000000000
08/17/1905 00:00:00.000000000
2行目については、RRは2005年を返しますが、YYは 1905年を返します。
SSSSS形式文字列
次の式は、深夜からの通算秒を含む文字列を日付値に変換します。
TO_DATE( DATE_STR, 'MM/DD/YYYY SSSSS')
DATE_STR
12/31/1999 3783
09/15/1996 86399
RETURN_VALUE
12/31/1999 01:02:03.000000000
09/15/1996 23:59:59.000000000
日付の算術演算について
トランスフォーメーション言語には以下の組込み日付関数が用意されており、Date/Time値
に対して算術演算を実行できます。
¨ ADD_TO_DATE。日付の特定部分を加算または減算を行います。
¨ DATE_DIFF。2つの日付の減算を行います。
¨ SET_DATE_PART。日付の一部分を変更します。
数値算術演算子(+および-など)を使用して日付の加算や減算を行うことはできません。
トランスフォーメーション言語はうるう年を認識し、西暦0001年1月1日00.000000000時00
分00秒から西暦9999年12月31日23時59.999999999分59秒までの日付に対応しています。
注: トランスフォーメーション言語では、トランスフォーメーションのDate/Timeデータ
ー型を使って日付値を指定します。Date/Time値に対しては日付関数のみが使用できます。
日付の算術演算について
31
第 6 章
関数
この章では、トランスフォーメーション言語の関数をアルファベット順に説明します。各
関数の説明は、以下の項目からなっています。
¨ 構文
¨ 戻り値
¨ 例
関数の分類
トランスフォーメーション言語には、以下の種類の関数が用意されています。
¨ 集計
¨ 文字
¨ 変換
¨ データークレンジング
¨ 日付
¨ エンコード
¨ 財務
¨ 数値
¨ 科学的
¨ 特殊
¨ 文字列
¨ テスト
¨ 変数
集計関数
集計関数は、選択した複数のポートの非NULL値をサマリした値を返します。集計関数は以
下のような目的に使用できます。
¨ グループ内のすべての行に関して、ある1つの値を計算する。
32
¨ Aggregatorトランスフォーメーションで各グループに対して1つの値を返す。
¨ 選択したポートの特定の行に対して値を計算するようなフィルタを適用する。
¨ 演算子を使って関数内で算術演算を実行する。
¨ 同じソース列から得られた複数の集計値を1回のパスで計算する。
トランスフォーメーション言語には、以下の集計関数が用意されています。
¨ AVG
¨ COUNT
¨ FIRST
¨ LAST
¨ MAX (Date)
¨ MAX (Number)
¨ MAX (String)
¨ MEDIAN
¨ MIN (Date)
¨ MIN (Number)
¨ MIN (String)
¨ PERCENTILE
¨ STDDEV
¨ SUM
¨ VARIANCE
Data Integration ServiceをUnicodeモードで動作するように設定している場合、MINおよ
びMAXの戻り値は、マッピング設定で指定したコードページのソート順に従います。
集計関数は、Aggregatorトランスフォーメーションでのみ使用できます。他の集計関数の
中にネストできる集計関数は1つだけです。Data Integration Serviceは、最も内側の集
計関数式を評価し、その結果を外側の集計関数式の評価に使用します。 たとえば、次のよ
うに、IDでグループ分けして、2つの集計関数をネストしたAggregatorトランスフォーメー
ションを設定することができます。
SUM( AVG( earnings ) )
このとき、データセットには以下の値が格納されています:
ID
1
1
1
2
2
2
3
3
3
EARNINGS
32
45
100
65
75
76
21
45
99
戻り値は186です。Data Integration ServiceはIDでグループ分けし、AVG式を評価して3
つの値を返します。 次に、その値をSUM関数で追加して結果を出します。
関数の分類
33
集計関数とNULL
Data Integration Serviceを設定する場合、集計関数のNULL値の扱い方を選択できます。
Data Integration Serviceが、集計関数におけるNULL値をNULLとして扱うか、または0と
して扱うかを指定できます。
デフォルトでは、Data Integration Serviceは集計関数においてNULL値をNULLとして処理
します。ポートまたはグループ全体のNULL値を渡すと、関数はNULLを返します。必要に応
じて、集計関数にNULL値のポート全体を渡した場合には0を返すようにData Integration
Serviceを設定できます。
フィルタ条件
フィルタ条件を使用して、検索によって返される行を制限します。
フィルタは、検索によって返される行を制限します。すべての集計関数および、
MOVINGAVG、MOVINGSUMの関数に、フィルタ条件を適用できます。フィルタ条件の値は
TRUE、FALSE、またはNULLでなければなりません。フィルタ条件の値がNULLまたはFALSEで
ある場合、Data Integration Serviceはその行を選択しません。
有効なトランスフォーメーション式を必要に応じて入力できます。たとえば、次の式は給
与が$50,000を超える従業員すべてに対して、給与のメジアンを計算します。
MEDIAN( SALARY, SALARY > 50000 )
他の数値をフィルタ条件として使用することもできます。たとえば、MEDIAN関数の完全な
構文として、次のように入力することができます。これには、数値ポートが含まれていま
す。
MEDIAN( PRICE, QUANTITY > 0 )
いずれの場合も、Data Integration Serviceはフィルタ条件に対して小数値を整数に丸め
ます(たとえば、1.5は2に、1.2は1に、0.35は0になります)。 値が0に丸められた場合、
フィルタ条件はFALSEを返します。値を丸めたくない場合には、TRUNC関数で値を切り捨て
て整数にします。
MEDIAN( PRICE, TRUNC( QUANTITY ) > 0 )
フィルタ条件を省略すると、関数はポート内のすべての行を選択します。
文字関数
トランスフォーメーション言語には、以下の文字関数が用意されています。
¨ ASCII
¨ CHR
¨ CHRCODE
¨ CONCAT
¨ INITCAP
¨ INSTR
¨ LENGTH
¨ LOWER
¨ LPAD
34
章 6: 関数
¨ LTRIM
¨ METAPHONE
¨ REPLACECHR
¨ REPLACESTR
¨ RPAD
¨ RTRIM
¨ SOUNDEX
¨ SUBSTR
¨ UPPER
文字関数MAX、MIN、LOWER、UPPER、およびINITCAPは、Data Integration Serviceのコー
ドページを使用して文字データを求めます。
変換関数
トランスフォーメーション言語には、以下の変換関数が用意されています。
¨ TO_BIGINT
¨ TO_CHAR(Number)
¨ TO_DATE
¨ TO_DECIMAL
¨ TO_FLOAT
¨ TO_INTEGER
データークレンジング関数
トランスフォーメーション言語には、データーエラーをなくすための関数群があります。
データークレンジング関数を使用して、以下のタスクを完了できます。
¨ 入力値のテスト。
¨ 入力値のデーター型の変換。
¨ 文字列値の切り詰め。
¨ 文字列内の文字の上書き。
¨ 文字列のエンコード。
¨ 正規表現パターンのマッチ。
トランスフォーメーション言語には、以下のデータークレンジング関数が用意されていま
す。
¨ GREATEST
¨ IN
¨ INSTR
¨ IS_DATE
¨ IS_NUMBER
関数の分類
35
¨ IS_SPACES
¨ ISNULL
¨ LEAST
¨ LTRIM
¨ METAPHONE
¨ REG_EXTRACT
¨ REG_MATCH
¨ REG_REPLACE
¨ REPLACECHR
¨ REPLACESTR
¨ RTRIM
¨ SOUNDEX
¨ SUBSTR
¨ TO_BIGINT
¨ TO_CHAR
¨ TO_DATE
¨ TO_DECIMAL
¨ TO_FLOAT
¨ TO_INTEGER
日付関数
トランスフォーメーション言語にはいくつかの日付関数が用意され、日付を丸めたり、切
り捨てたり、比較したり、日付の一部を抽出したり、日付に算術演算を行ったりできま
す。
どの日付関数にも、日付データー型を持つ任意の値を渡すことができます。ただし、日付
関数に文字列を渡したい場合は、まずTO_DATE関数を使って文字列をトランスフォーメーシ
ョンのDate/Timeデーター型に変換する必要があります。
トランスフォーメーション言語には、以下の日付関数が用意されています。
¨ ADD_TO_DATE
¨ DATE_COMPARE
¨ DATE_DIFF
¨ GET_DATE_PART
¨ IS_DATE
¨ LAST_DAY
¨ MAKE_DATE_TIME
¨ MAX
¨ MIN
36
章 6: 関数
¨ ROUND (Date)
¨ SET_DATE_PART
¨ Systimestamp
¨ TO_CHAR(Date)
¨ TRUNC (Date)
一部の日付関数にはformat引数が含まれています。 この引数には、トランスフォーメーシ
ョン言語の形式文字列のいずれかを指定します。日付形式文字列は国際化されていませ
ん。
Date/Timeデーター型は、秒までの精度をサポートします。
関連項目:
¨ 「日付形式文字列」
(23ページの)
エンコード関数
トランスフォーメーション言語には、データーの暗号化、圧縮、エンコード、および
checksumのための以下の関数が用意されています。
¨ AES_DECRYPT
¨ AES_ENCRYPT
¨ COMPRESS[COMPRESS]
¨ CRC32
¨ DEC_BASE64
¨ DECOMPRESS
¨ ENC_BASE64
¨ MD5
財務関数
トランスフォーメーション言語には、以下の財務関数が用意されています。
¨ FV
¨ NPER
¨ PMT
¨ PV
¨ RATE
数値関数
トランスフォーメーション言語には、以下の数値関数が用意されています。
¨ ABS
¨ CEIL
関数の分類
37
¨ CONV
¨ CUME
¨ EXP
¨ FLOOR
¨ LN
¨ LOG
¨ MAX
¨ MIN
¨ MOD[MOD]
¨ MOVINGAVG
¨ MOVINGSUM
¨ POWER
¨ RAND
¨ ROUND
¨ SIGN
¨ SQRT
¨ TRUNC
科学関数
トランスフォーメーション言語には、以下の科学関数が用意されています。
¨ COS
¨ COSH
¨ SIN
¨ SINH
¨ TAN
¨ TANH
特殊関数
トランスフォーメーション言語には、以下の特殊関数が用意されています。
¨ ABORT
¨ DECODE
¨ ERROR
¨ IIF
¨ LOOKUP
一般に、特殊関数は式、フィルタ、およびUpdate Strategyトランスフォーメーションで使
用します。特殊関数の中に他の関数をネストすることもできます。また、集計関数の中に
特殊関数をネストすることもできます。
38
章 6: 関数
文字列関数
トランスフォーメーション言語には、以下の文字列関数が用意されています。
¨ CHOOSE
¨ INDEXOF
¨ MAX
¨ MIN
¨ REVERSE
テスト関数
トランスフォーメーション言語には、以下のテスト関数が用意されています。
¨ ISNULL
¨ IS_DATE
¨ IS_NUMBER
¨ IS_SPACES
ABORT
マッピングの実行を停止して、ログに指定のエラーメッセージを出力します。Data
Integration ServiceがABORT関数に遭遇した場合、その行のデータのトランスフォーメー
ションを強制終了します。 マッピングの実行が強制終了される前に、読み込まれた行を処
理します。Data Integration Serviceは、強制終了された行までのデータをターゲットに
書き込んでから、すべての未コミットデータを最後のコミット時点にロールバックしま
す。
データを検査するには、ABORTを使用します。一般にABORTは、IIFまたはDECODE関数内で、
セッションを強制終了する規則を設定するために使用されます。
入力ポートおよび出力ポートのデフォルト値に、ABORT関数を使用します。入力ポートにつ
いてABORT関数を使用することにより、NULL値をトランスフォーメーションに渡さないよう
にすることができます。また、ABORT関数を用いて、式内でのERROR関数の呼び出しを含
め、あらゆる種類のトランスフォーメーションエラーに対処することができます。デフォ
ルト値により、式内のERROR関数がオーバーライドされます。エラーの発生時に必ずセッシ
ョンが停止するようにしたければ、デフォルト値としてABORTを設定します。
未接続ポートに関する式の中でABORTを使用すると、Data Integration ServiceはABORT関
数を実行しません。
ABORT
39
構文
ABORT( string )
引数
必須/
説明
オプショ
ン
文字
列
必須
文字列。マッピングの実行の停止時にログに表示させる
メッセージを指定します。文字列の長さに制限はありま
せん。有効なトランスフォーメーション式を必要に応じ
て入力できます。
戻り値
NULL。
ABS
数値の絶対値を返します。
構文
ABS( numeric_value )
引数
必須/
説明
オプション
numeric_value
必須
数値データ型。絶対値を返したい値を渡しま
す。有効なトランスフォーメーション式を必要
に応じて入力できます。
戻り値
正の数値。ABSは、引数として渡された数値と同じデータ型を返します。Doubleを渡した場
合は、Doubleを返します。同様に、整数を渡した場合は、整数を返します。
関数にNULL値を渡した場合はNULLです。
注: 戻り値が15を超える精度を持つ10進値である場合は、高精度を有効にして、最大28桁
までの10進精度を使用可能にできます。
例
次の式は、2つの数値の差を、どちらが大きいかに関係なく正の値として返します。
ABS( PRICE - COST )
PRICE
250
52
169.95
40
章 6: 関数
COST
150
48
69.95
RETURN VALUE
100
4
100
PRICE
59.95
70
430
100
COST
NULL
30
330
200
RETURN VALUE
NULL
40
100
100
ADD_TO_DATE
指定された量をDate/Time値の一部に加算し、関数に渡した日付と同じ形式の日付を返しま
す。ADD_TO_DATEには、正または負の整数値を入力できます。ADD_TO_DATEを使用して、日
付の以下の部分を変更することができます。
¨ 年。 amount引数に正または負の整数を入力します。 年のフォーマット文字列として、
Y、YY、YYY、YYYYのいずれかを使用できます。次の式は、SHIP_DATEポートのすべての
日付に10年を加えます。
ADD_TO_DATE ( SHIP_DATE, 'YY', 10 )
¨ 月。 amount引数に正または負の整数を入力します。 月のフォーマット文字列として、
MM、MON、MONTHのいずれかを使用できます。次の式はSHIP_DATEポートのすべての日付
から10ヶ月を引きます。
ADD_TO_DATE( SHIP_DATE, 'MONTH', -10 )
¨ 日。 amount引数に正または負の整数を入力します。 日のフォーマット文字列として、
D、DD、DDD、DY、DAYのいずれかを使用できます。たとえば、式はSHIP_DATEポートのす
べての日付に10日を加えます。
ADD_TO_DATE( SHIP_DATE, 'DD', 10 )
¨ 時間。 amount引数に正または負の整数を入力します。 時間のフォーマット文字列とし
て、HH、HH12、HH24のいずれかを使用できます。以下の式は、SHIP_DATEポートのすべ
ての日付に14時間を加えます。
ADD_TO_DATE( SHIP_DATE, 'HH', 14 )
¨ 分。 amount引数に正または負の整数を入力します。 分の設定にはフォーマット文字列
MIを使用します。以下の式は、SHIP_DATEポートのすべての日付に25分を加えます。
ADD_TO_DATE( SHIP_DATE, 'MI', 25 )
¨ 秒。 amount引数に正または負の整数を入力します。 秒の設定にはSSフォーマット文字
列を使用します。以下の式は、SHIP_DATEポートのすべての日付に59秒を加えます。
ADD_TO_DATE( SHIP_DATE, 'SS', 59 )
¨ ミリ秒。 amount引数に正または負の整数を入力します。 秒の設定にはMSフォーマット
文字列を使用します。以下の式は、DATE_ポートの各日付の年の部分を返します。
ADD_TO_DATE( SHIP_DATE, 'MS', 125 )
¨ マイクロ秒。 amount引数に正または負の整数を入力します。 秒の設定にはUSフォーマ
ット文字列を使用します。以下の式は、DATE_ポートの各日付の年の部分を返します。
ADD_TO_DATE( SHIP_DATE, 'US', 2000 )
¨ ナノ秒。 amount引数に正または負の整数を入力します。 秒の設定にはNSフォーマット
文字列を使用します。以下の式は、DATE_ポートの各日付の年の部分を返します。
ADD_TO_DATE( SHIP_DATE, 'NS', 3000000 )
ADD_TO_DATE
41
構文
ADD_TO_DATE( date, format, amount )
引数
必須/
説明
オプシ
ョン
日付
必須
Date/Timeデータ型。変更したい値を渡します。有効な
トランスフォーメーション式を必要に応じて入力できま
す。
形式
必須
日付値の中で変更したい場所を指定するフォーマット文
字列。フォーマット文字列は'mm'のように一重引用符で
囲みます。フォーマット文字列は大文字と小文字を区別
しません。
amount
必須
日付値を変更する値として、年数、月数、日数、時間数
などを指定する整数値。整数を求める有効なトランスフ
ォーメーション式を必要に応じて入力できます。
戻り値
関数に渡した日付と同じ形式の日付。
関数に引数としてNULL値が渡された場合には、NULLです。
例
以下の式はすべて、DATE_SHIPPEDポートの各日付に1か月を加算します。特定の月に存在し
ない日を作成する値を渡すと、Data Integration Serviceはその月の最後の日を返しま
す。たとえば、Jan 31 1998に1か月を加えると、Data Integration ServiceはFeb 28
1998を返します。
また、ADD_TO_DATEはうるう年を認識し、Jan 29 2000に1か月を加えます。
ADD_TO_DATE( DATE_SHIPPED, 'MM', 1 )
ADD_TO_DATE( DATE_SHIPPED, 'MON', 1 )
ADD_TO_DATE( DATE_SHIPPED, 'MONTH', 1 )
DATE_SHIPPED
Jan 12 1998 12:00:30AM
Jan 31 1998 6:24:45PM
Jan 29 2000 5:32:12AM
Oct 9 1998 2:30:12PM
NULL
RETURN VALUE
Feb 12 1998 12:00:30AM
Feb 28 1998 6:24:45PM
Feb 29 2000 5:32:12AM (Leap Year)
Nov 9 1998 2:30:12PM
NULL
以下の式はすべて、DATE_SHIPPEDポートの各日付から10日を減算します。
ADD_TO_DATE(
ADD_TO_DATE(
ADD_TO_DATE(
ADD_TO_DATE(
ADD_TO_DATE(
DATE_SHIPPED,
DATE_SHIPPED,
DATE_SHIPPED,
DATE_SHIPPED,
DATE_SHIPPED,
DATE_SHIPPED
Jan 1 1997 12:00:30AM
Jan 31 1997 6:24:45PM
42
章 6: 関数
'D', -10 )
'DD', -10 )
'DDD', -10 )
'DY', -10 )
'DAY', -10 )
RETURN VALUE
Dec 22 1996 12:00AM
Jan 21 1997 6:24:45PM
DATE_SHIPPED
Mar 9 1996 5:32:12AM
Oct 9 1997 2:30:12PM
Mar 3 1996 5:12:20AM
NULL
RETURN
Feb 29
Sep 30
Feb 22
NULL
VALUE
1996 5:32:12AM (Leap Year)
1997 2:30:12PM
1996 5:12:20AM
以下の式はすべて、DATE_SHIPPEDポートの各日付から15時間を減算します。
ADD_TO_DATE( DATE_SHIPPED, 'HH', -15 )
ADD_TO_DATE( DATE_SHIPPED, 'HH12', -15 )
ADD_TO_DATE( DATE_SHIPPED, 'HH24', -15 )
DATE_SHIPPED
Jan 1 1997 12:00:30AM
Jan 31 1997 6:24:45PM
Oct 9 1997 2:30:12PM
Mar 3 1996 5:12:20AM
Mar 1 1996 5:32:12AM
NULL
RETURN VALUE
Dec 31 1996 9:00:30AM
Jan 31 1997 3:24:45AM
Oct 8 1997 11:30:12PM
Mar 2 1996 2:12:20PM
Feb 29 1996 2:32:12PM (Leap Year)
NULL
日付の使用について
ADD_TO_DATEの使用時には、下記のヒントを参照してください。
¨ フォーマット文字列を指定して、 amount引数を正または負の整数にすることにより、日
付のどの部分でも加算または減算することができます。
¨ 特定の月に存在しない日を作成する値を渡すと、Data Integration Serviceはその月の
最後の日を返します。たとえば、Jan 31 1998に1か月を加えると、Data Integration
ServiceはFeb 28 1998を返します。
¨ 日付の操作を容易にするために、TRUNCやROUNDをネストすることができます。
¨ TO_DATEをネストして文字を日付に変換できます。
¨ ADD_TO_DATEは、日付の中で指定された1か所のみを変更します。日付の標準時刻をサマ
ータイム時刻に変更したい場合には、日付の「時」部分を変更する必要があります。
AES_DECRYPT
復号化されたデータを文字列形式に返します。 Data Integration Serviceは、128ビット
エンコードのAES(Advanced Encryption Standard)アルゴリズムを使用します。 AESア
ルゴリズムは、FIPS(連邦情報処理規格)認可の暗号アルゴリズムです。
AES_DECRYPT
43
構文
AES_DECRYPT ( value, key )
引数
必須/
説明
オプシ
ョン
value
必須
バイナリデータ型。解読する値。
キー
必須
文字列データ型。精度16文字以下。キーにマッピング変
数を使用します。値を復号化するには、暗号化に使用し
たキーを使用します。
戻り値
復号化したバイナリ値。
NULL値を入力した場合は、NULLです。
例
以下の例では、復号化された社会保険番号が返されます。この例では、Data Integration
ServiceはSUBSRT関数を使用して、社会保険番号の始めの3桁の数字からキーを引き出しま
す。
AES_DECRYPT( SSN_ENCRYPT, SUBSTR( SSN,1,3 ))
SSN_ENCRYPT
07FB945926849D2B1641E708C85E4390
9153ACAB89D65A4B81AD2ABF151B099D
AF6B5E4E39F974B3F3FB0F22320CC60B
992D6A5D91E7F59D03B940A4B1CBBCBE
992D6A5D91E7F59D03B940A4B1CBBCBE
DECRYPTED VALUE
832-17-1672
832-92-4731
832-46-7552
832-53-6194
832-81-9528
AES_ENCRYPT
暗号化された形式でデータを返します。Data Integration Serviceは、128ビットエンコ
ードのAES(Advanced Encryption Standard)アルゴリズムを使用します。 AESアルゴリ
ズムは、FIPS(連邦情報処理規格)認可の暗号アルゴリズムです。
この関数を使用して、機密データが必要以上に露出されることを回避します。たとえば、
データウェアハウスに社会保険番号を格納する場合、AES_EMNCRYPT関数を使用して社会保
険番号を暗号化し、機密性を確保します。
44
章 6: 関数
構文
AES_ENCRYPT ( value, key )
引数
必須/
説明
オプシ
ョン
value
必須
文字列データ型。暗号化する値。
キー
必須
文字列データ型。精度16文字以下。キーにマッピング変
数を使用します。
戻り値
暗号化されたバイナリ値。
NULL値を入力した場合は、NULLです。
例
以下の例では、社会保険番号の暗号化された値が返されます。この例では、Data
Integration ServiceはSUBSTR関数を使用して、社会保険番号の始めの3桁の数字からキー
を引き出します。
AES_ENCRYPT( SSN, SUBSTR( SSN,1,3 ))
SSN
832-17-1672
832-92-4731
832-46-7552
832-53-6194
832-81-9528
ENCRYPTED VALUE
07FB945926849D2B1641E708C85E4390
9153ACAB89D65A4B81AD2ABF151B099D
AF6B5E4E39F974B3F3FB0F22320CC60B
992D6A5D91E7F59D03B940A4B1CBBCBE
992D6A5D91E7F59D03B940A4B1CBBCBE
ヒント
ターゲットでバイナリデータがサポートされていない場合、ENC_BASE64関数でAES_ENCRYPT
を使用して、データベースと互換性のある形式でデータを保存します。
ASCII
Data Integration ServiceをASCIIモードで動作するように設定している場合、ASCII関数
は渡された文字列の最初の文字に対応するASCII数値を返します。
Data Integration ServiceをUnicodeモードで動作するように設定している場合、ASCII関
数は渡された文字列の最初の文字に対応するUnicode数値を返します。 Unicode値の範囲は
0-65,535です。
ASCIIにはどのようなサイズの文字列でも渡せますが、求められるのは文字列の最初の文字
だけです。ASCIIに文字列値を渡す前に、ASCIIまたはUnicode値に変換したい特定の文字を
取り出します。たとえば、RTRIMなどの文字列操作関数を使用できます。数値を渡した場
ASCII
45
合、ASCIIはそれを文字列に変換して、その文字列の最初の文字のASCIIまたはUnicodeを返
します。
この関数の動作は、CHRCODE関数と同じです。既存の式でASCIIを使用している場合でも正
常に機能します。ただし、新しい式を作成する場合は、ASCII関数ではなくCHRCODE関数を
使用します。
構文
ASCII ( string )
引数
必須/
説明
オプシ
ョン
文字列
必須
文字列。ASCII値として返したい値を渡します。有効なト
ランスフォーメーション式を必要に応じて入力できま
す。
戻り値
整数。文字列の最初の文字のASCIIまたはUnicode値。
関数にNULL値を渡した場合はNULLです。
例
次の式は、ITEMSポートの各値の最初の文字に対応するASCIIまたはUnicode値を返します。
ASCII( ITEMS )
ITEMS
Flashlight
Compass
Safety Knife
Depth/Pressure Gauge
Regulator System
RETURN VALUE
70
67
83
68
82
AVG
行のグループのすべての値の平均を返します。 オプションとして、平均を計算するために
読み込む行を制限するフィルタを適用できます。AVGには他の集計関数は1つしかネストで
きません。また、ネストされた関数は数値データ型を返さなければなりません。
46
章 6: 関数
構文
AVG( numeric_value [, filter_condition ] )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。平均を計算したい値を渡します。有効
なトランスフォーメーション式を必要に応じて入力で
きます。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけれ
ばなりません。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
数値。
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合には、
NULLとなります。たとえば、すべての行に対するフィルタ条件の値がFALSEまたはNULLで
す。
注: 戻り値が15を超える精度を持つ10進値である場合は、高精度を有効にして、最大28桁
までの10進精度を使用可能にできます。
NULL
値がNULLであると、AVGはその行を無視します。ただし、ポートから渡された値がすべて
NULLである場合には、NULLを返します。
Group By
AVGは、トランスフォーメーションで定義したGroup Byポートに基づいて値をグループ分け
し、各グループについて1つの結果を返します。
Group Byポートがない場合には、AVGはすべての行を1つのグループとして扱い、1つの値を
返します。
例
次の式は、懐中電灯の平均卸売り原価を返します。
AVG( WHOLESALE_COST, ITEM_NAME='Flashlight' )
ITEM_NAME
Flashlight
Navigation Compass
Regulator System
Flashlight
Depth/Pressure Gauge
Flashlight
WHOLESALE_COST
35.00
8.05
150.00
29.00
88.00
31.00
RETURN VALUE: 31.66
AVG
47
ヒント
AVG関数で平均を計算する前に、AVGに渡す値に算術演算を実行することができます。以下
に例を示します。
AVG( QTY * PRICE - DISCOUNT )
CEIL
この関数に渡された数値以上の最小の整数を返します。 たとえば、CEILに3.14を渡すと、
4を返します。CEILに3.98を渡すと、4を返します。同様に、CEILに-3.17を渡すと、-3を返
します。
構文
CEIL( numeric_value )
引数
必須/
説明
オプシ
ョン
numeric_val
ue
必須
数値データ型。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
0-28の宣言された精度を持つ数値を渡した場合は、整数です。
28を超える宣言された精度を持つ数値を渡した場合は、Double値です。
関数にNULL値を渡した場合はNULLです。
例
次の式は、価格を次の整数に丸めて返します。
CEIL( PRICE )
PRICE
39.79
125.12
74.24
NULL
-100.99
RETURN VALUE
40
126
75
NULL
-100
ヒント: CEIL関数で整数を返す前に、CEILに渡す値に算術演算を実行することができま
す。たとえば、数値に10を掛けてからその結果の値より小さい最小の整数を計算したい場
合は、関数を次のように記述します。
CEIL( PRICE * 10 )
48
章 6: 関数
CHOOSE
文字列のリストから指定された位置の文字列を選択します。位置と値を指定します。値と
位置が一致する場合、Data Integration Serviceはその値を返します。
構文
CHOOSE( index, string1 [, string2, ..., stringN] )
引数
必須/
説明
オプシ
ョン
index
必須
数値データ型。一致させる値の位置に基づき、数字を入
力します。
文字列
必須
任意の文字値。
戻り値
インデックス値の位置に一致する文字列。
インデックス値の位置に一致する文字列が存在しない場合はNULLです。
例
以下の式は、インデックス値である2に基づき、‘flashlight’の文字列を返します。
CHOOSE( 2, 'knife', 'flashlight', 'diving hood' )
以下の式は、インデックス値である4に基づき、NULLを返します。
CHOOSE( 4, 'knife', 'flashlight', 'diving hood' )
式には4つ目の引数が含まれていないため、CHOOSEはNULLを返します。
CHR
Data Integration Serviceのデータ移動モードをASCIIに設定している場合、CHRは渡され
た数値に対応するASCII文字を返します。 ASCII値は0-255の範囲になります。CHRには任意
の整数を渡せますが、印刷可能な文字はASCIIコード32-126だけです。
Data Integration Serviceのデータ移動モードをUnicodeに設定している場合、CHRは渡さ
れた数値に対応するUnicode文字を返します。 Unicode値の範囲は0-65,535です。
CHOOSE
49
構文
CHR( numeric_value )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。ASCIIまたはUnicode文字として返した
い値を渡します。有効なトランスフォーメーション式
を必要に応じて入力できます。
戻り値
ASCIIまたはUnicode文字。1文字を含む文字列。
関数にNULL値を渡した場合はNULLです。
例
次の式は、ITEM_IDポートの各数値に対応するASCIIまたはUnicode文字を返します。
CHR( ITEM_ID )
ITEM_ID
65
122
NULL
88
100
71
RETURN VALUE
A
z
NULL
X
d
G
CHR関数を使用して、一重引用符を文字列に連結させることができます。 一重引用符は、
文字列リテラル内で使用できない唯一の文字です。次の例を検討します。
'Joan' || CHR(39) || 's car'
戻り値は次のとおりです。
Joan's car
CHRCODE
Data Integration ServiceをASCIIモードで動作するように設定している場合、CHRCODEは
渡された文字列の最初の文字に対応するASCII数値を返します。 ASCII値は0-255の範囲に
なります。
Data Integration ServiceをUnicodeモードで動作するように設定している場合、CHRCODE
は渡された文字列の最初の文字に対応するUnicode数値を返します。 Unicode値の範囲は
0-65,535です。
通常は、CHRCODEに文字列値を渡す前に、ASCIIまたはUnicode値に変換したい特定の文字を
取り出します。たとえば、RTRIMなどの文字列操作関数を使用できます。数値を渡した場
50
章 6: 関数
合、CHRCODEはそれを文字列に変換して、その文字列の最初の文字のASCIIまたはUnicodeを
返します。
この関数の動作は、ASCII関数と同じです。式で現在、ASCIIを使用している場合でも正し
く動作します。ただし、新しい式を作成する場合は、ASCII関数ではなくCHRCODE関数を使
用します。
構文
CHRCODE ( string )
引数
必須/
説明
オプシ
ョン
文字列
必須
文字列。ASCIIまたはUnicode値として返したい値を渡し
ます。有効なトランスフォーメーション式を必要に応じ
て入力できます。
戻り値
整数。
関数にNULL値を渡した場合はNULLです。
例
次の式は、ITEMSポートの各値の最初の文字に対応するASCIIまたはUnicode値を返します。
CHRCODE( ITEMS )
ITEMS
Flashlight
Compass
Safety Knife
Depth/Pressure Gauge
Regulator System
RETURN VALUE
70
67
83
68
82
COMPRESS
zlib 1.2.1圧縮アルゴリズムを使用してデータを圧縮します。広域ネットワークに大量の
データを送信する前に、COMPRESS関数を使用します。
構文
COMPRESS( value )
引数
必須/
説明
オプショ
ン
value
必須
文字列データ型。圧縮するデータ。
COMPRESS
51
戻り値
入力値の圧縮されたバイナリ値。
NULL値を入力した場合は、NULLです。
例
組織にはオンライン注文サービスがあります。顧客の注文データは、広域ネットワーク上
で送信します。ソースには10MBの行が格納されています。この行のデータは、COMPRESSを
使用して圧縮できます。データを圧縮すると、Data Integration Serviceがネットワーク
に書き込むデータの量が縮小されます。 そのため、パフォーマンスが向上します。
CONCAT
2つの文字列を連結します。CONCATは、文字列を連結する前にすべてのデータを文字に変換
します。 または、文字列演算子||を使用して文字列を連結します。CONCATではなく文字列
演算子||を使用すると、Data Integration Serviceのパフォーマンスが向上します。
構文
CONCAT( first_string, second_string )
引数
必須/
説明
オプシ
ョン
first_stri
ng
必須
任意のデータ型(Binaryを除く)。連結したい1番目
の文字列です。有効なトランスフォーメーション式を
必要に応じて入力できます。
second_str
ing
必須
任意のデータ型(Binaryを除く)。連結したい2番目
の文字列です。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
文字列。
文字列が両方ともNULLである場合には、NULLです。
NULL
いずれか一方の文字列がNULLである場合には、CONCATはその文字列を無視して、もう一方
の文字列を返します。
両方の文字列がNULLである場合には、CONCATはNULLを返します。
52
章 6: 関数
例
次の式は、FIRST_NAMEポートとLAST_NAMEポートの名前を連結します。
CONCAT( FIRST_NAME, LAST_NAME )
FIRST_NAME
John
NULL
Bobbi
Jason
Dan
Greg
NULL
100
LAST_NAME
Baer
Campbell
Apperley
Wood
Covington
NULL
NULL
200
RETURN VALUE
JohnBaer
Campbell
BobbiApperley
JasonWood
DanCovington
Greg
NULL
100200
CONCATでは文字列の間にスペースが追加されません。2つの文字列の間にスペースを追加し
たい場合には、2つのCONCAT関数をネストした式を記述することができます。たとえば、次
の式はまず名前の末尾にスペースを連結してから、姓を連結します。
CONCAT( CONCAT( FIRST_NAME, ' ' ), LAST_NAME )
FIRST_NAME
John
NULL
Bobbi
Jason
Dan
Greg
NULL
LAST_NAME
Baer
Campbell
Apperley
Wood
Covington
NULL
NULL
RETURN VALUE
John Baer
Campbell (includes leading blank)
Bobbi Apperley
Jason Wood
Dan Covington
Greg
NULL
CHRおよびCONCAT関数を使って、一重引用符を文字列に連結することができます。一重引用
符は、文字列リテラル内で使用できない唯一の文字です。次の例を検討します。
CONCAT( 'Joan', CONCAT( CHR(39), 's car' ))
戻り値は次のとおりです。
Joan's car
CONVERT_BASE
ある基準価格の数値を別の基準価格へ変換します。
CONVERT_BASE
53
構文
CONVERT_BASE( value, source_base, dest_base )
引数
必須/
説明
オプシ
ョン
value
必須
文字列データ型。他のベースに変換する値。最大値は
9,233,372,036,854,775,806 です。
source_ba
se
必須
数値データ型。変換するデータの現在のベース値。ベー
スの最小値は2です。ベースの最大値は36です。
dest_base
必須
数値データ型。データの変換後のベース値。ベースの最
小値は2です。ベースの最大値は36です。
戻り値
数値。
例
以下の例では、2222を小数点ベース値の10からバイナリベース値の2に変換します。
CONVERT_BASE( "2222", 10, 2 )
Data Integration Serviceは、100010101110を返します。
COS
数値(ラジアン単位)の余弦を返します。
構文
COS( numeric_value )
引数
必須/
説明
オプシ
ョン
numeric_v
alue
必須
数値データ型。ラジアンで表された数値データ(角度
にπを掛け、180で割ったもの)。余弦を計算したい値
を渡します。有効なトランスフォーメーション式を必
要に応じて入力できます。
戻り値
Double値。
関数にNULL値を渡した場合はNULLです。
54
章 6: 関数
例
次の式は、Degreesポートのすべての値に対して余弦を返します。
COS( DEGREES * 3.14159265359 / 180 )
DEGREES
0
90
70
30
5
18
89
NULL
RETURN VALUE
1.0
0.0
0.342020143325593
0.866025403784421
0.996194698091745
0.951056516295147
0.0174524064371813
NULL
ヒント: COS関数で余弦を計算する前に、COSに渡す値に算術演算を実行することができま
す。たとえば次のように、ポート内の値をラジアンに変換してから余弦を計算することが
できます。
COS( ARCS * 3.14159265359 / 180 )
COSH
数値(ラジアン単位)の双曲余弦を返します。
構文
COSH( numeric_value )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。ラジアンで表された数値データ(角度
にπを掛け、180で割ったもの)。双曲余弦を計算した
い値を渡します。有効なトランスフォーメーション式
を必要に応じて入力できます。
戻り値
Double値。
関数にNULL値を渡した場合はNULLです。
例
次の式は、Anglesポートの値に対して双曲余弦を返します。
COSH( ANGLES )
ANGLES
1.0
2.897
RETURN VALUE
1.54308063481524
9.0874465864177
COSH
55
ANGLES
3.66
5.45
0
0.345
NULL
RETURN VALUE
19.4435376920294
116.381231106176
1.0
1.06010513656773
NULL
ヒント: COSH関数で双曲余弦を計算する前に、COSHに渡す値に算術演算を実行することが
できます。以下に例を示します。
COSH( MEASURES.ARCS / 360 )
COUNT
グループ内でNULL以外の値を持つ行の数を返します。オプションで、アスタリスク(*)引
数を指定すれば、トランスフォーメーション内のすべての入力値の数を数えることもでき
ます。COUNTの中にネストできる他の集計関数は1つだけです。行数を数える前に、条件に
基づいて行をフィルタリングすることができます。
構文
COUNT( value [, filter_condition] )
または
COUNT( * [, filter_condition] )
引数
必須/
説明
オプシ
ョン
value
必須
任意のデータ型(Binaryを除く)。数えたい値を渡し
ます。有効なトランスフォーメーション式を必要に応
じて入力できます。
*
オプシ
ョン
を指定すると、トランスフォーメーション内のすべて
の行を数えられます。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけれ
ばなりません。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
整数。
関数に渡された値がすべてNULLである場合は、0です(アスタリスク(*)引数を指定した
場合は除きます)。
56
章 6: 関数
NULL
値がすべてNULLである場合、関数は0を返します。
アスタリスク引数を指定した場合には、関数は、行のカラムにNULL値があるかどうかに関
係なく、すべての行を数えます。
value引数を指定した場合には、関数はNULL値の列を無視します。
Group By
COUNTは、トランスフォーメーションで定義したGroup Byポートに基づいて値をグループ分
けし、各グループについて1つの結果を返します。Group Byポートがない場合には、COUNT
はすべての行を1つのグループとして扱い、1つの値を返します。
例
次の式は、在庫が5個未満(NULLを除く)の品物がいくつあるかを数えます。
COUNT( ITEM_NAME, IN_STOCK < 5 )
ITEM_NAME
Flashlight
NULL
Compass
Regulator System
Safety Knife
Halogen Flashlight
RETURN VALUE: 1
IN_STOCK
10
2
NULL
5
8
1
この例では、「Halogen flashlight」は数えられますが、NULLの項目は数えられません。
次の例の場合は、NULL値を含めてトランスフォーメーション内のすべての行数を数えま
す。
COUNT( *, QTY < 5 )
ITEM_NAME
Flashlight
NULL
Compass
Regulator System
Safety Knife
Halogen Flashlight
RETURN VALUE: 2
QTY
10
2
NULL
5
8
1
この例では、NULL項目と「Halogen flashlight」が数えられます。アスタリスク引数を指
定して、フィルタを使用しない場合は、トランスフォーメーションに渡される行がすべて
数えられます。以下に例を示します。
COUNT( * )
ITEM_NAME
Flashlight
NULL
Compass
Regulator System
Safety Knife
Halogen Flashlight
RETURN VALUE: 6
QTY
10
2
NULL
5
8
1
COUNT
57
CRC32
32ビットCyclic Redundancy Check (CRC32)の値を返します。CRC32を使用して、データ転
送エラーを検索します。ファイルに保存されているデータが変更されていないか確認する
ためにも、CRC32を使用できます。CRC32を使用してASCIIモードおよびUnicodeモードにお
いてデータの冗長性チェックを実行する場合、Data Integration Serviceは同じ入力値に
対して異なる結果を生成することがあります。
構文
CRC32( value )
引数
必須/
説明
オプシ
ョン
value
必須
データ型は文字列またはバイナリ。冗長性チェックを実行
する値を渡します。入力値では、大文字と小文字が区別さ
れます。入力値の大文字と小文字が区別されると、戻り値
に影響します。たとえば、CRC32(informatica)とCRC32
(Informatica)では、異なる戻り値が返されます。
戻り値
32ビットの整数値。
例
広域ネットワーク全体のソースからデータを読み込む必要があるとします。データは、転
送中に変更しなければなりません。ファイル内のデータのchecksumを計算し、ファイルと
一緒に保存できます。ソースデータ読み込み時に、Data Integration ServiceはCRC32を
使用してchecksumを計算し、保存されている値と比較できます。 2つの値が一致する場
合、データは変更されています。
CUME
現在の合計を返します。 つまり、CUMEは値を1つ加算するたびに合計を返します。 現在の
合計を計算する前に、一部の行を除外するフィルタ条件を追加することもできます。
CUMEおよび同種の関数(MOVINGAVG、MOVINGSUMなど)を使用すると、現在の値を計算する
ことによりレポート作成が簡単になります。
58
章 6: 関数
構文
CUME( numeric_value [, filter_condition] )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。現在の合計を計算したい値を渡しま
す。有効なトランスフォーメーション式を必要に応じ
て入力できます。ネストした式を作成することによ
り、関数の結果に基づいて(結果が数値である限り)
現在の合計を計算することができます。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけれ
ばなりません。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
数値。
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合(たと
えば、フィルタ条件の値がすべての行に対してFALSEまたはNULLであった場合)には、NULL
です。
注: 戻り値が15を超える精度を持つ10進値である場合は、高精度を有効にして、最大28桁
までの10進精度を使用可能にできます。
NULL
値がNULLであると、CUMEは前の行での現在の合計を返します。ただし、選択されたポート
の値がすべてNULLである場合には、NULLを返します。
例
CUME関数を使用すると、次のような行のセットが得られます。
CUME( PERSONAL_SALES )
PERSONAL_SALES
40000
80000
40000
60000
NULL
50000
RETURN VALUE
40000
120000
160000
220000
220000
270000
同様に、現在の合計を計算する前に値を加算することもできます。
CUME( CA_SALES + OR_SALES )
CA_SALES
40000
80000
40000
60000
OR_SALES
10000
50000
2000
NULL
RETURN VALUE
50000
180000
222000
222000
CUME
59
CA_SALES
NULL
50000
OR_SALES
NULL
3000
RETURN VALUE
222000
275000
DATE_COMPARE
2つの日付のうちどちらが早いかを示す整数を返します。DATE_COMPAREは、日付値ではなく
整数値を返します。
構文
DATE_COMPARE( date1, date2 )
引数
必須/
説明
オプシ
ョン
date1
必須
Date/Timeデータ型。比較したい1つ目の日付です。値が
日付となる有効なトランスフォーメーション式を必要に
応じて入力できます。
date2
必須
Date/Timeデータ型。比較したい2つ目の日付です。値が
日付となる有効なトランスフォーメーション式を必要に
応じて入力できます。
戻り値
1つ目の日付のほうが早い場合は、-1。
2つの日付が同じである場合は、0。
2つ目の日付のほうが早い場合は、1。
一方の日付がNULLである場合は、NULL。
例
次の式は、DATE_PROMISEDポートとDATE_SHIPPEDポートの各日付を比較して、どちらが早
いかを示す整数を返します。
DATE_COMPARE( DATE_PROMISED, DATE_SHIPPED )
DATE_PROMISED
Jan 1 1997
Feb 1 1997
Dec 22 1997
Feb 29 1996
NULL
Jan 13 1997
60
章 6: 関数
DATE_SHIPPED
Jan 13 1997
Feb 1 1997
Dec 15 1997
Apr 12 1996
Jan 6 1997
NULL
RETURN VALUE
-1
0
1
-1 (Leap year)
NULL
NULL
DATE_DIFF
2つの日付の間の時間の長さを返します。要求できるフォーマットは年、月、日、時間、
分、または秒です。Data Integration Serviceは、1つ目の日付から2つ目の日付を減算し
て、差を返します。
Data Integration Serviceは、日数ではなく月数に基づいてDATE_DIFF関数を計算しま
す。各月の選択された日で、1カ月に満たない月の日付の差を計算します。1カ月に満た
ない月の日付の差を計算するために、Data Integration Serviceは月内の日を加算しま
す。次に、その値を選択された月の全日数で除算します。
Data Integration Serviceは、うるう年と非うるう年では同じ期間で異なる値を算出しま
す。違いが発生するのは、DATE_DIFF関数に2月が含まれる場合です。DATE_DIFFは、うるう
年の2月は29日間で除算し、非うるう年の場合は28日間で除算します。
たとえば、9月13日から2月19日までの月数を計算するとします。うるう年の場合、
DATE_DIFF関数は2月を19/29ヶ月、つまり0.655ヶ月と計算します。非うるう年の場合、
DATE_DIFF関数は2月を19/28ヶ月、つまり0.678ヶ月と計算します。Data Integration
Serviceは、残りの月の日の差を同様に計算し、DATE_DIFF関数が指定された期間における
合計値を返します。
注: 日付の差を計算するのに異なるアルゴリズムを使用するデータベースもあります。
構文
DATE_DIFF( date1, date2, format )
引数
必須/
説明
オプシ
ョン
date1
必須
Date/Timeデータ型。比較したい1つ目の日付の値を渡し
ます。有効なトランスフォーメーション式を必要に応じ
て入力できます。
date2
必須
Date/Timeデータ型。比較したい2つ目の日付の値を渡し
ます。有効なトランスフォーメーション式を必要に応じ
て入力できます。
形式
必須
日付または時間計測の単位を指定するフォーマット文字
列。年、月、日、時間、分、または秒が指定できま
す。'mm'など、日付の中の1つの部分のみを指定できま
す。フォーマット文字列は一重引用符で囲んでくださ
い。フォーマット文字列は大文字と小文字を区別しませ
ん。(たとえば、フォーマット文字
列'mm'は'MM'、'Mm'、'mM'と同じです。
戻り値
Double値。もしも date1 が date2 より遅い日付である場合には、戻り値は正の数です。
date1 が date2 より早い日付である場合には、戻り値は負の数です。
2つの日付が同じである場合は、0です。
一方(または両方)の日付がNULLである場合は、NULLです。
DATE_DIFF
61
例
次の式は、DATE_PROMISEDポートとDATE_SHIPPEDポートの日付の差が何時間あるかを返し
ます。
DATE_DIFF( DATE_PROMISED, DATE_SHIPPED, 'HH' )
DATE_DIFF( DATE_PROMISED, DATE_SHIPPED, 'HH12' )
DATE_DIFF( DATE_PROMISED, DATE_SHIPPED, 'HH24' )
DATE_PROMISED
Jan 1 1997 12:00:00AM
Mar 29 1997 12:00:00PM
NULL
Dec 10 1997 5:55:10PM
Jun 3 1997 1:13:46PM
Feb 19 2004 12:00:00PM
DATE_SHIPPED
Mar 29 1997 12:00:00PM
Jan 1 1997 12:00:00AM
Dec 10 1997 5:55:10PM
NULL
Aug 23 1996 4:20:16PM
Feb 19 2005 12:00:00PM
RETURN VALUE
-2100
2100
NULL
NULL
6812.89166666667
-8784
次の式は、DATE_PROMISEDポートとDATE_SHIPPEDポートの日付の差を日数で返します。
DATE_DIFF(
DATE_DIFF(
DATE_DIFF(
DATE_DIFF(
DATE_DIFF(
DATE_PROMISED,
DATE_PROMISED,
DATE_PROMISED,
DATE_PROMISED,
DATE_PROMISED,
DATE_PROMISED
Jan 1 1997 12:00:00AM
Mar 29 1997 12:00:00PM
NULL
Dec 10 1997 5:55:10PM
Jun 3 1997 1:13:46PM
Feb 19 2004 12:00:00PM
DATE_SHIPPED,
DATE_SHIPPED,
DATE_SHIPPED,
DATE_SHIPPED,
DATE_SHIPPED,
'D' )
'DD' )
'DDD' )
'DY' )
'DAY' )
DATE_SHIPPED
Mar 29 1997 12:00:00PM
Jan 1 1997 12:00:00AM
Dec 10 1997 5:55:10PM
NULL
Aug 23 1996 4:20:16PM
Feb 19 2005 12:00:00PM
RETURN VALUE
-87.5
87.5
NULL
NULL
283.870486111111
-366
次の式は、DATE_PROMISEDポートとDATE_SHIPPEDポートの日付の差を月数で返します。
DATE_DIFF( DATE_PROMISED, DATE_SHIPPED, 'MM' )
DATE_DIFF( DATE_PROMISED, DATE_SHIPPED, 'MON' )
DATE_DIFF( DATE_PROMISED, DATE_SHIPPED, 'MONTH' )
DATE_PROMISED
Jan 1 1997 12:00:00AM
Mar 29 1997 12:00:00PM
NULL
Dec 10 1997 5:55:10PM
Jun 3 1997 1:13:46PM
Feb 19 2004 12:00:00PM
DATE_SHIPPED
Mar 29 1997 12:00:00PM
Jan 1 1997 12:00:00AM
Dec 10 1997 5:55:10PM
NULL
Aug 23 1996 4:20:16PM
Feb 19 2005 12:00:00PM
RETURN VALUE
-2.91935483870968
2.91935483870968
NULL
NULL
9.3290162037037
-12
次の式は、DATE_PROMISEDポートとDATE_SHIPPEDポートの日付の差を年数で返します。
DATE_DIFF(
DATE_DIFF(
DATE_DIFF(
DATE_DIFF(
DATE_PROMISED,
DATE_PROMISED,
DATE_PROMISED,
DATE_PROMISED,
DATE_PROMISED
Jan 1 1997 12:00:00AM
Mar 29 1997 12:00:00PM
NULL
Dec 10 1997 5:55:10PM
62
章 6: 関数
DATE_SHIPPED,
DATE_SHIPPED,
DATE_SHIPPED,
DATE_SHIPPED,
'Y' )
'YY' )
'YYY' )
'YYYY' )
DATE_SHIPPED
Mar 29 1997 12:00:00PM
Jan 1 1997 12:00:00AM
Dec 10 1997 5:55:10PM
NULL
RETURN VALUE
-0.24327956989247
0.24327956989247
NULL
NULL
DATE_PROMISED
Jun 3 1997 1:13:46PM
Feb 19 2004 12:00:00PM
DATE_SHIPPED
Aug 23 1996 4:20:16PM
Feb 19 2005 12:00:00PM
RETURN VALUE
0.77741801697531
-1
次の式は、DATE_PROMISEDポートとDATE_SHIPPEDポートの日付の差を月数で返します。
DATE_DIFF( DATE_PROMISED, DATE_SHIPPED, 'MM' )
DATE_DIFF( DATE_PROMISED, DATE_SHIPPED, 'MON' )
DATE_DIFF( DATE_PROMISED, DATE_SHIPPED, 'MONTH' )
DATE_PROMISED
DATE_SHIPPED
Sept 13
NULL
Sept 13
Feb 19
Feb 19
NULL
LEAP YEAR VALUE
(in Months)
-5.237931034
NULL
NULL
NON-LEAP YEAR VALUE
(in Months)
-5.260714286
N/A
N/A
DEC_BASE64
Base64のエンコードされた値をデコードし、データを表すバイナリデータと文字列を返し
ます。ENC_BASE64を使用してエンコードしたデータをDEC_BASE64を使用してデコードする
場合、同じデータ移動モードを使用してマッピングを実行する必要があります。それ以外
の場合は、デコードしたデータの出力は元のデータと異なる可能性があります。
構文
DEC_BASE64( value )
引数
必須/
説明
オプション
value
必須
文字列データ型。デコードするデータ。
戻り値
デコードしたバイナリ値。
NULL値を入力した場合は、NULLです。
UnicodeモードとASCIIモードでマッピングを実行した場合の戻り値は異なります。
DECODE
ポートから指定した値を検索します。値を見つけると、定義された結果値を返します。1つ
のDECODE関数内には、いくつでも検索を指定できます。
DECODEを使って文字列ポートの値を検索する場合には、RTRIM関数で末尾の空白を削除する
こともできますし、検索文字列内に空白を含めることもできます。
DEC_BASE64
63
構文
DECODE( value, first_search, first_result [, second_search, second_result]...[,default] )
引数
必須/
説明
オプシ
ョン
value
必須
任意のデータ型(Binaryを除く)。検索対象となる値を
渡します。有効なトランスフォーメーション式を必要に
応じて入力できます。
search
必須
value引数と同じデータ型を持つ任意の値。検索したい値
を渡します。検索する値と値引数は、必ず一致させる必
要があります。値の一部を検索することはできません。
また、検索する値では大文字と小文字が区別されます。
たとえば、特定のポートで文字列'Halogen
Flashlight'を検索したい場合には、'Halogen'だけでな
く'Halogen Flashlight'と入力する必要がありま
す。'Halogen'と入力すると、一致する値が見つかりま
せん。有効なトランスフォーメーション式を必要に応じ
て入力できます。
result
必須
任意のデータ型(Binaryを除く)。検索で一致した値が
見つかったときに返す値です。有効なトランスフォーメ
ーション式を必要に応じて入力できます。
default
オプシ
ョン
任意のデータ型(Binaryを除く)。検索で一致した値が
見つからなかったときに返す値です。有効なトランスフ
ォーメーション式を必要に応じて入力できます。
戻り値
一致した値が見つかった場合は、 First_result。
一致した値が見つからなかった場合は、デフォルト値。
一致した値が見つからなかった場合、デフォルト値を指定していなければNULL。
複数の条件に一致した場合でも、Data Integration Serviceは最初に一致した結果を返し
ます。
データにマルチバイト文字が含まれ、DECODE式で文字列データを比較する場合、Data
Integration Serviceのコードページとデータ移動モードに応じた戻り値が返されます。
DECODEとデータ型
DECODEを使う場合、戻り値のデータ型は常に最大の精度を持つ結果のデータ型と同じで
す。
たとえば、次のような式があるとします。
DECODE ( CONST_NAME
'Five', 5,
'Pythagoras', 1.414213562,
'Archimedes', 3.141592654,
'Pi', 3.141592654 )
64
章 6: 関数
この式の戻り値は5、1.414213562、3.141592654です。最初の結果は整数で、残りの結果
は小数です。Decimalデータ型は整数データ型よりも精度が高くなります。この式では、結
果は常にDecimalデータ型として記述します。
高精度モードでマッピングを実行する場合、結果のうちどれか1つでもDoubleであれば、戻
り値のデータ型はDoubleとなります。
文字列戻り値と数値戻り値の両方を備えるDECODE関数は作成できません。
たとえば、下記の式は無効となります。
DECODE ( CONST_NAME
'Five', 5,
'Pythagoras', '1.414213562',
'Archimedes', '3.141592654',
'Pi', 3.141592654 )
上記の式を検査すると、下記のエラーメッセージが表示されます。
Function cannot resolve operands of ambiguously mismatching datatypes.
例
次の式は、DECODEを使用し、特定のITEM_IDを検索してITEM_NAMEを返します。
DECODE( ITEM_ID, 10, 'Flashlight',
14, 'Regulator',
20, 'Knife',
40, 'Tank',
'NONE' )
ITEM_ID
10
14
17
20
25
NULL
40
RETURN VALUE
Flashlight
Regulator
NONE
Knife
NONE
NONE
Tank
検索値がITEM_IDに一致しないため、DECODEは項目17および 25に対してデフォルト値の
NONEを返します。また、NULLのITEM_IDに対してもNONEを返しています。
次の式は、複数の列および条件をテストして、上から順に'TRUE'であるか'FALSE'であるか
を求めます。
DECODE( TRUE,
Var1 = 22,
Var2 = 49,
Var1 < 23,
Var2 > 30,
'Variables
Var1
21
22
23
24
25
Var2
47
49
49
27
50
'Variable 1
'Variable 2
'Variable 1
'Variable 2
were out of
was 22!',
was 49!',
was less than 23.',
was more than 30.',
desired ranges.')
RETURN VALUE
Variable 1 was
Variable 1 was
Variable 2 was
Variables were
Variable 2 was
less than 23.
22!
49!
out of desired ranges.
more than 30.
DECODE
65
DECOMPRESS
zlib 1.2.1圧縮アルゴリズムを使用してデータを解凍します。DECOMPRESS関数は、
COMPRESS関数またはzlib 1.2.1アルゴリズムを使用する圧縮ツールによって圧縮されたデ
ータで使用します。データを解凍するマッピングで、データ圧縮のマッピングと異なるデ
ータ移動モードが使用されている場合、解凍されたデータの出力は、元のデータと異なる
場合があります。
構文
DECOMPRESS( value, precision )
引数
必須/
説明
オプシ
ョン
value
必須
バイナリデータ型。解凍するデータ。
precision
オプシ
ョン
Integerデータ型。
戻り値
入力値の解凍されたバイナリ値。
NULL値を入力した場合は、NULLです。
ENC_BASE64
データのエンコードは、MIME (Multipurpose Internet Mail Extensions)エンコードを使
用してバイナリデータを文字列データに変換します。バイナリデータをサポートしていな
いデータベースまたはファイルにデータを保存する場合、データをエンコードします。ま
た、トランスフォーメーションを利用して文字列フォーマットのバイナリデータを渡すた
めにも、データをエンコードできます。エンコードされたデータは、元のデータより約33%
長くなります。データは、ランダムに並べられた文字セットとして表示されます。
構文
ENC_BASE64( value )
引数
必須/
説明
オプショ
ン
value
66
章 6: 関数
必須
バイナリデータ型または文字列データ型。エンコー
ドするデータ。
戻り値
エンコードされた値。
NULL値を入力した場合は、NULLです。
ERROR
Data Integration Serviceに行をスキップさせて、定義したエラーメッセージを表示させ
ます。 エラーメッセージはログに表示されます。Data Integration Serviceは、スキッ
プした行を拒否ファイルに書き込みません。
ExpressionトランスフォーメーションでERRORを使用して、データを検査します。一般に
ERRORは、IIFまたはDECODE関数内で、行をスキップする規則を設定するために使用されま
す。
入力ポートおよび出力ポートのデフォルト値に、ERROR関数を使用します。入力ポートにつ
いてERROR関数を使用することにより、NULL値をトランスフォーメーションに渡さないよう
にすることができます。
出力ポートについては、式内でのERROR関数の呼び出しなど、ERROR関数を用いて、あらゆ
る種類の変換エラーに対処してください。式の中または出力ポートのデフォルト値でERROR
関数を使用する場合、Data Integration Serviceは行をスキップし、式およびデフォルト
値からのエラーメッセージの両方を記録します。 Data Integration Serviceがエラーと
なる行をスキップするよう設定するには、デフォルト値としてERRORを指定します。
ERROR以外の出力デフォルト値を使用した場合、デフォルト値により式内のERROR関数がオ
ーバーライドされます。たとえば、式内でERROR関数を使用し、出力ポートにデフォルト値
‘1234’を割り当てるとします。Data Integration Serviceは、式の中でERROR関数を見
つけるたびに、エラーを'1234'の値で上書きし、次のトランスフォーメーション
に'1234'を渡します。 行はスキップされず、ログにエラーは記録されません。
構文
ERROR( string )
引数
必須/
説明
オプシ
ョン
文字列
必須
文字列値。Integration Serviceが、ERROR関数を含む式
に基づいて行をスキップした場合に表示するメッセー
ジ。文字列の長さに制限はありません。
戻り値
文字列。
例
以下の例は、組織内における全部署の従業員の平均給与を計算するマッピングを参照する
場合に、負の値をスキップする方法を示しています。次に示す式では、Data Integration
ERROR
67
ServiceがSalaryポートに負の給与を見つけた場合にその行をスキップしてエラーを表示す
るよう、IIF式内にERROR関数をネストします。
IIF( SALARY < 0, ERROR ('Error. Negative salary found. Row skipped.', EMP_SALARY )
SALARY
10000
-15000
NULL
150000
1005
RETURN VALUE
10000
'Error. Negative salary found. Row skipped.'
NULL
150000
1005
EXP
Eの指定乗(指数)を返します(E=2.71828183)。たとえば、EXP(2)は7.38905609893065を
返します。通常、この関数はビジネスデータではなく、科学データや技術データの分析に
使用します。EXPはLN関数の逆数です。LNは数値の自然対数を返します。
構文
EXP( exponent )
引数
必須/
説明
オプシ
ョン
exponent
必須
数値データ型。eの累乗に対する指数の値有効なトランス
フォーメーション式を必要に応じて入力できます。
戻り値
Double値。
関数に引数としてNULL値が渡された場合には、NULL。
例
次の式では、Numbersポートに格納されている値を指数値として使っています。
EXP( NUMBERS )
NUMBERS
10
-2
8.55
NULL
68
章 6: 関数
RETURN VALUE
22026.4657948067
0.135335283236613
5166.754427176
NULL
FIRST
ポートまたはグループ内で最初に見つかった値を返します。オプションとして、Data
Integration Serviceが読み込む行を制限するフィルタを適用できます。 FIRSTの中にネ
ストできる他の集計関数は1つだけです。
構文
FIRST( value [, filter_condition ] )
引数
必須/
説明
オプシ
ョン
value
必須
任意のデータ型(Binaryを除く)。最初の値を返した
い値を渡します。有効なトランスフォーメーション式
を必要に応じて入力できます。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけれ
ばなりません。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
グループの最初の値。
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合(たと
えば、フィルタ条件の値がすべての行に対してFALSEまたはNULLであった場合)には、NULL
です。
NULL
値がNULLであると、FIRSTはその行を無視します。ただし、ポートから渡された値がすべて
NULLである場合には、NULLを返します。
Group By
FIRSTは、トランスフォーメーションで定義したGroup Byポートに基づいて値をグループ分
けし、各グループについて1つの結果を返します。
Group Byポートがない場合には、FIRSTはすべての行を1つのグループとして扱い、1つの値
を返します。
例
次の式は、ITEM_NAMEポート内で価格が$10.00を超える最初の値を返します。
FIRST( ITEM_NAME, ITEM_PRICE > 10 )
ITEM_NAME
Flashlight
Navigation Compass
Regulator System
Flashlight
Depth/Pressure Gauge
ITEM_PRICE
35.00
8.05
150.00
29.00
88.00
FIRST
69
ITEM_NAME
Flashlight
RETURN VALUE: Flashlight
ITEM_PRICE
31.00
次の式は、ITEM_NAMEポート内で価格が$40.00を超える最初の値を返します。
FIRST( ITEM_NAME, ITEM_PRICE > 40 )
ITEM_NAME
Flashlight
Navigation Compass
Regulator System
Flashlight
Depth/Pressure Gauge
Flashlight
RETURN VALUE: Regulator System
ITEM_PRICE
35.00
8.05
150.00
29.00
88.00
31.00
FLOOR
渡された数値以下の最大の整数を返します。たとえば、FLOORに3.14を渡すと、3を返しま
す。3.98を渡すと、3を返します。同様に、-3.17を渡すと-4を返します。
構文
FLOOR( numeric_value )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。数値データを求める有効なトランスフ
ォーメーション式を必要に応じて入力できます。
戻り値
0-28の宣言された精度を持つ数値を渡した場合は、整数です。
28を超える宣言された精度を持つ数値を渡した場合は、Double値です。
関数にNULL値を渡した場合はNULLです。
例
次の式は、PRICEポートの値に等しいかそれより小さい最大の整数を返します。
FLOOR( PRICE )
PRICE
39.79
125.12
74.24
NULL
-100.99
70
章 6: 関数
RETURN VALUE
39
125
74
NULL
-101
ヒント: FLOORに渡す値に算術演算を実行することができます。たとえば、数値に10を掛
け、その結果より小さい最大整数を計算するには、以下の関数を書き込みます。
FLOOR( UNIT_PRICE * 10 )
FV
定期的に一定額を支払い、一定の利率で利息が付く投資の将来価値を返します。
構文
FV( rate, terms, payment [, present value, type] )
引数
必須/
説明
オプシ
ョン
rate
必須
数値。各期間で得た金利。十進数で表示されます。率
のパーセント値を100で割った小数を指定します。0以
上を指定する必要があります。
terms
必須
数値。期間または支払の数値。0より大きな値を指定
する必要があります。
payment
必須
数値。期間ごとの支払額。負の数を指定する必要があ
ります。
present
value
オプシ
ョン
数値。投資のカレント値。この引数を省略すると、FV
は0を使用します。
タイプ
オプシ
ョン
整数。支払時期。期首支払の場合は、1を入力しま
す。期末支払の場合は、0を入力します。デフォルト
は0です。0または1以外の値を入力すると、Data
Integration Serviceはその値を1として処理します。
戻り値
数値。
例
月1回の複利計算で年利9%の金利が(月利9%/12、または0.75%)支払われる口座に、$2,000
預金するとします。今後12ヶ月間は、毎月月初に250ドルを預金する予定です。以下の式で
は、この場合の1年後の口座残高は$5,337.96になります。
FV(0.0075, 12, -250, -2000, TRUE)
注意事項
期間ごとに得た金利を計算するには、年利を1年間の支払回数で除算します。支払値と現在
価値は支払額を指すため、負の値になります。
FV
71
GET_DATE_PART
日付の中の指定した部分を整数値として返します。したがって、日付の月の部分を返す式
を作成して「Apr 1 1997 00:00:00」のような日付を渡すと、GET_DATE_PARTは4を返しま
す。
構文
GET_DATE_PART( date, format )
引数
必須/
説明
オプシ
ョン
日付
必須
Date/Timeデータ型。有効なトランスフォーメーション
式を必要に応じて入力できます。
形式
必須
日付値の中で変更したい場所を指定するフォーマット文
字列。フォーマット文字列は'mm'のように一重引用符で
囲みます。フォーマット文字列は大文字と小文字を区別
しません。各フォーマット文字列は、デフォルト形式MM/
DD/YYYY HH:MI:SSに基づいて日付の各部分の全体を返し
ます。
たとえば、日付「Apr 1 1997」をGET_DATE_PARTに渡す場
合、フォーマット文字列'Y'、'YY'、'YYY'、'YYYY'はす
べて1997を返します。
戻り値
日付の中の指定された部分を示す整数。
関数にNULL値を渡した場合はNULLです。
例
以下の式は、DATE_SHIPPEDポートの各日付の時の部分を返します。デフォルトの日付形式
は24時間方式に基づくため、12:00:00AMは0を返します。
GET_DATE_PART( DATE_SHIPPED, 'HH' )
GET_DATE_PART( DATE_SHIPPED, 'HH12' )
GET_DATE_PART( DATE_SHIPPED, 'HH24' )
DATE_SHIPPED
Mar 13 1997 12:00:00AM
Sep 2 1997 2:00:01AM
Aug 22 1997 12:00:00PM
June 3 1997 11:30:44PM
NULL
RETURN VALUE
0
2
12
23
NULL
以下の式は、DATE_SHIPPEDポートの各日付の日の部分を返します。
GET_DATE_PART( DATE_SHIPPED, 'D' )
GET_DATE_PART( DATE_SHIPPED, 'DD' )
GET_DATE_PART( DATE_SHIPPED, 'DDD' )
72
章 6: 関数
GET_DATE_PART( DATE_SHIPPED, 'DY' )
GET_DATE_PART( DATE_SHIPPED, 'DAY' )
DATE_SHIPPED
Mar 13 1997 12:00:00AM
June 3 1997 11:30:44PM
Aug 22 1997 12:00:00PM
NULL
RETURN VALUE
13
3
22
NULL
以下の式は、DATE_SHIPPEDポートの各日付の月の部分を返します。
GET_DATE_PART( DATE_SHIPPED, 'MM' )
GET_DATE_PART( DATE_SHIPPED, 'MON' )
GET_DATE_PART( DATE_SHIPPED, 'MONTH' )
DATE_SHIPPED
Mar 13 1997 12:00:00AM
June 3 1997 11:30:44PM
NULL
RETURN VALUE
3
6
NULL
以下の式は、DATE_SHIPPEDポートの各日付の年の部分を返します。
GET_DATE_PART(
GET_DATE_PART(
GET_DATE_PART(
GET_DATE_PART(
DATE_SHIPPED,
DATE_SHIPPED,
DATE_SHIPPED,
DATE_SHIPPED,
'Y' )
'YY' )
'YYY' )
'YYYY' )
DATE_SHIPPED
Mar 13 1997 12:00:00AM
June 3 1997 11:30:44PM
NULL
RETURN VALUE
1997
1997
NULL
GREATEST
入力値のリストから最大値を返します。この関数を使用すると、文字列、日付、または数
字の最大値が返されます。デフォルトでは、大文字と小文字を区別します。
構文
GREATEST( value1, [value2, ..., valueN,] CaseFlag )
引数
必須/
説明
オプシ
ョン
value
必須
任意のデータ型(Binaryを除く)。データ型は他の値と
の互換性が必要です。他の値と比較しなければならない
値。最低1つの値引数を入力する必要があります。
この値および他の入力値が数字の場合、すべての値で可
能な限り高い精度が適用されます。たとえば、一部の値
がIntegerデータ型で他の値がDoubleデータ型の場合、
GREATEST
73
引数
必須/
説明
オプシ
ョン
Data Integration Serviceは値をDoubleデータ型に変換
します。
CaseFlag
オプシ
ョン
整数でなければなりません。この関数の引数の大文字と
小文字を区別するかどうかを指定します。有効なトラン
スフォーメーション式を必要に応じて入力できます。
CaseFlagが0以外の数値の場合、大文字と小文字を区別
します。
CaseFlagがNULL値または0の場合、大文字と小文字を区
別しません。
戻り値
入力値の中で最大である場合は value1、入力値の中で最大である場合はvalue2など。
いずれかの引数がNULLである場合は、NULL。
例
次の式は、注文した項目の最大数を返します。
GREATEST( QUANTITY1, QUANTITY2, QUANTITY3 )
QUANTITIY1
150
QUANTITY2
756
QUANTITY3
27
5000
120
97
1724
17
965
RETURN VALUE
756
NULL
5000
1724
IIF
条件の結果に基づいて、指定した2つの値のうちの1つを返します。
構文
IIF( condition, value1 [,value2] )
引数
必須/
説明
オプシ
ョン
74
条件
必須
値を求める条件。TRUEまたはFALSEになる有効なトラン
スフォーメーション式を必要に応じて入力できます。
value1
必須
任意のデータ型(Binaryを除く)。条件がTRUEのときに
返したい値。戻り値は常にこの引数で指定したデータ型
章 6: 関数
引数
必須/
説明
オプシ
ョン
になります。有効なトランスフォーメーション式(別の
IIF式を含む)を必要に応じて入力できます。
value2
オプシ
ョン
任意のデータ型(Binaryを除く)。条件がFALSEのとき
に返したい値。有効なトランスフォーメーション式(別
のIIF式を含む)を必要に応じて入力できます。
一部のシステムで使用される条件関数と異なり、IIF関数ではFALSE条件( value2)は必須
ではありません。value2を省略すると、関数は条件がFALSEのときに以下の値を返します。
¨ >value</1>が数値データ型のときは、0。
¨ >value</1>が文字列データ型のときは、空文字列。
¨ >value</1>がDate/Timeデータ型のときは、NULL。
たとえば、下記の式にはFALSE条件が含まれず、 value1は文字列データ型であるため、Data
Integration Serviceは、FALSEとなる各行に対して空の文字列を返します。
IIF( SALES > 100, EMP_NAME )
SALES
150
50
120
NULL
EMP_NAME
John Smith
Pierre Bleu
Sally Green
Greg Jones
RETURN VALUE
John Smith
'' (empty string)
Sally Green
'' (empty string)
戻り値
条件がTRUEの場合はvalue1。
条件がFALSEの場合は value2。
たとえば、下記の式にはFALSE条件であるNULLが含まれるため、Data Integration Service
はFALSEとなる各行に対してNULLを返します。
IIF( SALES > 100, EMP_NAME, NULL )
SALES
150
50
120
NULL
EMP_NAME
John Smith
Pierre Bleu
Sally Green
Greg Jones
RETURN VALUE
John Smith
NULL
Sally Green
NULL
データにマルチバイト文字が含まれ、条件引数で文字列データを比較する場合、Data
Integration Serviceのコードページとデータ移動モードに応じた戻り値が返されます。
IIFとデータ型
IIFを使う場合、戻り値のデータ型は常に最大の精度を持つ結果のデータ型と同じです。
たとえば、次のような式があるとします。
IIF( SALES < 100, 1, .3333 )
IIF
75
TRUEの結果(1)は整数であり、FALSEの結果(.3333)は小数です。Decimalデータ型は整
数データ型よりも精度が高くなります。したがって、戻り値のデータ型は常に10進となり
ます。
高精度モードでマッピングを実行し、結果のうちどれか1つでもDoubleであれば、戻り値の
データ型はDoubleとなります。
IIFの特殊な使用法
ネストしたIIF文を使用して、複数の条件をテストできます。以下の例は、各種条件をテス
トし、販売額が0または負の場合には0を返します。
IIF( SALES > 0, IIF( SALES < 50, SALARY1, IIF( SALES < 100, SALARY2, IIF( SALES < 200, SALARY3,
BONUS))), 0 )
このロジックは、次のようにコメントを加えると読みやすくなります。
IIF( SALES > 0,
--then test to see if sales is between 1 and 49:
IIF( SALES < 50,
--then return SALARY1
SALARY1,
--else test to see if sales is between 50 and 99:
IIF( SALES < 100,
--then return
SALARY2,
--else test to see if sales is between 100 and 199:
IIF( SALES < 200,
--then return
SALARY3,
--else for sales over 199, return
BONUS)
)
),
--else for sales less than or equal to zero, return
0)
更新方式でIIFを使用します。以下に例を示します。
IIF( ISNULL( ITEM_NAME ), DD_REJECT, DD_INSERT)
IIFの代替手段
多くの場合、IIFの代わりに「DECODE」 (63ページの)を使用します。DECODEを使うとコー
ドが読みやすくなる場合があります。前節の最初の例でIIFの代わりにDECODEを使用する
と、以下のようになります。
DECODE( TRUE,
SALES > 0 and SALES < 50, SALARY1,
SALES > 49 AND SALES < 100, SALARY2,
SALES > 99 AND SALES < 200, SALARY3,
SALES > 199, BONUS)
また、IIFの代わりにFilterトランスフォーメーションを使用してパフォーマンスを向上で
きる場合もよくあります。
76
章 6: 関数
IN
入力値を値のリストとマッチングします。デフォルトでは、大文字と小文字を区別しま
す。
構文
IN( valueToSearch, value1, [value2, ..., valueN,] CaseFlag )
引数
必須/
説明
オプシ
ョン
valueToSea
rch
必須
文字列、日付または数値。値のカンマ区切りリストに
一致させる入力値。
value
必須
文字列、日付または数値。検索する値のカンマ区切り
リスト。値には、トランスフォーメーションのポートを
指定できます。一覧表示できる値の最大表示数は指定
されていません。
CaseFlag
オプシ
ョン
整数でなければなりません。この関数の引数の大文字
と小文字を区別するかどうかを指定します。有効なト
ランスフォーメーション式を必要に応じて入力できま
す。
CaseFlagが0以外の数値の場合、大文字と小文字を区別
します。
CaseFlagがNULL値または0の場合、大文字と小文字を区
別しません。
戻り値
入力値が値リストに一致する場合はTRUE (1)。
入力値が値リストに一致しない場合はFALSE (0)。
NULL値を入力した場合は、NULLです。
例
以下の式は、入力値がsafety Knife、Chisel Point Knife、Medium Titanium Knifeのい
ずれであるかを決定します。入力値は、必ずしもカンマ区切りリストの値の表記(大文字/
小文字)に一致させる必要はありません。
IN( ITEM_NAME, ‘Chisel Point Knife’, ‘Medium Titanium Knife’, ‘Safety Knife’, 0 )
ITEM_NAME
Stabilizing Vest
Safety knife
Medium Titanium knife
RETURN VALUE
0 (FALSE)
1 (TRUE)
1 (TRUE)
NULL
IN
77
INDEXOF
値リストから値のインデックスを検索します。デフォルトでは、大文字と小文字を区別し
ます。
構文
INDEXOF( valueToSearch, string1 [, string2, ..., stringN,] [CaseFlag] )
引数
必須/
説明
オプシ
ョン
valueToSe
arch
必須
文字列データ型。文字列リストで検索する値。
文字列
必須
文字列データ型。検索する値のカンマ区切りリスト。文
字列フォーマットの値を使用できます。一覧表示できる
値の最大表示数は指定されていません。CaseFlagをゼロ
に設定しなければ、値の大文字と小文字は区別されま
す。
CaseFlag
オプシ
ョン
整数でなければなりません。この関数の引数の大文字と
小文字を区別するかどうかを指定します。有効なトラン
スフォーメーション式を必要に応じて入力できます。
CaseFlagが0以外の数値の場合、または引数が設定され
ていない場合、大文字と小文字を区別します。
CaseFlagがNULL値または0の場合、大文字と小文字を区
別しません。
戻り値
入力値が<>string</1>に一致する場合は1、入力値が<>string</2>に一致する場合は2、以
下同じ。
入力値が見つからない場合は0です。
NULL値を入力した場合は、NULLです。
例
以下の式は、ITEM_NAMEポートの値が1番目、2番目、または3番目の文字列に一致するかど
うかを決定します。
INDEXOF( ITEM_NAME, ‘diving hood’, ‘flashlight’, ‘safety knife’)
ITEM_NAME
Safety Knife
diving hood
Compass
safety knife
flashlight
RETURN VALUE
0
1
0
3
2
Safety Knifeは入力値の表記(大文字/小文字)に一致しないため、0の値を返します。
78
章 6: 関数
INITCAP
文字列の各語の最初の文字を大文字に変換して、他の文字をすべて小文字に変換します。
語と語の区切りは、スペース(空白、改ページ、改行、復帰、タブ、垂直タブ)、または
英数字以外の文字です。 たとえば、文字列「...THOMAS」を渡すと、関数はThomasを返し
ます。
構文
INITCAP( string )
引数
必須/
説明
オプシ
ョン
文字列
必須
任意のデータ型(Binaryを除く)。有効なトランスフォ
ーメーション式を必要に応じて入力できます。
戻り値
文字列。データにマルチバイト文字が含まれている場合、戻り値はData Integration
Serviceのコードページとデータ移動モードに応じて異なります。
関数にNULL値を渡した場合はNULLです。
例
次の式は、FIRST_NAMEポート内のすべての名前について、最初の文字を大文字にします。
INITCAP( FIRST_NAME )
FIRST_NAME
ramona
18-albert
NULL
?!SAM
THOMAS
PierRe
RETURN VALUE
Ramona
18-Albert
NULL
?!Sam
Thomas
Pierre
INSTR
文字列の中で、指定した文字が左から数えて何文字目にあるかを返します。
INITCAP
79
構文
INSTR( string, search_value [,start [,occurrence [,comparison_type ]]] )
引数
必須/
説明
オプシ
ョン
文字列
必須
文字列はすべて文字からなっていなければなりません。
評価したい値を渡します。有効なトランスフォーメーシ
ョン式を必要に応じて入力できます。式の結果は文字列
でなければなりません。文字列ではない場合、評価する
前にINSTRが値を文字列に変換します。
search_va
lue
必須
任意の値。検索値では、大文字と小文字が区別されま
す。検索したい文字または文字列を指定します。
search_valueは、文字列の一部に一致する必要がありま
す。たとえば、INSTR('Alfred Pope', 'Alfred Smith')と記述す
ると、関数は0を返します。
有効なトランスフォーメーション式を必要に応じて入力
できます。文字列を検索したい場合は、'abc'のように
検索したい文字列を一重引用符で囲みます。
start
オプシ
ョン
整数値でなければなりません。文字列内で検索を開始す
る位置を示します。有効なトランスフォーメーション式
を必要に応じて入力できます。
デフォルト値は1です。つまり、INSTRは文字列の最初の
文字から検索を開始します。
開始位置が0の場合、INSTRは文字列の最初の文字から検
索を開始します。開始位置が正の数である場合、INSTR
は文字列の先頭からその数だけ数えた位置から検索を開
始します。開始位置が負の数である場合、INSTRは文字
列の最後からその数だけ数えた位置から検索を開始しま
す。この引数を省略すると、関数はデフォルト値の1を
使用します。
occurrenc
e
オプシ
ョン
0より大きい正の整数。有効なトランスフォーメーショ
ン式を必要に応じて入力できます。検索値が文字列内に
複数回出現する場合、何回目の出現を検索するかを指定
できます。たとえば、開始位置から2回目に出現する検
索値を検索する場合は、2を入力します。
この引数を省略すると、関数はデフォルト値の1を使用
します。この場合、INSTRは最初に出現する検索値を検
索します。小数を渡すと、Data Integration Service
はそれを最も近い整数値に丸めます。負の整数または0
を渡すと、セッションは失敗します。
compariso
n_type
オプシ
ョン
Data Integration ServiceをUnicodeモードで実行する
ときの、言語またはバイナリのいずれかの文字列の比較
型。Data Integration ServiceをASCIIモードで実行す
るときは、比較型は常にバイナリです。
言語比較では言語固有の照合規則を考慮し、バイナリ比
較ではビット単位の比較を行います。たとえば、ドイツ
語のシャープ文字であるsは、言語比較では文字
80
章 6: 関数
引数
必須/
説明
オプシ
ョン
列"ss"に一致しますが、バイナリ比較では一致しませ
ん。 バイナリ比較は、言語比較より高速に実行されま
す。
0または1のいずれかの整数値である必要があります。
- 0:INSTRは言語文字列比較を行います。
- 1:INSTRはバイナリ文字列比較を行います。
デフォルトは0です。
戻り値
検索が成功した場合は、整数。この整数は、 search_valueの最初の文字が文字列内で左か
ら数えて何文字目にあるかを示します。
検索に失敗した場合は、0です。
関数にNULL値を渡した場合はNULLです。
例
次の式は、各会社名の先頭から数えて、文字‘a’ が最初に出現する位置を返します。
search_value引数では大文字と小文字が区別されるため、‘Blue Fin Aqua Center’の
‘A’はスキップし、‘Aqua’の‘a’の位置を返します。
INSTR( COMPANY, 'a' )
COMPANY
Blue Fin Aqua Center
Maco Shark Shop
Scuba Gear
Frank's Dive Shop
VIP Diving Club
RETURN VALUE
13
2
5
3
0
次の式は、各会社名の先頭から数えて、文字‘a’が2回目に出現する位置を返します。
search_value引数では大文字と小文字が区別されるため、‘Blue Fin Aqua Center’の
‘A’はスキップし、0を返します。
INSTR( COMPANY, 'a', 1, 2 )
COMPANY
Blue Fin Aqua Center
Maco Shark Shop
Scuba Gear
Frank's Dive Shop
VIP Diving Club
RETURN VALUE
0
8
9
0
0
INSTR
81
次の式は、各会社名の最後の文字から数えて、文字‘a’が2回目に出現する位置を返しま
す。search_value 引数では大文字と小文字が区別されるため、'Blue Fin Aqua
Center'の'A'はスキップし、0を返します。
INSTR( COMPANY, 'a', -1, 2 )
COMPANY
Blue Fin Aqua Center
Maco Shark Shop
Scuba Gear
Frank's Dive Shop
VIP Diving Club
RETURN VALUE
0
2
5
0
0
次の式は、各会社名の最後の文字から数えて、文字列‘Blue Fin Aqua Center’の最初の
文字の位置を返します。
INSTR( COMPANY, 'Blue Fin Aqua Center', -1, 1 )
COMPANY
Blue Fin Aqua Center
Maco Shark Shop
Scuba Gear
Frank's Dive Shop
VIP Diving Club
RETURN VALUE
1
0
0
0
0
ネストされたINSTRの使用
INSTR関数を他の関数の中にネストして、複雑な処理を実行できます。
次の式は、文字列を最後の文字から順に評価します。文字列内の最後(一番右側)のスペ
ースを見つけて、それより左側にある文字をすべて返します。
SUBSTR( CUST_NAME,1,INSTR( CUST_NAME,' ' ,-1,1 ))
CUST_NAME
PATRICIA JONES
MARY ELLEN SHAH
RETURN VALUE
PATRICIA
MARY ELLEN
次の式は、文字列から文字#を削除します。
SUBSTR( CUST_ID, 1, INSTR(CUST_ID, '#')-1 ) || SUBSTR( CUST_ID, INSTR(CUST_ID, '#')+1 )
CUST_ID
ID#33
#A3577
SS #712403399
RETURN VALUE
ID33
A3577
SS 712403399
ISNULL
値がNULLであるかどうかを返します。ISNULLは空文字列をFALSEとして評価します。
注:
82
空文字列かどうかをテストするには、LENGTHを使用します。
章 6: 関数
構文
ISNULL( value )
引数
必須/
説明
オプシ
ョン
value
必須
任意のデータ型(Binaryを除く)。評価したい行を渡し
ます。有効なトランスフォーメーション式を必要に応じ
て入力できます。
戻り値
値がNULLの場合は、TRUE(1)。
値がNULLでない場合は、FALSE(0)。
例
次の例は、商品テーブル内のNULL値を確認します。
ISNULL( ITEM_NAME )
ITEM_NAME
Flashlight
NULL
Regulator system
''
RETURN VALUE
0 (FALSE)
1 (TRUE)
0 (FALSE)
0 (FALSE) Empty string is not NULL
IS_DATE
文字列値が正しい日付であるかどうかを返します。正しい日付とは、セッションで指定さ
れた日時形式で日付を表している文字列を意味します。テストしたい文字列がデフォルト
の日付形式でない場合は、TO_DATEフォーマット文字列を使用して日付の形式を指定しま
す。IS_DATEに渡された文字列が指定された形式文字列に一致しない場合には、関数は
FALSE(0)を返します。 文字列がフォーマット文字列に一致する場合には、関数はTRUE
(1)を返します。
IS_DATEは、文字列を評価して整数値を返します。
IS_DATE式の出力ポートは、文字列データ型または数値データ型でなければなりません。
IS_DATEを使用して、フラットファイル内のデータをテストまたはフィルタリングしてか
ら、ターゲットに書き込むこともできます。
YYフォーマットの文字列の代わりに、IS_DATEを含むRRフォーマットの文字列を使用しま
す。ほとんどの場合、RRとYYのフォーマット文字列は同じ値を返しますが、場合により、
YYが誤った結果を返すことがあります。たとえば、式IS_DATE(‘02/29/00’, ‘YY’)は
内部でIS_DATE(02/29/1900 00:00:00)として計算され、FALSEを返します。ただし、Data
Integration ServiceはIS_DATE('02/29/00', 'RR')の式をIS_DATE(02/29/2000 00:00:00)
と計算し、TRUEを返します。 前者の場合、1900年はうるう年ではないので、2月29日はあ
りません。
IS_DATE
83
注:
IS_DATEでは、TO_DATEと同じフォーマット文字列を使用します。
構文
IS_DATE( value [,format] )
引数
必須/
説明
オプシ
ョン
value
必須
文字列データ型であること。評価したい行を渡します。
有効なトランスフォーメーション式を必要に応じて入力
できます。
形式
オプシ
ョン
正しいTO_DATE形式文字列を入力します。フォーマット
文字列は、string引数の各部分と一致しなければなりま
せん。たとえば、'Mar 15 1997 12:43:10AM'の文字列を
渡す場合、フォーマット文字列'MON DD YYYY
HH12:MI:SSAM'を使用する必要があります。フォーマッ
ト文字列を省略する場合は、文字列の値がマッピング設
定で指定された日付形式になっている必要があります。
戻り値
行が正しい日付の場合は、TRUE(1)。
行が正しい日付でない場合は、FALSE(0)。
式の中にNULLの値がある場合、またはフォーマット文字列がNULLである場合は、NULL。
警告: フォーマット文字列は、日付区切り文字を含め、IS_DATE文字列の形式と一致しなけ
ればなりません。一致しない場合、Data Integration Serviceは不正確な値を返すか、レ
コードをスキップする可能性があります。
例
次の式は、INVOICE_DATEポートの値が正しい日付であるかどうかを確認します。
IS_DATE( INVOICE_DATE )
この式は、以下のようなデータを返します。
INVOICE_DATE
NULL
'180'
'04/01/98'
'04/01/1998 00:12:15.7008'
'02/31/1998 12:13:55.9204'
'John Smith'
RETURN VALUE
NULL
0 (FALSE)
0 (FALSE)
1 (TRUE)
0 (FALSE) (February does not have 31 days)
0 (FALSE)
次のIS_DATE式では、フォーマット文字列‘YYYY/MM/DD’が指定されています。
IS_DATE( INVOICE_DATE, 'YYYY/MM/DD' )
文字列がこの形式に一致しない場合、IS_DATEはFALSEを返します。
INVOICE_DATE
NULL
'180'
84
章 6: 関数
RETURN VALUE
NULL
0 (FALSE)
INVOICE_DATE
'04/01/98'
'1998/01/12'
'1998/11/21 00:00:13'
'1998/02/31'
'John Smith'
RETURN VALUE
0 (FALSE)
1 (TRUE)
0 (FALSE)
0 (FALSE) (February does not have 31 days)
0 (FALSE)
次の例では、IS_DATEを使ってデータをテストしてから、TO_DATEを使って文字列を日付に
変換する方法を示しています。この式は、INVOICE_DATEポートの値を検査して、正しい日
付をそれぞれ日付値に変換します。値が正しい日付ではない場合、Data Integration
ServiceはERRORを返し、その行をスキップします。
この例はDate/Time値を返します。そのため、式の出力ポートはDate/Time型でなければな
りません。
IIF( IS_DATE ( INVOICE_DATE, 'YYYY/MM/DD' ), TO_DATE( INVOICE_DATE ), ERROR('Not a valid date' ) )
INVOICE_DATE
NULL
'180'
'04/01/98'
'1998/01/12'
'1998/11/21 00:00:13'
'1998/02/31'
'John Smith'
RETURN VALUE
NULL
'Not a valid
'Not a valid
1998/01/12
'Not a valid
'Not a valid
'Not a valid
date'
date'
date'
date'
date'
IS_NUMBER
文字列が正しい数値であるかどうかを返します。正しい数値は、以下の要素から構成され
ています。
¨ 数値の前のスペース(なくともよい)
¨ 符号(+/-)(なくともよい)
¨ 1つまたは複数の数字、および小数点(なくともよい)
¨ 科学的記法(なくともよい)。たとえば、文字‘e’または‘E’(Windowsでは文字
‘d’または‘D’)に符号(+/-)が続き、そのあとに1つまたは複数の数字が続く(符
号はなくともよい)。
¨ 数値のあとのスペース(なくともよい)
以下のものはすべて正しい数値です。
' 100 '
' +100'
'-100'
'-3.45e+32'
'+3.45E-32'
'+3.45d+32' (Windows only)
'+3.45D-32' (Windows only)
'.6804'
IS_NUMBER式の出力ポートは、文字列データ型または数値データ型でなければなりません。
IS_NUMBER
85
IS_NUMBERを使用して、フラットファイル内のデータをテストまたはフィルタリングしてか
ら、ターゲットに書き込むこともできます。
構文
IS_NUMBER( value )
引数
必須/
説明
オプシ
ョン
value
必須
文字列データ型であること。評価したい行を渡します。
有効なトランスフォーメーション式を必要に応じて入力
できます。
戻り値
行が正しい数値の場合は、TRUE(1)。
行が正しい数値でない場合は、FALSE(0)。
式の中の値がNULL値である場合は、NULL。
例
次の式は、ITEM_PRICEポートの値が正しい数値であるかどうかを確認します。
IS_NUMBER( ITEM_PRICE )
ITEM_PRICE
'123.00'
'-3.45e+3'
'-3.45D-3'
'-3.45d-3'
'3.45E-'
'
'
''
'+123abc'
' 123'
'123 '
'ABC'
'-ABC'
NULL
RETURN VALUE
1 (True)
1 (True)
1 (True - Windows only)
0 (False - UNIX only)
0 (False) Incomplete number
0 (False) Consists entirely of blanks
0 (False) Empty string
0 (False)
1 (True) Leading white blanks
1 (True) Trailing white blanks
0 (False)
0 (False)
NULL
TO_FLOATなどの数値変換関数を実行する前に、IS_NUMBERを使用してデータをテストできま
す。たとえば、次の式はITEM_PRICEポートの値を検査し、有効な数字を倍精度の浮動小数
点値に変換します。値が有効な数字でない場合、Data Integration Serviceは0.00を返し
ます。
IIF( IS_NUMBER ( ITEM_PRICE ), TO_FLOAT( ITEM_PRICE ), 0.00 )
ITEM_PRICE
'123.00'
'-3.45e+3'
'3.45E-3'
'
'
''
'+123abc'
86
章 6: 関数
RETURN VALUE
123
-3450
0.00345
0.00 Consists entirely of blanks
0.00 Empty string
0.00
ITEM_PRICE
'' 123ABC'
'ABC'
'-ABC'
NULL
RETURN VALUE
0.00
0.00
0.00
NULL
IS_SPACES
文字列値がスペースだけで構成されているかどうかを返します。スペースとは、空白、改
ページ、改行、復帰、タブ、または垂直タブです。
IS_SPACESは、空の文字列をFALSEと評価します。これは、空の文字列にはスペースが含ま
れないためです。空文字列かどうかをテストするには、LENGTHを使用します。
構文
IS_SPACES( value )
引数
必須/
説明
オプシ
ョン
value
必須
文字列データ型であること。評価したい行を渡します。
有効なトランスフォーメーション式を必要に応じて入力
できます。
戻り値
行がスペースだけから構成されている場合は、TRUE(1)。
行にデータが含まれている場合は、FALSE(0)。
式の中の値がNULL値である場合は、NULL。
例
次の式は、ITEM_NAMEポートを検査して、スペースだけから構成されている行を探します。
IS_SPACES( ITEM_NAME )
ITEM_NAME
Flashlight
Regulator system
NULL
''
RETURN VALUE
0 (False)
1 (True)
0 (False)
NULL
0 (FALSE) (Empty string does not contain spaces.)
ヒント: IS_SPACESを使用して、ターゲットテーブル内の文字を取る列にスペースを書き
込むことを回避します。たとえば、ターゲットテーブル内の固定長CHAR(5)列に顧客名を書
き込むトランスフォーメーションがある場合、スペースの代わりに‘00000’を書き込む場
合もあります。その場合、以下のような式を作成できます。
IIF( IS_SPACES( CUST_NAMES ), '00000', CUST_NAMES )
IS_SPACES
87
LAST
選択したポートの最後の行を返します。オプションとして、Data Integration Serviceが
読み込む行を制限するフィルタを適用できます。 LASTの中にネストできる他の集計関数は
1つだけです。
構文
LAST( value [, filter_condition ] )
引数
必須/
説明
オプシ
ョン
value
必須
任意のデータ型(Binaryを除く)。最後の行を返した
い値を渡します。有効なトランスフォーメーション式
を必要に応じて入力できます。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけれ
ばなりません。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
ポートの最後の行。
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合(たと
えば、フィルタ条件の値がすべての行に対してFALSEまたはNULLであった場合)には、NULL
です。
例
次の式は、ITEMS_NAMEポート内で価格が$10.00を超える最後の行を返します。
LAST( ITEM_NAME, ITEM_PRICE > 10 )
ITEM_NAME
Flashlight
Navigation Compass
Regulator System
Flashlight
Depth/Pressure Gauge
Vest
RETURN VALUE:Vest
ITEM_PRICE
35.00
8.05
150.00
29.00
88.00
31.00
LAST_DAY
ポート内の各日付に対して、月の最後の日の日付を返します。
88
章 6: 関数
構文
LAST_DAY( date )
引数
必須/
説明
オプシ
ョン
日付
必須
Date/Timeデータ型。月の最後の日を返したい日付を渡
します。日付を求める有効なトランスフォーメーション
式を必要に応じて入力できます。
戻り値
日付。関数に渡した日付値に対する月の最後の日。
選択したポート内の値がNULLである場合は、NULL。
Null
値がNULLであると、LAST_DAYはその行を無視します。ただし、ポートから渡された値がす
べてNULLである場合には、NULLを返します。
Group By
LAST_DAYは、トランスフォーメーションで定義したGroup Byポートに基づいて値をグルー
プ分けし、各グループについて1つの結果を返します。Group Byポートがない場合には、
LAST_DAYはすべての行を1つのグループとして扱い、1つの値を返します。
例
次の例は、ORDER_DATEポート内の各日付に対して、月の最後の日を返します。
LAST_DAY( ORDER_DATE )
ORDER_DATE
Apr 1 1998 12:00:00AM
Jan 6 1998 12:00:00AM
Feb 2 1996 12:00:00AM
NULL
Jul 31 1998 12:00:00AM
RETURN
Apr 30
Jan 31
Feb 29
NULL
Jul 31
VALUE
1998 12:00:00AM
1998 12:00:00AM
1996 12:00:00AM
(Leap year)
1998 12:00:00AM
TO_DATEをネストして文字列値を日付に変換できます。TO_DATEには常に時刻の情報があり
ます。時刻値を含まない文字列を渡すと、返される日付には時刻「00:00:00」を含みま
す。
次の例は、各注文日に対して、月の最後の日を文字列と同じ形式で返します。
LAST_DAY( TO_DATE( ORDER_DATE, 'DD-MON-YY' ))
ORDER_DATE
'18-NOV-98'
'28-APR-98'
NULL
'18-FEB-96'
RETURN
Nov 30
Apr 30
NULL
Feb 29
VALUE
1998 00:00:00
1998 00:00:00
1996 00:00:00 (Leap year)
LAST_DAY
89
LEAST
入力値のリストから最小値を返します。デフォルトでは、大文字と小文字を区別します。
構文
LEAST( value1, [value2, ..., valueN,] CaseFlag )
引数
必須/
説明
オプシ
ョン
value
必須
任意のデータ型(Binaryを除く)。データ型は他の値と
の互換性が必要です。他の値と比較しなければならない
値。最低1つの値引数を入力する必要があります。
この値がNumericで、他の入力値が他の数値データ型の
場合、すべての値では可能な限り高い精度が適用されま
す。たとえば、一部の値がIntegerデータ型で他の値が
Doubleデータ型の場合、Data Integration Serviceは値
をDoubleデータ型に変換します。
CaseFlag
オプシ
ョン
整数でなければなりません。この関数の引数の大文字と
小文字を区別するかどうかを指定します。有効なトラン
スフォーメーション式を必要に応じて入力できます。
CaseFlagが0以外の数値の場合、大文字と小文字を区別
します。
CaseFlagがNULL値または0の場合、大文字と小文字を区
別しません。
戻り値
入力値の中で最小である場合は value1、入力値の中で最小である場合はvalue2など。
いずれかの引数がNULLである場合は、NULL。
例
以下の式は、注文した項目の最小数を返します。
LEAST( QUANTITY1, QUANTITY2, QUANTITY3 )
QUANTITIY1
150
QUANTITY2
756
QUANTITY3
27
5000
120
97
1724
17
965
RETURN VALUE
27
NULL
17
120
LENGTH
文字列内の文字数を返します。文字列の末尾の空白も含めます。
90
章 6: 関数
構文
LENGTH( string )
引数
必須/
説明
オプシ
ョン
文字列
必須
文字列データ型。評価したい文字列。有効なトランスフ
ォーメーション式を必要に応じて入力できます。
戻り値
文字列の長さを示す整数。
関数にNULL値を渡した場合はNULLです。
例
次の式は、各顧客名の長さを返します。
LENGTH( CUSTOMER_NAME )
CUSTOMER_NAME
Bernice Davis
NULL
John Baer
Greg Brown
RETURN VALUE
13
NULL
9
10
LENGTHのヒント
LENGTHを使用して、空の文字列の条件をテストします。 顧客名が空であるフィールドを見
つけたい場合には、次のような式を使用します。
IIF( LENGTH( CUSTOMER_NAME ) = 0, 'EMPTY STRING' )
フィールドがNULLかどうかをテストするには、ISNULLを使用します。スペースについてテ
ストするには、IS_SPACESを使用します。
LN
数値の自然対数を返します。たとえば、 LN(3)は1.098612を返します。 通常、この関数はビ
ジネスデータではなく科学技術データの分析に使用されます。
この関数は、関数EXPの逆関数です。
LN
91
構文
LN( numeric_value )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。これは0より大きい正の数でなければな
りません。自然対数を計算したい値を渡します。有効
なトランスフォーメーション式を必要に応じて入力で
きます。
戻り値
Double値。
関数にNULL値を渡した場合はNULLです。
例
次の式は、NUMBERSポートのすべての値に対して自然対数を返します。
LN( NUMBERS )
NUMBERS
10
125
0.96
NULL
-90
0
RETURN VALUE
2.302585092994
4.828313737302
-0.04082199452026
NULL
Error. (The Integration Service does not write row.)
Error. (The Integration Service does not write row.)
注: 負の数値または0を渡すと、Data Integration Serviceはエラーを表示し、行を書き
込みません。 numeric_value は、0より大きい正の数でなければなりません。
LOG
数値の対数を返します。一般に、この関数はビジネスデータではなく科学技術データの分
析に使用されます。
92
章 6: 関数
構文
LOG( base, exponent )
引数
必須/
説明
オプシ
ョン
base
必須
対数の基数。0または1以外の正の数値でなければなりま
せん。0または1以外の正の数値を求める有効なトランス
フォーメーション式。
exponent
必須
対数の指数。0より大きい正の数値でなければなりませ
ん。0より大きい正の数値を求める有効なトランスフォー
メーション式。
戻り値
Double値。
関数にNULL値を渡した場合はNULLです。
例
次の式は、NUMBERSポートのすべての値に対して対数を返します。
LOG( BASE, EXPONENT )
BASE
15
.09
NULL
35.78
-9
0
10
EXPONENT
1
10
18
NULL
18
5
-2
RETURN VALUE
0
-0.956244644696599
NULL
NULL
Error. (Data Integration Service does not write the row.)
Error. (Data Integration Service does not write the row.)
Error. (Data Integration Service does not write the row.)
基数の値として負の数値、0、または1を渡した場合、あるいは指数として負の値を渡した
場合、Data Integration Serviceはエラーを表示し、行を書き込みません。
LOWER
大文字の文字列を小文字に変換します。
LOWER
93
構文
LOWER( string )
引数
必須/
説明
オプシ
ョン
文字列
必須
任意の文字列値。この引数は、小文字として返したい文
字列値を渡します。文字列を求める有効なトランスフォ
ーメーション式を必要に応じて入力できます。
戻り値
小文字の文字列。データにマルチバイト文字が含まれている場合、戻り値はIntegration
Serviceのコードページとデータ移動モードに応じて異なります。
選択したポート内の値がNULLである場合は、NULL。
例
次の式は、名前をすべて小文字で返します。
LOWER( FIRST_NAME )
FIRST_NAME
antonia
NULL
THOMAS
PierRe
BERNICE
RETURN VALUE
antonia
NULL
thomas
pierre
bernice
LPAD
文字列の先頭にいくつかの空白または文字を追加して、文字列を指定した長さにします。
94
章 6: 関数
構文
LPAD( first_string, length [,second_string] )
引数
必須/
説明
オプシ
ョン
first_stri
ng
必須
文字列。変更したい文字列を渡します。有効なトラン
スフォーメーション式を必要に応じて入力できます。
length
必須
正の整数リテラルでなければなりません。この引数
は、各文字列の希望の長さを指定します。
second_str
ing
オプシ
ョン
任意の文字列値。first_string値の左側に付加したい
文字列。有効なトランスフォーメーション式を必要に
応じて入力できます。特定の文字列リテラルを入力で
きます。ただし、文字列の先頭に追加する文字
は、'abc'のように一重引用符で囲みます。この引数は
大文字と小文字を区別します。second_stringを省略す
ると、関数は最初の文字列の先頭に空白を付加しま
す。
戻り値
指定された長さの文字列。
関数にNULL値を渡した場合、あるいはlengthが負の数の場合は、NULLです。
例
次の式は、数値の先頭にゼロを付加して、数値を6桁に標準化します。
LPAD( PART_NUM, 6, '0')
PART_NUM
702
1
0553
484834
RETURN VALUE
000702
000001
000553
484834
LPADは、長さを左から数えます。元の文字列が指定した長さよりも長い場合は、文字列が
右側から切り詰められます。たとえば、LPAD(‘alphabetical’, 5, ‘x’)は文字列
‘alpha’を返します。
付加する文字列が、指定された長さを返すために必要な文字数よりも長い場合は、その文
字列の一部分が使用されます。
LPAD( ITEM_NAME, 16, '*..*' )
ITEM_NAME
Flashlight
Compass
Regulator System
Safety Knife
RETURN VALUE
*..**.Flashlight
*..**..**Compass
Regulator System
*..*Safety Knife
LPAD
95
LTRIM
文字列の先頭から空白または文字を削除します。LTRIMは、ExpressionまたはUpdate
Strategyトランスフォーメーション内でIIFまたはDECODEとともに使用され、ターゲットテ
ーブルにスペースが入るのを防ぎます。
式にtrim_setパラメータを指定しない場合は、次のようになります。
¨ Unicodeモードでは、LTRIMは1バイトの空白と2バイトの空白をともに文字列の先頭から
削除します。
¨ ASCIIモードでは、LTRIMは1バイトの空白だけを削除します。
LTRIMを使用して文字列から文字を削除する場合、LTRIMは trim_setをstring引数内の各文
字と左から1文字ずつ比較します。 文字列内の文字が trim_set内のいずれかの文字と一致
した場合、LTRIMはその文字を削除します。LTRIMは、一致する文字が trim_setで見つから
なくなるまで、文字を比較して削除します。 その後、一致する文字が含まれない文字列を
返します。
構文
LTRIM( string [, trim_set] )
引数
必須/
説明
オプシ
ョン
文字列
必須
任意の文字列値。変更したい文字列を渡します。有効な
トランスフォーメーション式を必要に応じて入力できま
す。文字列の先頭から文字を削除する前に、演算子を使
って文字列の比較や連結を実行します。
trim_set
オプシ
ョン
任意の文字列値。文字列の先頭から削除したい文字を渡
します。有効なトランスフォーメーション式を必要に応
じて入力できます。文字列も入力できます。ただし、文
字列の先頭から削除する文字は、'abc'のように一重引用
符で囲む必要があります。削除したい文字を省略する
と、関数は文字列の先頭から空白を削除します。
LTRIMでは、大文字と小文字が区別されます。たとえば、
文字列'Alfredo'から文字'A'を削除したい場合は、必
ず'a'ではなく'A'と入力します。
戻り値
文字列。trim_set引数で指定された文字を削除した結果の文字列値。
関数にNULL値を渡した場合はNULLです。 trim_setがNULLの場合、関数はNULLを返します。
例
次の式は、LAST_NAMEポートの文字列から文字 ‘S’と‘.’を削除します。
LTRIM( LAST_NAME, 'S.')
LAST_NAME
Nelson
96
章 6: 関数
RETURN VALUE
Nelson
LAST_NAME
Osborne
NULL
S. MacDonald
Sawyer
H. Bender
Steadman
RETURN VALUE
Osborne
NULL
MacDonald
awyer
H. Bender
teadman
S. MacDonaldから‘S.’を削除し、SawyerおよびSteadmanから‘S’を削除しますが、H.
Benderからはピリオドを削除しません。これは、LTRIMでは trim_set引数に指定された文字
列を1文字ずつ検索していくからです。文字列内の最初の文字が trim_set内の最初の文字と
一致した場合、LTRIMはその文字を削除します。その後、LTRIMは文字列内の2番目の文字を
見ます。それがtrim_set内の2番目の文字と一致していれば、それを削除します。3文字目
以降も同様に進みます。文字列内の最初の文字が trim_setで対応する文字と一致しなかっ
た場合、LTRIMはこの文字列を返して、次の行の評価を行います。
H. Benderの場合は、Hが trim_set引数のどの文字とも一致しないため、LTRIMはLAST_NAME
ポート内の文字列を返して、次の行に移ります。
LTRIMのヒント
RTRIMおよびLTRIMを || またはCONCATとともに使用すると、2つの文字列を連結したあとで
先頭および末尾の空白を削除します。
また、LTRIMをネストして複数組の文字を削除することもできます。たとえば、名前の列か
ら先頭の空白と文字'T'とを削除したい場合は、次のような式を作成します。
LTRIM( LTRIM( NAMES ), 'T' )
MAKE_DATE_TIME
入力値に基づく日付と時間を返します。
構文
MAKE_DATE_TIME( year, month, day, hour, minute, second, nanosecond )
引数
必須/
説明
オプシ
ョン
year
必須
数値データ型。4桁の正の整数この関数に2桁の年を渡す
場合、Data Integration Serviceは"00"を年の最初の2
桁として返します。
月
必須
数値データ型。1から12までの正の整数(1月=1、12月
=12)。
day
必須
数値データ型。1から31までの正の整数(日数が31日未満
の月(2月、4月、6月、9月、および11月)を除く)。
MAKE_DATE_TIME
97
引数
必須/
説明
オプシ
ョン
hour
オプシ
ョン
数値データ型。0から24までの正の整数(0=12AM、
12=12PM、24=12AM)。
minute
オプシ
ョン
数値データ型。0から59までの正の整数。
second
オプシ
ョン
数値データ型。0から59までの正の整数。
ナノ秒
オプシ
ョン
数値データ型。0から999,999,999までの正の整数。
戻り値
MM/DD/YYYY HH24:MI:SSの日付。関数に年、月、または日を渡さない場合、NULL値を返しま
す。
例
以下の式は、入力ポートから日付と時間を作成します。
MAKE_DATE_TIME( SALE_YEAR, SALE_MONTH, SALE_DAY, SALE_HOUR, SALE_MIN, SALE_SEC )
SALE_YR
2002
2000
2003
04
99
SALE_MTH
10
6
1
3
12
SALE_DAY
27
15
3
30
12
SALE_HR
8
15
12
5
SALE_MIN
36
17
22
5
SALE_SEC
22
45
10
16
RETURN VALUE
10/27/2002 08:36:22
06/15/2000 15:17:00
01/03/2003 00:22:45
03/30/0004 12:05:10
12/12/0099 05:00:16
MAX (Dates)
ポートまたはグループ内で見つかった最新の日付を返します。検索において、行を制限す
るフィルタを適用できます。MAXの中にネストできる他の集計関数は1つだけです。
MAXを使用して、ポート内またはグループ内における最大の数値もしくは最高の文字列値を
返すこともできます。
98
章 6: 関数
構文
MAX( date [, filter_condition] )
引数
必須/
説明
オプシ
ョン
日付
必須
Date/Timeデータ型。最大の日付を返したい日付を渡
します。有効なトランスフォーメーション式を必要に
応じて入力できます。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけ
ればなりません。有効なトランスフォーメーション式
を必要に応じて入力できます。
戻り値
日付。
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合(たと
えば、フィルタ条件の値がすべての行に対してFALSEまたはNULLであった場合)には、NULL
です。
例
ポートまたはグループに対して、最大の日付を返すことができます。次の式は、懐中電灯
の最新の注文日を返します。
MAX( ORDERDATE, ITEM_NAME='Flashlight' )
ITEM_NAME
Flashlight
Regulator System
Flashlight
Diving Hood
Flashlight
ORDER_DATE
Apr 20 1998
May 15 1998
Sep 21 1998
Aug 18 1998
NULL
MAX (Numbers)
ポートまたはグループ内の最大の数値を返します。検索において、行を制限するフィルタ
を適用できます。MAXの中にネストできる他の集計関数は1つだけです。MAXを使用して、ポ
ート内またはグループ内における直近の日付もしくは最高の文字列値を返すこともできま
す。
MAX (Numbers)
99
構文
MAX( numeric_value [, filter_condition] )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。最大値を返したい数値を渡します。有
効なトランスフォーメーション式を必要に応じて入力
できます。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけれ
ばなりません。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
数値。
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合(たと
えば、フィルタ条件の値がすべての行に対してFALSEまたはNULLであった場合)には、NULL
です。
注: 戻り値が15を超える精度を持つ10進値である場合は、高精度を有効にして、最大28桁
までの10進精度を使用可能にできます。
NULL
値がNULLであると、MAXはその値を無視します。ただし、ポートから渡された値がすべて
NULLである場合には、NULLを返します。
Group By
MAXは、トランスフォーメーションで定義したGroup Byポートに基づいて値をグループ分け
し、各グループについて1つの結果を返します。
Group Byポートがない場合には、MAXはすべての行を1つのグループとして扱い、1つの値を
返します。
例
次の式は、懐中電灯の最大価格を返します。
MAX( PRICE, ITEM_NAME='Flashlight' )
ITEM_NAME
Flashlight
Regulator System
Flashlight
Diving Hood
Halogen Flashlight
Flashlight
Flashlight
RETURN VALUE: 85.00
100
章 6: 関数
PRICE
10.00
360.00
55.00
79.00
162.00
85.00
NULL
MAX (String)
ポートまたはグループ内における最大の文字列値を返します。 検索において、行を制限す
るフィルタを適用できます。MAXの中にネストできる他の集計関数は1つだけです。
注: MAX関数は、Sorterトランスフォーメーションと同じソート順を使用します。ただ
し、MAX関数では大文字と小文字が区別されますが、Sorterトランスフォーメーションでは
区別されない場合もあります。
MAXを使用して、ポート内またはグループ内における直近の日付もしくは最大の数値を返す
こともできます。
構文
MAX( string [, filter_condition] )
引数
必須/
説明
オプシ
ョン
文字列
必須
文字列データ型。最大の文字列値を返す文字列値を渡
します。有効なトランスフォーメーション式を必要に
応じて入力できます。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけれ
ばなりません。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
文字列。
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合(たと
えば、フィルタ条件の値がすべての行に対してFALSEまたはNULLであった場合)には、NULL
です。
NULL
値がNULLであると、MAXはその値を無視します。ただし、ポートから渡された値がすべて
NULLである場合には、NULLを返します。
Group By
MAXは、トランスフォーメーションで定義したGroup Byポートに基づいて値をグループ分け
し、各グループについて1つの結果を返します。
Group Byポートがない場合には、MAXはすべての行を1つのグループとして扱い、1つの値を
返します。
MAX (String)
101
例
以下の式は、メーカーID 104の最大の項目名を返します。
MAX( ITEM_NAME, MANUFACTURER_ID='104' )
MANUFACTURER_ID
101
102
104
104
104
104
107
108
ITEM_NAME
First Stage Regulator
Electronic Console
Flashlight
Battery (9 volt)
Rope (20 ft)
60.6 cu ft Tank
75.4 cu ft Tank
Wristband Thermometer
RETURN VALUE: Rope (20 ft)
MD5
入力値のchecksumを計算します。この関数は、MD5 (Message-Digest アルゴリズム5)を
使用しています。MD5は、ハッシュ値が128ビットの一方向暗号ハッシュ関数です。入力値
のチェックサムが異なる場合、入力値が異なると判断できます。MD5を使用して、データの
完全性を確認します。
構文
MD5( value )
引数
必須/
説明
オプシ
ョン
value
必須
データ型は文字列またはバイナリ。checksumを計算する
値です。入力値の大文字と小文字が区別されると、戻り
値に影響します。たとえば、MD5(informatica)とMD5
(Informatica)では異なる戻り値が返されます。
戻り値
0から9およびaからfを使用した、16進数の一意の32文字の文字列。
NULL値を入力した場合は、NULLです。
例
変更したデータをデータベースに書き込む必要があります。MD5を使用して、ソースから読
み込むデータの行のチェックサム値を生成します。マッピングを実行するときに、以前に
生成されたチェックサム値と新しいチェックサム値を比較します。次に、更新されたチェ
ックサム値を持つ行をターゲットに書き込みます。チェックサム値の更新は、データが変
更されたことを示していると判断できます。
102
章 6: 関数
ヒント
戻り値は、ハッシュキーとして使用できます。
MEDIAN
選択したポート内のすべての値のメジアンを返します。
ポート内の値の個数が偶数個である場合、メジアンは、すべての値を数直線上に順番に並
べたときに真ん中に位置する2つの値の平均となります。ポート内の値の個数が奇数個であ
る場合は、メジアンは真ん中の数値になります。
MEDIANには他の集計関数は1つしかネストできません。また、ネストされた関数は数値デー
タ型を返さなければなりません。
Data Integration Serviceは、データのすべての行を読み込み、メジアン計算を行いま
す。計算を実行するエレメント数。オプションとして、メジアンを計算するために読み込
む行を制限するフィルタを適用できます。
構文
MEDIAN( numeric_value [, filter_condition ] )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。メジアンを計算したい値を渡します。
有効なトランスフォーメーション式を必要に応じて入
力できます。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけれ
ばなりません。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
数値。
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合には、
NULLとなります。たとえば、すべての行に対するフィルタ条件の値がFALSEまたはNULLで
す。
注: 戻り値が15を超える精度を持つ10進値である場合は、高精度を有効にして、最大28桁
までの10進精度を使用可能にできます。
NULL
値がNULLであると、MEDIANはその行を無視します。ただし、ポートから渡された値がすべ
てNULLである場合には、NULLを返します。
MEDIAN
103
Group By
MEDIANは、トランスフォーメーションで定義したGroup Byポートに基づいて値をグループ
分けし、各グループについて1つの結果を返します。
Group Byポートがない場合には、MEDIANはすべての行を1つのグループとして扱い、1つの
値を返します。
例
すべての部署についての給与のメジアンを計算するには、次の式を指定したポートを使っ
て、部署ごとにグループ分けされたAggregatorトランスフォーメーションを作成します。
MEDIAN( SALARY )
次の式は、固定ベストの注文についてのメジアン値を返します。
MEDIAN( SALES, ITEM = 'Stabilizing Vest' )
ITEM
Flashlight
Stabilizing Vest
Stabilizing Vest
Safety Knife
Medium Titanium Knife
Tank
Stabilizing Vest
Chisel Point Knife
Stabilizing Vest
Stabilizing Vest
Wrist Band Thermometer
RETURN VALUE: 472.5
SALES
85
504
36
5
150
NULL
441
60
NULL
1044
110
METAPHONE
文字列値をエンコードします。エンコーディングする文字列の長さを指定することができ
ます。
METAPHONE関数は、英語アルファベット(A-Z)をエンコーディングします。大文字と小文
字はどちらも大文字としてエンコーディングします。
METAPHONEは下記の規則に従って文字をエンコードします。
¨ 入力文字列の最初の文字を除き、母音(A、E、I、O、U)をスキップします。
METAPHONE(‘CAR’)は‘KR’を返し、METAPHONE(‘AAR’)は‘AR’を返します。
¨ 特別なエンコードガイドラインを使用します。
104
章 6: 関数
以下の表に、METAPHONEエンコーディングのガイドラインを示します。
入
力
戻り
値
条件
例
B
- な
し
- Mの後
- METAPHONE ('Lamb')は
LMを返します。
- B
- 他の場合
- METAPHONE (‘Box’)は
BKSを返します。
- X
- IAまたはHの前
- METAPHONE ('Facial')
はFXLを返します。
- S
- I、E、またはYの前
- METAPHONE ('Fence')は
FNSを返します。
- な
し
- Sの後またはI、E、Yの前
-
- METAPHONE ('Scene')は
SNを返します。
- K
- 他の場合
- METAPHONE (‘Cool’)は
KLを返します。
- J
- GE、GY、またはGIの前
- METAPHONE ('Dodge')は
TJを返します。
- T
- 他の場合
- METAPHONE (‘David’)
はTFTを返します。
F
- F
- すべての場合
- METAPHONE (‘FOX’)は
FKSを返します。
G
- F
- Hの前で、入力文字列の最初の
文字がB、D、H以外
- METAPHONE ('Tough')は
TFを返します。
- な
し
- Hの前で、入力文字列の最初の
文字がB、D、またはH
- METAPHONE ('Hugh')は
HFを返します。
- J
- I、E、またはYの前で、繰り返
さない場合
- METAPHONE ('Magic')は
MJKを返します。
- K
- 他の場合
- METAPHONE(‘GUN’)は
KNを返します。
- H
- C、G、P、S、Tの後でなく、
A、E、I、Uの前
- METAPHONE ('DHAT')は
THTを返します。
- な
し
- 他の場合
- METAPHONE (‘Chain’)
はXNを返します。
- J
- すべての場合
- METAPHONE (‘Jen’)は
JNを返します。
C
D
H
J
METAPHONE
105
入
力
戻り
値
条件
例
K
- な
し
- K
- Cの後
- 他の場合
- METAPHONE (‘Ckim’)は
KMを返します。
- METAPHONE (’Kim’)は
KMを返します。
L
- L
- すべての場合
- METAPHONE (‘Laura’)
はLRを返します。
M
- M
- すべての場合
- METAPHONE (‘Maggi’)
はMKを返します。
N
- N
- すべての場合
- METAPHONE (‘Nancy’)
はNNSを返します。
P
- F
- Hの前
- METAPHONE ('Phone')は
FNを返します。
- P
- 他の場合
- METAPHONE (‘Pip’)は
PPを返します。
Q
- K
- すべての場合
- METAPHONE (‘Queen’)
はKNを返します。
R
- R
- すべての場合
- METAPHONE (‘Ray’)はR
を返します。
S
- X
- H、IO、IA、またはCHWの前
- METAPHONE ('Cash')は
KXを返します。
- S
- 他の場合
- METAPHONE (‘Sing’)は
SNKを返します。
- X
- IAまたはIOの前
- METAPHONE ('Patio')は
PXを返します。
- 01
- Hの前
- METAPHONE ('Thor')は
0Rを返します。
- な
し
- CHの前
- METAPHONE ('Glitch')
はKLTXを返します。
- T
- 他の場合
- METAPHINE (‘Tim’)は
TMを返します。
- F
- すべての場合
- METAPHONE (‘Vin’)は
FNを返します。
T
イン
スト
ール
要件
が満
たさ
106
章 6: 関数
入
力
戻り
値
条件
例
- W
- A、E、I、O、またはUの前
- METAPHONE ('Wang')は
WNKを返します。
- な
し
- 他の場合
- METAPHONE (‘When’)は
HNを返します。
X
- KS
- すべての場合
- METAPHONE (‘Six’)は
SKSを返します。
Y
- Y
- A、E、I、O、またはUの前
- METAPHONE ('Yang')は
YNKを返します。
- な
し
- 他の場合
- METAPHONE (‘Bobby’)
はBBを返します。
- S
- すべての場合
- METAPHONE (‘Zack’)は
SKを返します。
れて
いな
い
と、
イン
スト
ール
に失
敗す
るこ
とが
あり
ま
す。
W
Z
1. 整数0。
¨ 入力文字列の最初の2文字が下記の値のいずれかを含む場合、最初の文字をスキップ
し、文字列の残りの部分をエンコードします。
- KN。 たとえば、METAPHONE('KNOT')は'NT'を返します。
- GN。 たとえば、METAPHONE('GNOB')は'NB'を返します。
- PN。 たとえば、METAPHONE('PNRX')は'NRKS'を返します。
- AE。 たとえば、METAPHONE(‘AERL’)は‘ERL’を返します。
¨ 入力文字列内に「C」以外の文字が複数ある場合、最初の文字だけをエンコードしま
す。たとえば、METAPHONE(‘BBOX’)は‘BKS’を返し、METAPHONE(‘CCOX’)は
‘KKKS’を返します。
METAPHONE
107
構文
METAPHONE( string [,length] )
引数
必須/
説明
オプシ
ョン
文字列
必須
文字列でなければなりません。エンコードしたい値を渡
します。最初の文字は、英字(A - Z)でなければなりま
せん。有効なトランスフォーメーション式を必要に応じ
て入力できます。
string内の英字以外のものはスキップします。
length
オプシ
ョン
0より大きい整数でなければなりません。エンコードした
いstring内の文字の数を指定します。有効なトランスフ
ォーメーション式を必要に応じて入力できます。
lengthが0、またはstringの長さより大きな値の場合、
入力文字列全体をエンコードします。
デフォルトは0です。
戻り値
文字列。
下記の条件のいずれかが真の場合、NULLとなります。
¨ 関数に渡された値がすべてNULLである。
¨ string内の文字が英字ではない。
¨ stringは空です。
例
下記の式は、EMPLOYEE_NAMEポートの最初の2文字を文字列にエンコードします。
METAPHONE( EMPLOYEE_NAME, 2 )
Employee_Name
John
*@#$
P$%%oc&&KMNL
Return Value
JH
NULL
PK
下記の式は、EMPLOYEE_NAMEポートの最初の4文字を文字列にエンコードします。
METAPHONE( EMPLOYEE_NAME, 4 )
Employee_Name
John
1ABC
*@#$
P$%%oc&&KMNL
108
章 6: 関数
Return Value
JHN
ABK
NULL
PKKM
MIN (Dates)
ポートまたはグループ内で最も古い日付を返します。 検索において、行を制限するフィル
タを適用できます。MINには他の集計関数は1つしかネストできません。また、ネストされ
た日付データ型を返さなければなりません。
MINを使用して、ポート内またはグループ内における最小の数値もしくは最低の文字列値を
返すこともできます。
構文
MIN( date [, filter_condition] )
引数
必須/
説明
オプシ
ョン
日付
必須
Date/Timeデータ型。最小値を返したい値を渡しま
す。有効なトランスフォーメーション式を必要に応じ
て入力できます。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけ
ればなりません。有効なトランスフォーメーション式
を必要に応じて入力できます。
戻り値
value引数が日付の場合は日付を返します。
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合(たと
えば、フィルタ条件の値がすべての行に対してFALSEまたはNULLであった場合)には、NULL
です。
NULL
値の1つがNULLであると、MINはその値を無視します。ただし、ポートから渡された値がす
べてNULLである場合には、NULLを返します。
Group By
MINは、トランスフォーメーションで定義したGroup Byポートに基づいて値をグループ分け
し、各グループについて1つの結果を返します。
Group Byポートがない場合には、MINはすべての行を1つのグループとして扱い、1つの値を
返します。
例
次の式は、懐中電灯の最も古い注文日を返します。
MIN( ORDER_DATE, ITEM_NAME='Flashlight' )
ITEM_NAME
Flashlight
Regulator System
Flashlight
ORDER_DATE
Apr 20 1998
May 15 1998
Sep 21 1998
MIN (Dates)
109
ITEM_NAME
Diving Hood
Halogen Flashlight
Flashlight
Flashlight
RETURN VALUE: Feb 1 1998
ORDER_DATE
Aug 18 1998
Feb 1 1998
Oct 10 1998
NULL
MIN (Numbers)
ポートまたはグループ内の最小の数値を返します。 検索において、行を制限するフィルタ
を適用できます。MINには他の集計関数は1つしかネストできません。また、ネストされた
関数は数値データ型を返すことが必要です。
MINを使用して、ポート内またはグループ内における直近の日付もしくは最低の文字列値を
返すこともできます。
構文
MIN( numeric_value [, filter_condition] )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。最小値を返したい値を渡します。有効
なトランスフォーメーション式を必要に応じて入力で
きます。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけれ
ばなりません。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
数値。
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合(たと
えば、フィルタ条件の値がすべての行に対してFALSEまたはNULLであった場合)には、NULL
です。
注: 戻り値が15を超える精度を持つ10進値である場合は、高精度を有効にして、最大28桁
までの10進精度を使用可能にできます。
NULL
値の1つがNULLであると、MINはその値を無視します。ただし、ポートから渡された値がす
べてNULLである場合には、NULLを返します。
110
章 6: 関数
Group By
MINは、トランスフォーメーションで定義したGroup Byポートに基づいて値をグループ分け
し、各グループについて1つの結果を返します。
Group Byポートがない場合には、MINはすべての行を1つのグループとして扱い、1つの値を
返します。
例
次の式は、懐中電灯の最小価格を返します。
MIN ( PRICE, ITEM_NAME='Flashlight' )
ITEM_NAME
Flashlight
Regulator System
Flashlight
Diving Hood
Halogen Flashlight
Flashlight
Flashlight
RETURN VALUE: 10.00
PRICE
10.00
360.00
55.00
79.00
162.00
85.00
NULL
MIN (String)
ポートまたはグループ内の最低の文字列値を返します。 検索において、行を制限するフィ
ルタを適用できます。MINには他の集計関数は1つしかネストできません。また、ネストさ
れた関数は数値データ型を返すことが必要です。
注: MIN関数は、Sorterトランスフォーメーションと同じソート順を使用します。ただ
し、MIN関数では大文字と小文字が区別されますが、Sorterトランスフォーメーションでは
区別されない場合もあります。
MINを使用して、ポート内またはグループ内における直近の日付もしくは最小の数値を返す
こともできます。
構文
MIN( string [, filter_condition] )
引数
必須/
説明
オプシ
ョン
文字列
必須
文字列データ型。最小値を返したい値を渡します。有
効なトランスフォーメーション式を必要に応じて入力
できます。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけれ
MIN (String)
111
引数
必須/
説明
オプシ
ョン
ばなりません。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
文字列値。
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合(たと
えば、フィルタ条件の値がすべての行に対してFALSEまたはNULLであった場合)には、NULL
です。
NULL
値の1つがNULLであると、MINはその値を無視します。ただし、ポートから渡された値がす
べてNULLである場合には、NULLを返します。
Group By
MINは、トランスフォーメーションで定義したGroup Byポートに基づいて値をグループ分け
し、各グループについて1つの結果を返します。
Group Byポートがない場合には、MINはすべての行を1つのグループとして扱い、1つの値を
返します。
例
以下の式は、メーカーID 104の最小の項目名を返します。
MIN ( ITEM_NAME, MANUFACTURER_ID='104' )
MANUFACTURER_ID
101
102
104
104
104
104
107
108
ITEM_NAME
First Stage Regulator
Electronic Console
Flashlight
Battery (9 volt)
Rope (20 ft)
60.6 cu ft Tank
75.4 cu ft Tank
Wristband Thermometer
RETURN VALUE: 60.6 cu ft Tank
MOD
除算の余りを返します。たとえば、 MOD(8,5)は3を返します。
112
章 6: 関数
構文
MOD( numeric_value, divisor )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。割られる値(被除数)です。有効なト
ランスフォーメーション式を必要に応じて入力できま
す。
divisor
必須
割る値(除数)です。除数に0は指定できません。
戻り値
関数に渡したのと同じデータ型の数値。数値を除数で割った余りです。
関数にNULL値を渡した場合はNULLです。
例
次の式は、PRICEポートの値をQTYポートの値で割った余りを返します。
MOD( PRICE, QTY )
PRICE
10.00
12.00
9.00
15.00
NULL
20.00
25.00
QTY
2
5
2
3
3
NULL
0
RETURN VALUE
0
2
1
0
NULL
NULL
Error. Integration Service does not write row.
最後の行(25、0)は、除数を0にしたためにエラーとなりました。0での除算を防ぐため
に、次のような式を作成することができます。この式では、数量が0でないときに限り価格
を数量で割った余りを返します。数量が0の場合、関数はNULLを返します。
MOD( PRICE, IIF( QTY = 0, NULL, QTY ))
PRICE
10.00
12.00
9.00
15.00
NULL
20.00
25.00
QTY
2
5
2
3
3
NULL
0
RETURN VALUE
0
2
1
0
NULL
NULL
NULL
最後の行(25、0)はエラーの代わりにNULLを返します。これは、IIF関数によってQTYポー
トの0がNULLに置き換えられたためです。
MOD
113
MOVINGAVG
指定された行のセットについて、行ごとの平均を返します。オプションとして、移動平均
を計算する前に、条件に基づいて行をフィルタリングすることができます。
構文
MOVINGAVG( numeric_value, rowset [, filter_condition] )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。移動平均を計算したい値を渡します。
有効なトランスフォーメーション式を必要に応じて入
力できます。
rowset
必須
0より大きい正の整数リテラルでなければなりません。
移動平均を計算したい行のセットを定義します。たと
えば、データの列について一度に5行ずつ移動平均を計
算したい場合は、MOVINGAVG(SALES, 5)のような式を記述で
きます。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけれ
ばなりません。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
数値。
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合(たと
えば、フィルタ条件の値がすべての行に対してFALSEまたはNULLであった場合)には、NULL
です。
注: 戻り値が15を超える精度を持つ10進値である場合は、高精度を有効にして、最大28桁
までの10進精度を使用可能にできます。
NULL
MOVINGAVGは、移動平均の計算においてNULL値を無視します。ただし、すべての値がNULLで
ある場合には、NULLを返します。
例
次の式は、SALESポートの最初の5行に基づいて固定ベストの平均注文を返し、そのあと
は、直前に読み込んだ5行についての平均を返します。
MOVINGAVG( SALES, 5 )
ROW_NO
1
2
3
4
5
114
章 6: 関数
SALES
600
504
36
100
550
RETURN VALUE
NULL
NULL
NULL
NULL
358
ROW_NO
6
7
SALES
39
490
RETURN VALUE
245.8
243
関数は、5行の組ごとの平均を返します。行番号1-5の平均は358、行番号2-6の平均は
245.8、行番号3-7の平均は243です。
MOVINGSUM
指定された行のセットについて、行ごとの合計を返します。
オプションとして、移動合計を計算する前に、条件に基づいて行をフィルタリングするこ
とができます。
構文
MOVINGSUM( numeric_value, rowset [, filter_condition] )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。移動合計を計算したい値を渡します。
有効なトランスフォーメーション式を必要に応じて入
力できます。
rowset
必須
0より大きい正の整数リテラルでなければなりません。
移動合計を計算したい行のセットを定義します。たと
えば、データの列について一度に5行ずつ移動合計を計
算したい場合は、MOVINGSUM( SALES, 5 )のような式を記述
できます。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけれ
ばなりません。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
数値。
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合(たと
えば、フィルタ条件の値がすべての行に対してFALSEまたはNULLであった場合)には、NULL
です。
注: 戻り値が15を超える精度を持つ10進値である場合は、高精度を有効にして、最大28桁
までの10進精度を使用可能にできます。
NULL
MOVINGSUMは、移動合計の計算においてNULL値を無視します。ただし、すべての値がNULLで
ある場合には、NULLを返します。
MOVINGSUM
115
例
次の式は、SALESポートの最初の5行に基づいて固定ベストの注文合計を返し、そのあと
は、直前に読み込んだ5行についての合計を返します。
MOVINGSUM( SALES, 5 )
ROW_NO
1
2
3
4
5
6
7
SALES
600
504
36
100
550
39
490
RETURN VALUE
NULL
NULL
NULL
NULL
1790
1229
1215
関数は、5行の組ごとの合計を返します。行番号1-5の合計は1790、行番号2-6の合計は
1229、行番号3-7の合計は1215です。
NPER
一定の利率、支払周期、支払額に基づいて、投資の期間数を返します。
構文
NPER( rate, present value, payment [, future value, type] )
引数
必須/
説明
オプシ
ョン
rate
必須
数値。各期間で得た金利。十進数で表示されます。利
率を100で除算すると、十進数で表示できます。0以上
を指定する必要があります。
present
value
必須
数値。今後の支払いの合計に相当する一時金の金額。
payment
必須
数値。期間ごとの支払額。負の数を指定する必要があ
ります。
future
value
オプシ
ョン
数値。最終支払いの後、獲得する現金残高。この値を
省略すると、NPERは0を使用します。
タイプ
オプシ
ョン
ブール。支払時期。期首支払の場合は、1を入力しま
す。期末支払の場合は、0を入力します。デフォルト
は0です。0または1以外の値を入力すると、Data
Integration Serviceはその値を1として処理します。
戻り値
数値。
116
章 6: 関数
例
投資の現在価値は2,000ドルです。1回の支払額は500ドルで、この投資の将来価値は20,000
ドルです。次の式は、支払いが必要な期間数を計算し、9を返します。
NPER( 0.01, -2000, -500, 20000, TRUE )
注意事項
期間あたりの利率を計算するには、年利を年間の支払回数で割ります。たとえば、年利15%
で月払いの場合、率引数は15%を12で割った値になります。年払いの場合は、率引数は15%
です。
支払値と現在価値は支払額を指すため、負の値になります。
PERCENTILE
数値のグループ内で、与えられたパーセンタイルに入る値を計算します。PERCENTILEには
他の集計関数は1つしかネストできません。また、ネストされた関数は数値データ型を返さ
なければなりません。
Data Integration Serviceは、データのすべての行を読み込み、パーセンタイル計算を行
います。パフォーマンスは、使用するデータベース結合の種類によっても変わってきま
す。オプションとして、パーセンタイルを計算するために読み込む行を制限するフィルタ
を適用できます。
構文
PERCENTILE( numeric_value, percentile [, filter_condition ] )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。パーセンタイルを計算したい値を渡し
ます。有効なトランスフォーメーション式を必要に応
じて入力できます。
percentile
必須
0から100までの整数。計算したいパーセンタイルを渡
します。有効なトランスフォーメーション式を必要に
応じて入力できます。0-100の範囲外の数値を渡すと、
Data Integration Serviceはエラーを表示し、行を書
き込みません。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけれ
ばなりません。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
数値。
PERCENTILE
117
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合(たと
えば、フィルタ条件の値がすべての行に対してFALSEまたはNULLであった場合)には、NULL
です。
注: 戻り値が15を超える精度を持つ10進値である場合は、高精度を有効にして、最大28桁
までの10進精度を使用可能にできます。
NULL
値がNULLであると、PERCENTILEはその行を無視します。ただし、グループ内の値がすべて
NULLである場合には、NULLを返します。
Group By
PERCENTILEは、トランスフォーメーションで定義したGroup Byポートに基づいて値をグル
ープ分けし、各グループについて1つの結果を返します。
Group Byポートがない場合には、PERCENTILEはすべての行を1つのグループとして扱い、1
つの値を返します。
例
Data Integration Serviceは、次のロジックを使用してパーセンタイルを計算します。
この方程式では、以下のガイドラインを使用します。
¨ xは、パーセンタイルを計算している値グループにある要素の数です。
¨ i < 1の場合、PERCENTILEはリスト内の最初の要素の値を返します。
¨ iが整数値である場合、PERCENTILEはリスト内の i番目の要素の値を返します。
¨ 整数値でない場合、PERCENTILEは nの値を返します。
次の式は、$50,000を超える給与の75番目のパーセンタイルに入る給与を返します。
PERCENTILE( SALARY, 75, SALARY > 50000 )
SALARY
125000.0
27900.0
100000.0
NULL
55000.0
9000.0
85000.0
86000.0
48000.0
99000.0
RETURN VALUE: 106250.0
118
章 6: 関数
PMT
一定の利率で定額を支払う場合の貸付の支払額を返します。
構文
PMT( rate, terms, present value[, future value, type] )
引数
必須/
説明
オプシ
ョン
rate
必須
数値。それぞれの期間における、ローンの金利。十進
数で表示されます。利率を100で除算すると、十進数
で表示できます。0以上を指定する必要があります。
terms
必須
数値。期間または支払の数値。0より大きな値を指定
する必要があります。
present
value
必須
数値。ローンの元金。
future
value
オプシ
ョン
数値。最終支払いの後、獲得する現金算高。この値を
省略すると、PMTは0を使用します。
タイプ
オプシ
ョン
ブール。支払時期。期首支払の場合は、1を入力しま
す。期末支払の場合は、0を入力します。デフォルト
は0です。0または1以外の値を入力すると、Data
Integration Serviceはその値を1として処理します。
戻り値
数値。
例
以下の式は、ローンの毎月の支払額として-2111.64を返します。
PMT( 0.01, 10, 20000 )
注意事項
期間ごとに得た金利を計算するには、年利を1年間の支払回数で除算します。たとえば年率
15%の金利で支払いを毎月実行する場合、月利は15%/12になります。年払いの場合、金利は
15%になります。
支払値は支払額を指すため、負の値になります。
POWER
関数に渡された指数による値の累乗を返します。
PMT
119
構文
POWER( base, exponent )
引数
必須/
説明
オプシ
ョン
base
必須
数値。この引数は累乗される基数値です。有効なトラン
スフォーメーション式を必要に応じて入力できます。底
の値が負の場合は、指数は整数である必要があります。
exponent
必須
数値。この引数は累乗の指数値です。有効なトランスフ
ォーメーション式を必要に応じて入力できます。底の値
が負の場合は、指数は整数である必要があります。この
ような場合、小数点以下の値は、結果が返される前に最
も近い整数に丸められます。
戻り値
Double値。
関数にNULL値を渡した場合はNULLです。
例
次の式は、Exponentポートの値を指数として、Numbersポートの値の累乗を返します。
POWER( NUMBERS, EXPONENT )
NUMBERS
10.0
3.5
3.5
NULL
10.0
-3.0
3.0
-3.0
-3.0
EXPONENT
2.0
6.0
5.5
2.0
NULL
-6.0
-6.0
6.0
5.5
RETURN VALUE
100
1838.265625
982.594307804838
NULL
NULL
0.00137174211248285
0.00137174211248285
729.0
729.0
-3.0の-6乗は、-3.0の-5.5乗と同じ結果を返します。基数が負の場合、指数は整数でなけ
ればなりません。そうでない場合、Data Integration Serviceは指数を近似値の整数に丸
めます。
PV
投資の現在価値を返します。
120
章 6: 関数
構文
PV( rate, terms, payment [, future value, type] )
引数
必須/
説明
オプシ
ョン
rate
必須
数値。各期間で得た金利。十進数で表示されます。利
率を100で除算すると、十進数で表示できます。0以上
を指定する必要があります。
terms
必須
数値。期間数または支払回数。0より大きな値を指定
する必要があります。
支払
必須
数値。期間ごとの支払額。負の数を指定する必要があ
ります。
future
value
オプシ
ョン
数値。最後の支払いの後の現金残高。この値を省略す
ると、PVは0を使用します。
types
オプシ
ョン
ブール。支払時期。期首支払の場合は、1を入力しま
す。期末支払の場合は、0を入力します。デフォルト
は0です。0または1以外の値を入力すると、Data
Integration Serviceはその値を1として処理します。
戻り値
数値。
例
以下の式では、今後期首ごとに$500を預金して1年後の将来価値を$20,000にするために、
本日中に口座に入金する必要のある金額として12,524.43が返されます。
PV( 0.0075, 12, -500, 20000, TRUE )
RAND
0-1の範囲の乱数を返します。これは、確率シナリオに活用できます。
構文
RAND( seed )
引数
必須/
説明
オプシ
ョン
シード
オプシ
ョン
数値。Integration Serviceが乱数を生成するための開
始値。この値は、定数でなければなりません。シードを
RAND
121
引数
必須/
説明
オプシ
ョン
入力しない場合、Data Integration Serviceは現在のシ
ステム時間を使用して、1971年1月1日からの秒数を算出
します。 この値をシードとして使用します。
戻り値
数値。
同じシードに対し、Data Integration Serviceは同じ数字のシーケンスを生成します。
例
以下の式は、0.417022004702574を戻り値として返します。
RAND (1)
RATE
証券の期間あたりの利率を返します。
構文
RATE( terms, payment, present value[, future value, type] )
引数
必須/
説明
オプシ
ョン
122
terms
必須
数値。期間または支払の数値。0より大きな値を指定
する必要があります。
支払
必須
数値。期間ごとの支払額。負の数を指定する必要があ
ります。
present
value
必須
数値。現段階で今後の支払額に相当する一時金の金
額。
future
value
オプシ
ョン
数値。最終支払いの後、獲得する現金算高。たとえ
ば、貸付の将来価値は0になります。この引数を省略
すると、RATEは0を使用します。
types
オプシ
ョン
ブール。支払時期。期首支払の場合は、1を入力しま
す。期末に支払う場合は0を指定します。デフォルト
は0です。0または1以外の値を入力すると、Data
Integration Serviceはその値を1として処理します。
章 6: 関数
戻り値
数値。
例
以下の式は、ローンの月利として0.0077を返します。
RATE( 48, -500, 20000 )
ローンの年利を計算するには、0.0077に12を掛けます。年利は、0.0924つまり9.24%になり
ます。
REG_EXTRACT
入力値から正規表現のサブパターンを抽出します。たとえば、フルネームの正規表現から
姓または名を抽出することができます。
注:
REG_REPLACE関数を使用して、文字列内の文字を新しい文字パターンに置換します。
構文
REG_EXTRACT( subject, 'pattern', subPatternNum, match_from_start )
引数
必須/
説明
オプシ
ョン
subject
必須
文字列データ型。正規表現のパターンと比較する値
を渡します。
pattern
必須
文字列データ型。一致させる正規表現パターン。
Perl互換の正規表現構文を使用する必要がありま
す。パターンは、一重引用符で囲みます。各サブパ
ターンをかっこで囲みます。
subPatternNu
m
オプシ
ョン
整数値。一致させる正規表現のサブパターン番号。
サブパターン番号は、以下のガイドラインを使用し
て決定します。
- 値を指定しない、または1。最初の正規表現サブパ
ターンを抽出します。
- 2. 2番目の正規表現サブパターンを抽出します。
- n。n番目の正規表現サブパターンを抽出します。
REG_EXTRACT
123
引数
必須/
説明
オプシ
ョン
デフォルトは1です。
match_from_s
tart
オプシ
ョン
数値。文字列の開始から一致が見つかった場合、そ
のサブストリングを返します。開始値の一致を判定
するガイドラインは以下のとおりです。
- 0。開始インデックスまたは任意のインデックスか
らのサブジェクトストリングとパターンを一致し
ます。
- 0以外。開始インデックスからのサブジェクトスト
リングとパターンを一致します。
Perl互換の正規表現構文の使用
REG_EXTRACT関数、REG_MATCH関数およびREG_REPLACE関数では、Perl互換の正規表現構文
を使用する必要があります。
以下の表に、Perl互換の正規表現構文のガイドラインを示します。
124
構文
説明
. (ピリオ
ド)
任意の1つの文字に一致します。
[a-z]
1つの文字インスタンスに一致します。たとえば、[a-z]ではabに
一致します。大文字のコード
\d
0-9の任意の数字のうち、1つのインスタンスに一致します。
\s
空白1文字に一致します。
\w
アンダースコア(_)を含む英数字1文字に一致します。
()
式をグループ化します。たとえば、(\d\d-\d\d)では、かっこに
よって正規表現\d\d-\d\dがグループ化されます。この正規表現
では12-34のように、任意の2つの数字の後にハイフンが続き、さ
らに任意の2つの文字が続くものが検索されます。
{}
指定された文字数に一致します。たとえば、\d{3}は、650または
510などの任意の3桁の番号に一致します。また、[a-z]{2}は、CA
またはNYなどの任意の2文字に一致します。
?
前にある文字または文字のグループに、0回または1回一致しま
す。たとえば、\d{3}(-{d{4})?は、 任意の3桁の数字、および任
意の3桁の数字にハイフンと任意の4桁の数字が続くものの両方に
一致します。
章 6: 関数
構文
説明
*(アスタ
リスク)
アスタリスクの後に続く、0個以上の値のインスタンスに一致し
ます。たとえば、*0は、任意の値が0の前に置かれたものに一致
します。
+
プラス記号の後に続く、1個以上の値のインスタンスに一致しま
す。たとえば、\w+は、英数字1文字が続く任意の値です。
たとえば、以下の正規表現は、93930などの5桁のアメリカの郵便番号、および93930-5407
などの9桁の郵便番号を検索します。
\d{5}(-\d{4})?
\d{5}は、93930などの5つの数字を表します。-\d{4}を囲むかっこによって、式のこの部分
がグループ化されています。ハイフンは、93930-5407などの9桁の郵便番号の中のハイフン
を表します。\d{4}は4つの数字、たとえば5407などを表します。疑問符は、ハイフンと4つ
の数字がオプションであるか、1回のみ出現することを表します。
COBOL構文をPerl互換の正規表現構文へ変換
COBOL構文に精通している場合、以下の情報を使用してPerl互換の正規表現を書き込むこと
ができます。
以下の表に、COBOL構文の例とそれに対応するPerl構文を示します。
COBOL構文
Perl構文
説明
9
\d
0-9の任意の数字のうち、1つのインスタンスに一
致します。
9999
\d\d\d\d
1234や5936など、0-9の任意の4桁の数字に一致し
ます。
または
\d{4}
x
[a-z]
1つの文字インスタンスに一致します。
9xx9
\d[a-z][az]\d
1ab2など、任意の数字の後に2つの文字が続き、そ
の後に1つの数字が続くものに一致します。
SQL構文のPerl互換の正規表現構文への変換
SQL構文に精通している場合、以下の情報を使用してPerl互換の正規表現を書き込むことが
できます。
REG_EXTRACT
125
以下の表に、SQL構文の例とそれに対応するPerl構文を示します。
SQL構文
Perl構文
説明
%
. *
任意の文字列に一致します。
A%
A.*
「A」で始まる任意の文字列(「領域」など)に
一致します。
_
. (ピリオ
ド)
任意の1つの文字に一致します。
A_
A.
「A」で始まり、その後に任意の1文字が続く文字
列(「AZ」など)に一致します。
戻り値
入力値の一部である、n番目のサブパターンの値を返します。nthのサブパターンは、
subPatternNumで指定した値に基づいています。
入力値またはパターンがNULLの場合はNULLです。
例
式でREG_EXTRACTを使用して、姓、ミドルネーム、名が一致する正規表現からミドルネーム
を抽出することもできます。 たとえば、以下の式は正規表現のミドルネームを返します。
REG_EXTRACT( Employee_Name, '(\w+)\s+(\w+)\s+(\w+)',2)
Employee_Name
Stephen Graham Smith
Juan Carlos Fernando
Return Value
Graham
Carlos
REG_MATCH
値が正規表現のパターンに一致するかどうかを返します。そのため、ID、電話番号、郵便
番号、州の名前などのデータパターンを検査できます。
注:
126
文字列内の文字を新しい文字パターンに置換します。
章 6: 関数
構文
REG_MATCH( subject, pattern )
引数
必須/
説明
オプシ
ョン
subject
必須
文字列データ型。正規表現のパターンに一致させる値を
渡します。
pattern
必須
文字列データ型。一致させる正規表現パターン。Perl互
換の正規表現構文を使用する必要があります。パターン
は、一重引用符で囲みます。詳細については、
「REG_EXTRACT」 (123ページの)を参照してください。
戻り値
データがパターンに一致する場合はTRUE。
データがパターンに一致しない場合はFALSE。
入力値またはパターンがNULLの場合はNULLです。
例
式でREG_MATCHを使用して、電話番号を検査する場合もあります。たとえば、以下の式は10
桁の電話番号とパターンを一致させ、その結果に基づき論理値を返します。
REG_MATCH (Phone_Number, '(\d\d\d-\d\d\d-\d\d\d\d)' )
Phone_Number
408-555-1212
510-555-1212
92 555 51212
650-555-1212
415-555-1212
831 555 12123
Return Value
TRUE
NULL
TRUE
FALSE
TRUE
TRUE
FALSE
ヒント
以下のタスクでもREG_MATCHを使用できます。
¨ 値とパターンが一致するかを確認する場合。これは、SQL LIKE関数の使用方法に似てい
ます。
¨ 値が文字かどうかを確認する場合。これは、SQL IS_CHAR関数の使用方法に似ていま
す。
値とパターンが一致するかを確認する場合。式のREG_MATCH関数でピリオド(.)およびア
スタリスク(*)を使用して、値がパターンと一致するかを確認する場合。ピリオドは1文
字に一致します。アスタリスク(*)は、後続の値の0個以上のインスタンスに一致しま
す。
たとえば、以下の式を使用して1835で始まる口座番号を検索します。
REG_MATCH(ACCOUNT_NUMBER, ‘1835.*’)
REG_MATCH
127
値が文字であるかを確認するには、[a-zA-Z]+を正規表現とするREG_MATCH関数を使用しま
す。a-zは、すべての小文字に一致します。A-Zは、すべての大文字に一致します。プラス
記号(+)は、少なくとも1文字が存在しなければならないことを表しています。
たとえば、以下の式を使用して、姓のリストに文字しか含まれていないことを確認しま
す。
REG_MATCH(LAST_NAME, ‘[a-zA-Z]+’)
REG_REPLACE
文字列内の文字を別の文字パターンで置換します。REPLACECHRは、入力文字列から指定文
字を検索し、検索されたすべての文字を、指定した新しい文字に置き換えます。グループ
に取り込みたいEMAILの出現をPivot化します。
構文
REG_REPLACE( subject, pattern, replace, numReplacements )
引数
必須/
説明
オプシ
ョン
subject
必須
文字列データ型。検索したい文字列を渡します。
pattern
必須
文字列データ型。変更するフォルダを選択して下さ
い。Perl互換の正規表現構文を使用する必要があり
ます。パターンは、一重引用符で囲みます。詳細に
ついては、「REG_EXTRACT」 (123ページの)を参照
してください。
replace
必須
文字列データ型。文字列内で検索するサブストリン
グを渡します。
numReplaceme
nts
オプシ
ョン
数値データ型。プレビューしたい行の数を入力しま
す。このオプションを省略すると、ステータスメッ
セージがウィンドウに出力されます。
戻り値
String
例
次の式は、WEBLOGポートの各行についてWebログデータから二重引用符を削除します。
REG_REPLACE( Employee_Name, ‘\s+’, ‘ ’)
Employee_Name
Adam Smith
Greg Sanders
Sarah Fe
Sam
Cooper
128
章 6: 関数
RETURN VALUE
Adam Smith
Greg Sanders
Sarah Fe
Sam Cooper
REPLACECHR
文字列内の文字を1文字または文字なしに置換します。REPLACECHRは、入力文字列から指定
文字を検索し、検索されたすべての文字を、指定した新しい文字に置き換えます。
構文
REPLACECHR( CaseFlag, InputString, OldCharSet, NewChar )
引数
必須/
説明
オプシ
ョン
CaseFlag
必須
整数でなければなりません。この関数の引数の大文字と
小文字を区別するかどうかを指定します。有効なトラン
スフォーメーション式を必要に応じて入力できます。
CaseFlagが0以外の数値の場合、大文字と小文字を区別
します。
CaseFlagがNULL値または0の場合、大文字と小文字を区
別しません。
InputStr
ing
必須
文字列でなければなりません。検索したい文字列を渡し
ます。有効なトランスフォーメーション式を必要に応じ
て入力できます。数値を渡すと、関数はそれを文字列に
変換します。
InputStringがNULLの場合、REPLACECHRはNULLを返しま
す。
OldCharS
et
必須
文字列でなければなりません。置換したい文字を渡しま
す。1つまたは複数の文字を入力できます。有効なトラン
スフォーメーション式を必要に応じて入力できま
す。'abc'のようにテキストリテラルを一重引用符で囲ん
で入力することもできます。
数値を渡すと、関数はそれを文字列に変換します。
OldCharSetがNULLまたは空の場合、REPLACECHRは
InputStringを返します。
NewChar
必須
文字列でなければなりません。1文字、空の文字列、また
はNULLを入力できます。有効なトランスフォーメーショ
ン式を必要に応じて入力できます。
>NewCharがNULLまたは空の場合、REPLACECHRは、
OldCharSetに指定された文字をすべてInputStringから
削除します。
NewCharに1つ以上の文字が含まれている場合、
REPLACECHRは最初の文字を使用してOldCharSetを置き換
えます。
戻り値
文字列。
REPLACECHRがInputStringのすべての文字を削除した場合は空の文字列。
REPLACECHR
129
InputStringがNULLの場合はNULL。
OldCharSetがNULLまたは空の場合はInputString。
例
次の式は、WEBLOGポートの各行についてWebログデータから二重引用符を削除します。
REPLACECHR( 0, WEBLOG, '"', NULL )
WEBLOG
"GET /news/index.html HTTP/1.1"
"GET /companyinfo/index.html HTTP/1.1"
GET /companyinfo/index.html HTTP/1.1
NULL
RETURN VALUE
GET /news/index.html HTTP/1.1
GET /companyinfo/index.html HTTP/1.1
GET /companyinfo/index.html HTTP/1.1
NULL
次の式は、WEBLOGポートの各行について複数の文字を削除します。
REPLACECHR ( 1, WEBLOG, ']["', NULL )
WEBLOG
[29/Oct/2001:14:13:50 -0700]
[31/Oct/2000:19:45:46 -0700] "GET /news/
index.html HTTP/1.1"
[01/Nov/2000:10:51:31 -0700] "GET /news/
index.html HTTP/1.1"
NULL
RETURN VALUE
29/Oct/2001:14:13:50 -0700
31/Oct/2000:19:45:46 -0700 GET /news/
index.html HTTP/1.1
01/Nov/2000:10:51:31 -0700 GET /news/
index.html HTTP/1.1
NULL
次の式は、CUSTOMER_CODEポートの各行について顧客コードの値の一部を変更します。
REPLACECHR ( 1, CUSTOMER_CODE, 'A', 'M' )
CUSTOMER_CODE
ABA
abA
BBC
ACC
NULL
RETURN VALUE
MBM
abM
BBC
MCC
NULL
次の式は、CUSTOMER_CODEポートの各行について顧客コードの値の一部を変更します。
REPLACECHR ( 0, CUSTOMER_CODE, 'A', 'M' )
CUSTOMER_CODE
ABA
abA
BBC
ACC
RETURN VALUE
MBM
MbM
BBC
MCC
次の式は、CUSTOMER_CODEポートの各行について顧客コードの値の一部を変更します。
REPLACECHR ( 1, CUSTOMER_CODE, 'A', NULL )
CUSTOMER_CODE
ABA
BBC
ACC
AAA
aaa
NULL
130
章 6: 関数
RETURN VALUE
B
BBC
CC
[empty string]
aaa
NULL
次の式は、INPUTポートの各行について複数の数字を削除します。
REPLACECHR ( 1, INPUT, '14', NULL )
INPUT
12345
4141
111115
NULL
RETURN VALUE
235
NULL
5
NULL
OldCharSetまたはNewCharで一重引用符(')を使用する場合、CHR関数を使用する必要があ
ります。一重引用符は、文字列リテラル内で使用できない唯一の文字です。
次の式は、INPUTポートの各行について、複数の一重引用符の文字を削除します。
REPLACECHR (1, INPUT, CHR(39), NULL )
INPUT
'Tom Smith' 'Laura Jones'
Tom's
NULL
RETURN VALUE
Tom Smith Laura Jones
Toms
NULL
REPLACESTR
文字列内の文字を1文字、複数の文字または文字なしに置換します。REPLACESTRは、入力文
字列から、指定されたすべての文字列を検索し、指定された新しい文字列に置換します。
構文
REPLACESTR ( CaseFlag, InputString, OldString1, [OldString2, ... OldStringN,] NewString )
引数
必須/
説明
オプシ
ョン
CaseFlag
必須
整数でなければなりません。この関数の引数の大文字と
小文字を区別するかどうかを指定します。有効なトラン
スフォーメーション式を必要に応じて入力できます。
CaseFlagが0以外の数値の場合、大文字と小文字を区別
します。
CaseFlagがNULL値または0の場合、大文字と小文字を区
別しません。
InputStr
ing
必須
文字列でなければなりません。検索したい文字列を渡し
ます。有効なトランスフォーメーション式を必要に応じ
て入力できます。数値を渡すと、関数はそれを文字列に
変換します。
InputStringがNULLの場合、REPLACESTRはNULLを返しま
す。
OldStrin
g
必須
文字列でなければなりません。置換したい文字列を渡し
ます。最低つの<>OldString</1>引数を入力する必要が
REPLACESTR
131
引数
必須/
説明
オプシ
ョン
あります。OldString引数ごとに1文字以上を入力できま
す。有効なトランスフォーメーション式を必要に応じて
入力できます。'abc'のようにテキストリテラルを一重引
用符で囲んで入力することもできます。
数値を渡すと、関数はそれを文字列に変換します。
複数のOldString引数があり、1つ以上のOldString引数
がNULLまたは空の場合、REPLACESTRはそのOldString引
数を無視します。すべてのOldString引数がNULLまたは
空の場合、REPLACESTRはInputStringを返します。
OldString引数の文字列は、関数に指定されている順に
置換されます。たとえば、複数のOldString引数を入力
した場合、最初のOldString引数は2番目のOldString引
数に優先され、2番目のOldString引数は3番目の
OldStringに優先されます。REPLACESTRが文字列を置き
換える場合、 次に一致する文字列を検索する前に、
InputString内の置き換えられた文字の後ろにカーソル
を置きます。
NewStrin
g
必須
文字列でなければなりません。1文字、複数の文字、空の
文字列、またはNULLを入力できます。有効なトランスフ
ォーメーション式を必要に応じて入力できます。
NewStringがNULLまたは空の場合、REPLACESTRは、
InputString内のOldStringをすべて削除します。
戻り値
文字列。
REPLACESTRがInputStringのすべての文字を削除した場合は空の文字列。
InputStringがNULLの場合はNULL。
すべてのOldString引数がNULLまたは空の場合はInputString。
例
次の式は、WEBLOGポートの各行について、Webログデータから二重引用符と2つの異なるテ
キスト文字列を削除します。
REPLACESTR( 1, WEBLOG, '"', 'GET ', ' HTTP/1.1', NULL )
WEBLOG
"GET /news/index.html HTTP/1.1"
"GET /companyinfo/index.html HTTP/1.1"
GET /companyinfo/index.html
GET
NULL
132
章 6: 関数
RETURN VALUE
/news/index.html
/companyinfo/index.html
/companyinfo/index.html
[empty string]
NULL
次の式は、TITLEポートの各行について、ある値のタイトルを変更します。
REPLACESTR ( 1, TITLE, 'rs.', 'iss', 's.' )
TITLE
Mrs.
Miss
Mr.
MRS.
RETURN VALUE
Ms.
Ms.
Mr.
MRS.
次の式は、TITLEポートの各行について、ある値のタイトルを変更します。
REPLACESTR ( 0, TITLE, 'rs.', 'iss', 's.' )
TITLE
Mrs.
MRS.
RETURN VALUE
Ms.
Ms.
次の式は、REPLACESTR関数が、INPUTポートの各行について、複数の OldString引数をどのよ
うに置換するかを示します。
REPLACESTR ( 1, INPUT, 'ab', 'bc', '*' )
INPUT
abc
abbc
abbbbc
bc
RETURN VALUE
*c
**
*bb*
*
次の式は、REPLACESTR関数が、INPUTポートの各行について、複数の OldString引数をどのよ
うに置換するかを示します。
REPLACESTR ( 1, INPUT, 'ab', 'bc', 'b' )
INPUT
ab
bc
abc
abbc
abbcc
RETURN VALUE
b
b
bc
bb
bbc
OldStringまたはNewStringに一重引用符(')を使用する場合、CHR関数を使用する必要が
あります。CHRおよびCONCAT関数を使って、一重引用符を文字列に連結することができま
す。一重引用符は、文字列リテラル内で使用できない唯一の文字です。次の例を検討しま
す。
CONCAT( 'Joan', CONCAT( CHR(39), 's car' ))
戻り値は次のとおりです。
Joan's car
次の式は、INPUTポートの各行について、一重引用符を含む文字列を変更します。
REPLACESTR ( 1, INPUT, CONCAT('it', CONCAT(CHR(39), 's' )), 'its' )
INPUT
it's
mit's
mits
mits'
RETURN VALUE
its
mits
mits
mits'
REPLACESTR
133
REVERSE
入力文字列を逆順にします。
構文
REVERSE( string )
引数
必須/
説明
オプショ
ン
文字列
必須
任意の文字値。逆順にする値。
戻り値
文字列。入力値を逆順にします。
例
以下の式は、顧客コードの数字を逆順にします。
REVERSE( CUSTOMER_CODE )
CUSTOMER_CODE
0001
0002
0003
0004
RETURN VALUE
1000
2000
3000
4000
ROUND (Dates)
日付の一部分を丸めます。また、ROUNDを使って数値を丸めることもできます。
この関数は、日付の中の以下の部分を丸めることができます。
¨ 年。日付の年の部分を、月に基づいて丸めます。
¨ 月。日付の月の部分を、日に基づいて丸めます。
¨ 日。日付の日の部分を、時刻に基づいて丸めます。
¨ 時間。日付の時の部分を、分に基づいて丸めます。
¨ 分。日付の分の部分を、秒に基づいて丸めます。
¨ 秒。日付の秒の部分を、ミリ秒に基づいて丸めます。
¨ ミリ秒。日付のミリ秒の部分を、マイクロ秒に基づいて丸めます。
¨ マイクロ秒。日付のマイクロ秒の部分を、ナノ秒に基づいて丸めます。
134
章 6: 関数
以下の表に、ROUND式で使用される条件と戻り値を示します。
条件
式
戻り値
月が1月-6月の場合、関数は入力
した年の1月1日を返し、時刻を
00:00:00.000000000に設定しま
す。
ROUND(4/16/1998 8:24:19,
'YY')
01/01/1998
00:00:00.0000000
00
月が7月-12月の場合、関数は次
の年の1月1日を返し、時刻を
00.000000000:00:00に設定しま
す。
ROUND(07/30/1998 2:30:55,
'YY')
01/01/1999
00:00:00.0000000
00
日が1日-15日の場合、関数は日
付を入力された月の最初の日に
丸め、時刻を
00.000000000:00:00に設定しま
す。
ROUND(4/15/1998 8:24:19,
'MM')
4/1/1998
00:00:00.0000000
00
日が16日-月の最後の日の場合、
関数は日付を次の月の最初の日
に丸め、時刻を
00.000000000:00:00に設定しま
す。
ROUND(05/22/1998 10:15:29,
'MM')
5/1/1998
00:00:00.0000000
00
時刻が00.000000000:00:00
(AM12時)-11:59:59AMの場
合、関数は現在の日付を返し、
時刻を00:00:00(AM12時)に設
定します。
ROUND(06/13/1998 2:30:45,
'DD')
06/13/1998
00:00:00.0000000
00
時刻が12:00.000000000:00
(PM12時)以降の場合、関数は
日付を次の日に丸めて、時刻を
00:00:00(AM12時)に設定しま
す。
ROUND(06/13/1998 22:30:45,
'DD')
06/14/1998
00:00:00.0000000
00
時刻の分の部分が0-29の間の数
であれば、関数は現在の時で分
と秒を0にした値を返します。
ROUND(04/01/1998 11:29:35,
'HH')
04/01/1998
11:00:00.0000000
00
分の部分が30以上の場合、関数
は次の時で分と秒を0にした値を
返します。
ROUND(04/01/1998 13:39:00,
'HH')
04/01/1998
14:00:00.0000000
00
秒の部分が0-29の間の数であれ
ば、関数は現在の分で秒を0にし
た値を返します。
ROUND(05/22/1998 10:15:29,
'MI')
05/22/1998
10:15:00.0000000
00
秒の部分が30-59の間の数であれ
ば、関数は次の分で秒を0にした
値を返します。
ROUND(05/22/1998 10:15:30,
'MI')
05/22/1998
10:16:00.0000000
00
ROUND (Dates)
135
条件
式
戻り値
秒の部分が0-499の間の数であれ
ば、関数は現在の分で秒を0にし
た値を返します。
ROUND(05/22/1998
10:15:29.499, 'SS')
05/22/1998
10:15:29.0000000
00
秒の部分が500-999の間の数であ
れば、関数は現在の分で秒を0に
した値を返します。
ROUND(05/22/1998
10:15:29.500, 'SS')
05/22/1998
10:15:30.0000000
00
秒の部分が0-499の間の数であれ
ば、関数は現在の分で秒を0にし
た値を返します。
ROUND(05/22/1998
10:15:29.498125, 'MS')
05/22/1998
10:15:29.4980000
00
秒の部分が500-999の間の数であ
れば、関数は現在の分で秒を0に
した値を返します。
ROUND(05/22/1998
10:15:29.498785, 'MS')
05/22/1998
10:15:29.4990000
00
秒の部分が0-499の間の数であれ
ば、関数は現在の分で秒を0にし
た値を返します。
ROUND(05/22/1998
10:15:29.498125345, 'US')
05/22/1998
10:15:29.4981250
00
秒の部分が500-999の間の数であ
れば、関数は現在の分で秒を0に
した値を返します。
ROUND(05/22/1998
10:15:29.498125876, 'US')
05/22/1998
10:15:29.4981260
00
構文
ROUND( date [,format] )
引数
必須/
説明
オプシ
ョン
日付
必須
Date/Timeデータ型。丸める前に、TO_DATEをネストして
文字列を日付に変換できます。
形式
オプシ
ョン
正しいフォーマット文字列を入力します。これは日付の
中で丸めたい部分です。日付の中の1つの部分だけを丸め
ることができます。フォーマット文字列を省略すると、
関数は日付を最も近い日に丸めます。
戻り値
指定された部分が丸められた日付。ROUNDは元の日付と同じ形式で日付を返します。この関
数の結果を、Date/Timeデータ型を持つ任意のポートにリンクすることができます。
関数にNULL値を渡した場合はNULLです。
例
以下の式は、DATE_SHIPPEDポートの日付の年の部分を丸めます。
ROUND( DATE_SHIPPED, 'Y' )
ROUND( DATE_SHIPPED, 'YY' )
136
章 6: 関数
ROUND( DATE_SHIPPED, 'YYY' )
ROUND( DATE_SHIPPED, 'YYYY' )
DATE_SHIPPED
Jan 15 1998 2:10:30AM
Apr 19 1998 1:31:20PM
Dec 20 1998 3:29:55PM
NULL
RETURN VALUE
Jan 1 1998 12:00:00.000000000AM
Jan 1 1998 12:00:00.000000000AM
Jan 1 1999 12:00:00.000000000AM
NULL
以下の式は、DATE_SHIPPEDポートの各日付の月の部分を丸めます。
ROUND( DATE_SHIPPED, 'MM' )
ROUND( DATE_SHIPPED, 'MON' )
ROUND( DATE_SHIPPED, 'MONTH' )
DATE_SHIPPED
Jan 15 1998 2:10:30AM
Apr 19 1998 1:31:20PM
Dec 20 1998 3:29:55PM
NULL
RETURN VALUE
Jan 1 1998 12:00:00.000000000AM
May 1 1998 12:00:00.000000000AM
Jan 1 1999 12:00:00.000000000AM
NULL
以下の式は、DATE_SHIPPEDポートの各日付の日の部分を丸めます。
ROUND(
ROUND(
ROUND(
ROUND(
ROUND(
DATE_SHIPPED,
DATE_SHIPPED,
DATE_SHIPPED,
DATE_SHIPPED,
DATE_SHIPPED,
'D' )
'DD' )
'DDD' )
'DY' )
'DAY' )
DATE_SHIPPED
Jan 15 1998 2:10:30AM
Apr 19 1998 1:31:20PM
Dec 20 1998 3:29:55PM
Dec 31 1998 11:59:59PM
NULL
RETURN VALUE
Jan 15 1998 12:00:00.000000000AM
Apr 20 1998 12:00:00.000000000AM
Dec 21 1998 12:00:00.000000000AM
Jan 1 1999 12:00:00.000000000AM
NULL
以下の式は、DATE_SHIPPEDポートの各日付の時の部分を丸めます。
ROUND( DATE_SHIPPED, 'HH' )
ROUND( DATE_SHIPPED, 'HH12' )
ROUND( DATE_SHIPPED, 'HH24' )
DATE_SHIPPED
Jan 15 1998 2:10:31AM
Apr 19 1998 1:31:20PM
Dec 20 1998 3:29:55PM
Dec 31 1998 11:59:59PM
NULL
RETURN VALUE
Jan 15 1998 2:00:00.000000000AM
Apr 19 1998 2:00:00.000000000PM
Dec 20 1998 3:00:00.000000000PM
Jan 1 1999 12:00:00.000000000AM
NULL
以下の式は、DATE_SHIPPEDポートの各日付の分の部分を丸めます。
ROUND( DATE_SHIPPED, 'MI' )
DATE_SHIPPED
Jan 15 1998 2:10:30AM
Apr 19 1998 1:31:20PM
Dec 20 1998 3:29:55PM
Dec 31 1998 11:59:59PM
NULL
RETURN VALUE
Jan 15 1998 2:11:00.000000000AM
Apr 19 1998 1:31:00.000000000PM
Dec 20 1998 3:30:00.000000000PM
Jan 1 1999 12:00:00.000000000AM
NULL
ROUND (Dates)
137
ROUND(数値)
数値を指定の桁数または小数点以下の桁数に丸めます。 また、ROUNDを使用して日付を丸
めることもできます。
構文
ROUND( numeric_value [, precision] )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。有効なトランスフォーメーション式を
必要に応じて入力できます。値を丸める前に、演算子
を使用して算術演算を実行できます。
precision
オプシ
ョン
正または負の整数。正のprecisionを入力すると、関数
は数値の小数点以下の桁数をこの値に丸めます。たと
えば、ROUND(12.99, 1)は13.0を返し、ROUND(15.44,
1)は15.4を返します。
負のprecisionを入力すると、関数は小数点の左側をこ
の桁数だけ丸めて、整数を返します。たとえば、
ROUND(12.99, -1)は10を返し、ROUND(15.99, -1)は20
を返します。
小数のprecisionを入力すると、関数はこの値を最も近
い整数に丸めてから、式を求めます。たとえば、
ROUND(12.99, 0.8)は13.0を返します。これは、0.8を1
に丸めてから式を求めるからです。
precision引数を省略すると、関数は数値を最も近い整
数に丸めて、小数点以下を切り捨てます。たとえば、
ROUND(12.99)は13を返します。
戻り値
数値。
いずれかの引数がNULLの場合、ROUNDはNULLを返します。
注: 戻り値が15を超える精度を持つ10進値である場合は、高精度を有効にして、最大28桁
までの10進精度を使用可能にできます。
例
次の式は、Priceポートの値を小数点以下3桁に丸めた値を返します。
ROUND( PRICE, 3 )
PRICE
12.9936
15.9949
-18.8678
56.9561
NULL
138
章 6: 関数
RETURN VALUE
12.994
15.995
-18.868
56.956
NULL
precision引数に負の整数を渡すことにより、小数点の左側を指定桁数に丸めることもでき
ます。
ROUND( PRICE, -2 )
PRICE
13242.99
1435.99
-108.95
NULL
RETURN VALUE
13200.0
1400.0
-100.0
NULL
precision引数に小数値を渡すと、Data Integration Serviceはそれを近似値の整数に丸
めてから式を評価します。
ROUND( PRICE, 0.8 )
PRICE
12.99
56.34
NULL
RETURN VALUE
13.0
56.3
NULL
precision引数を省略すると、関数は数値を最も近い整数に丸めます。
ROUND( PRICE )
PRICE
12.99
-15.99
-18.99
56.95
NULL
RETURN VALUE
13.0
-16.0
-19.0
57.0
NULL
ヒント
ROUNDを使用して、計算値の精度を明示的に設定し、期待した結果を得ることもできます。
Data Integration Serviceが低精度モードで実行されている場合、値の精度が15桁を超え
ると計算結果を切り捨てます。 たとえば、低精度モードで以下の式を処理するとします。
7/3 * 3 = 7
この場合、Data Integration Serviceは最初の除算の結果を切り捨てるため、式の左辺か
ら6.999999999999999を求めます。 Data Integration Serviceは、式全体をFALSEと評価
します。 これは期待した結果ではないかもしれません。
期待した結果を得るには、ROUNDを使って、式の左辺の切り捨て結果を、期待する結果に丸
めます。Data Integration Serviceは、以下の式をTRUEと評価します。
ROUND(7/3 * 3) = 7
RPAD
文字列の末尾に空白または文字を追加して、文字列を指定した長さに変換します。
RPAD
139
構文
RPAD( first_string, length [,second_string] )
引数
必須/
説明
オプシ
ョン
first_stri
ng
必須
任意の文字列値。変更したい文字列を渡します。有効
なトランスフォーメーション式を必要に応じて入力で
きます。
length
必須
正の整数リテラルでなければなりません。各文字列の
希望の長さを指定します。
second_str
ing
オプシ
ョン
任意の文字列値。first_string値の右側に付加したい
文字列を渡します。文字列の末尾に追加したい文字列
は、'abc'のように一重引用符で囲みます。この引数は
大文字と小文字を区別します。
second_stringを省略すると、関数はfirst_stringの末
尾に空白を付加します。
戻り値
指定された長さの文字列。
関数にNULL値を渡した場合、あるいはlengthが負の数の場合は、NULLです。
例
次の式は、各商品名の末尾に文字列'.'を追加して、商品名を長さ16文字で返します。の最
後からドキュメントの終わりまでになります。
RPAD( ITEM_NAME, 16, '.')
ITEM_NAME
Flashlight
Compass
Regulator System
Safety Knife
RETURN VALUE
Flashlight......
Compass.........
Regulator System
Safety Knife....
RPADは、長さを左から数えます。したがって、元の文字列が指定した長さよりも長い場合
は、文字列が右側から切り詰められます。たとえば、RPAD(‘alphabetical’, 5, ‘x’)
は文字列‘alpha’を返します。RPADは、必要に応じて second_stringの一部分を使用しま
す。
次の式は、各商品名の末尾に文字列‘*..*’を追加して、商品名を長さ16文字で返しま
す。の最後からドキュメントの終わりまでになります。
RPAD( ITEM_NAME, 16, '*..*' )
ITEM_NAME
Flashlight
Compass
Regulator System
Safety Knife
140
章 6: 関数
RETURN VALUE
Flashlight*..**.
Compass*..**..**
Regulator System
Safety Knife*..*
RTRIM
文字列の末尾から空白または文字を削除します。
式にtrim_setパラメータを指定しない場合は、次のようになります。
¨ Unicodeモードでは、RTRIMは1バイトの空白と2バイトの空白をともに文字列の末尾から
削除します。
¨ ASCIIモードでは、RTRIMは1バイトの空白だけを削除します。
RTRIMを使って文字列から文字を削除する場合、RTRIMは trim_setをstring引数内の各文字
と右から1文字ずつ比較します。文字列内の文字が trim_set内のいずれかの文字と一致した
場合、RTRIMはその文字を削除します。RTRIMは、一致する文字が trim_setで見つからなく
なるまで、文字を比較して削除します。 一致した文字を含まない文字列を返します。
構文
RTRIM( string [, trim_set] )
引数
必須/
説明
オプシ
ョン
文字列
必須
任意の文字列値。切り詰めたい値を渡します。有効なト
ランスフォーメーション式を必要に応じて入力できま
す。文字列の末尾から空白を削除する前に、演算子を使
って文字列の比較や連結を実行します。
trim_set
オプシ
ョン
任意の文字列値。文字列の末尾から削除したい文字を渡
します。テキストリテラルを入力することもできます。
ただし、文字列の末尾から削除する文字は、'abc'のよう
に一重引用符で囲む必要があります。2番目の文字列を省
略すると、関数は1番目の文字列の末尾から空白を削除し
ます。
RTRIMでは、大文字と小文字が区別されます。
戻り値
文字列。trim_set引数で指定された文字を削除した結果の文字列値。
関数にNULL値を渡した場合はNULLです。
例
次の式は、LAST_NAMEポートの文字列から文字‘re’を削除します。
RTRIM( LAST_NAME, 're')
LAST_NAME
Nelson
Page
Osborne
NULL
Sawyer
RETURN VALUE
Nelson
Pag
Osborn
NULL
Sawy
RTRIM
141
LAST_NAME
H. Bender
Steadman
RETURN VALUE
H. Bend
Steadman
trim_setの最初の文字は‘r’ですが、RTRIMはPageから‘e’を削除します。これは、
RTRIMではtrim_set引数に指定された文字列を1文字ずつ検索していくためです。 文字列内
の最後の文字がtrim_set内の最初の文字と一致した場合、RTRIMはその文字を削除します。
ただし、文字列内の最後の文字が一致しない場合、RTRIMは trim_set内の2番目の文字と比
較します。文字列内の最後から2番目の文字が trim_setの2番目の文字と一致した場合、
RTRIMはその文字を削除します。 文字列内の文字が trim_setと一致しなかった場合、RTRIM
はその文字列を返して、次の行の評価を行います。
最後の例では、Nelsonの最後の文字が trim_set引数のどの文字とも一致しないため、RTRIM
は'Nelson'を返して次の行を評価します。
RTRIMのヒント
RTRIMおよびLTRIMを || またはCONCATとともに使用すると、2つの文字列を連結したあとで
先頭および末尾の空白を削除します。
また、RTRIMをネストして複数の文字列を削除することもできます。たとえば、名前の列内
にある各文字列の末尾から末尾の空白と文字‘t’を削除したい場合は、次のような式を作
成します。
RTRIM( RTRIM( NAMES ), 't' )
SET_DATE_PART
Date/Time値の一部を指定した値に設定します。SET_DATE_PARTを使用して、日付の以下の
部分を変更できます。
¨ 年。value引数に正の整数を入力することで、年を変更します。 Y、YY、YYY、YYYYのい
ずれかを年のフォーマット文字列として使用し、年を設定します。たとえば、次の式
は、SHIP_DATEポート内の全ての日付における年を2001に変更します。
SET_DATE_PART( SHIP_DATE, 'YY', 2001 )
¨ 月。value引数に1から12(1月は1、12月は12)までの正の整数を入力することにより、
月を変更します。 MM、MON、MONTHのいずれかを月のフォーマット文字列として使用
し、月を設定します。たとえば、次の式はSHIP_DATEポートのすべての日付に対して、
月を10月に変更します。
SET_DATE_PART( SHIP_DATE, 'MONTH', 10 )
¨ 日。1から31までの正の整数(日数が31日未満の月である2月、4月、6月、9月、11月を
除く)をvalue引数に入力することにより、日を変更します。 D、DD、DDD、DY、DAYの
いずれかを日のフォーマット文字列として使用し、日を設定します。たとえば、次の式
はSHIP_DATEポートのすべての日付に対して、日を10日に変更します。
SET_DATE_PART( SHIP_DATE, 'DD', 10 )
¨ 時間。0から24までの正の整数(0=12AM、12=12PM、24=12AM)を value引数に入力する
ことにより、時を変更します。 HH、HH12、HH24のいずれかを時のフォーマット文字列
142
章 6: 関数
として使用し、時を設定します。たとえば、次の式はSHIP_DATEポートのすべての日付
に対して、時を14:00:00(2:00:00PM)に変更します。
SET_DATE_PART( SHIP_DATE, 'HH', 14 )
¨ 分。0から59までの正の整数を value引数に入力することにより、分を変更します。 分
の設定にはフォーマット文字列MIを使用します。たとえば、次のはSHIP_DATEポートの
すべての日付に対して、分を25分に変更します。
SET_DATE_PART( SHIP_DATE, 'MI', 25 )
¨ 秒。0から59までの正の整数を value引数に入力することにより、秒を変更します。 秒
の設定にはSSフォーマット文字列を使用します。たとえば、次の式は、SHIP_DATEポー
ト内のすべての日付における秒を59に変更します。
SET_DATE_PART( SHIP_DATE, 'SS', 59 )
¨ ミリ秒。 value引数に0から999までの正の整数を入力することにより、分を変更しま
す。秒の設定にはMSフォーマット文字列を使用します。たとえば、次の式はSHIP_DATE
ポートのすべての日付に対して、分を125分に変更します。
SET_DATE_PART( SHIP_DATE, 'MS', 125 )
¨ マイクロ秒。1000から999999までの正の整数を value引数に入力することにより、マイ
クロ秒を変更します。 秒の設定にはUSフォーマット文字列を使用します。たとえば、
次のはSHIP_DATEポートのすべての日付に対して、分を12555分に変更します。
SET_DATE_PART( SHIP_DATE, 'US', 12555 )
¨ ナノ秒。1000000から999999999までの正の整数を value引数に入力することにより、ナ
ノ秒を変更します。 秒の設定にはNSフォーマット文字列を使用します。たとえば、式
<>はSHIP_DATEポートのすべての日付に対して、分を12555555分に変更します。
SET_DATE_PART( SHIP_DATE, 'NS', 12555555 )
構文
SET_DATE_PART( date, format, value )
引数
必須/
説明
オプシ
ョン
日付
必須
Date/Timeデータ型。変更したい日付です。有効なトラ
ンスフォーメーション式を必要に応じて入力できます。
形式
必須
日付の中で変更したい場所を指定するフォーマット文字
列。フォーマット文字列は大文字と小文字を区別しませ
ん。
value
必須
日付内の指定した部分に代入される正の整数値。この整
数は、変更したい日付の部分に対して有効な値でなけれ
ばなりません。不適切な値(2月30日など)を入力する
と、セッションが失敗します。
戻り値
指定した部分が変更された日付を、元の日付と同じ形式で返します。
関数にNULL値を渡した場合はNULLです。
SET_DATE_PART
143
例
以下の式は、DATE_PROMISEDポートの各日付に対して、時を午後4時に変更します。
SET_DATE_PART( DATE_PROMISED, 'HH', 16 )
SET_DATE_PART( DATE_PROMISED, 'HH12', 16 )
SET_DATE_PART( DATE_PROMISED, 'HH24', 16 )
DATE_PROMISED
Jan 1 1997 12:15:56AM
Feb 13 1997 2:30:01AM
Mar 31 1997 5:10:15PM
Dec 12 1997 8:07:33AM
NULL
RETURN VALUE
Jan 1 1997 4:15:56PM
Feb 13 1997 4:30:01PM
Mar 31 1997 4:10:15PM
Dec 12 1997 4:07:33PM
NULL
以下の式は、DATE_PROMISEDポートの日付に対して、月を6月に変更します。Data
Integration Serviceは、存在しない日付を作成しようとした場合(5月31日を6月31日に
変更しようとした場合など)、エラーを表示します。
SET_DATE_PART( DATE_PROMISED, 'MM', 6 )
SET_DATE_PART( DATE_PROMISED, 'MON', 6 )
SET_DATE_PART( DATE_PROMISED, 'MONTH', 6 )
DATE_PROMISED
Jan 1 1997 12:15:56AM
Feb 13 1997 2:30:01AM
Mar 31 1997 5:10:15PM
Dec 12 1997 8:07:33AM
NULL
RETURN VALUE
Jun 1 1997 12:15:56AM
Jun 13 1997 2:30:01AM
Error. Integration Service doesn't write row.
Jun 12 1997 8:07:33AM
NULL
以下の式は、DATE_PROMISEDポートの日付に対して、年を2000年に変更します。
SET_DATE_PART(
SET_DATE_PART(
SET_DATE_PART(
SET_DATE_PART(
DATE_PROMISED,
DATE_PROMISED,
DATE_PROMISED,
DATE_PROMISED,
DATE_PROMISED
Jan 1 1997 12:15:56AM
Feb 13 1997 2:30:01AM
Mar 31 1997 5:10:15PM
Dec 12 1997 8:07:33AM
NULL
'Y', 2000 )
'YY', 2000 )
'YYY', 2000 )
'YYYY', 2000 )
RETURN VALUE
Jan 1 2000 12:15:56AM
Feb 13 2000 2:30:01AM
Mar 31 2000 5:10:15PM
Dec 12 2000 4:07:33PM
NULL
ヒント
日付の中の複数の部分を一度に変更したい場合は、 date引数に複数のSET_DATE_PART関数を
ネストすることができます。たとえば、DATE_ENTEREDポート内のすべての日付を1998年7月
1日に変更したい場合、次のような式を記述できます。
SET_DATE_PART( SET_DATE_PART( SET_DATE_PART( DATE_ENTERED, 'YYYY', 1998),MM', 7), 'DD', 1)
SIGN
数値が正数、負数、0のいずれであるかを返します。
144
章 6: 関数
構文
SIGN( numeric_value )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値。評価したい値を渡します。有効なトランスフォ
ーメーション式を必要に応じて入力できます。
戻り値
負の値の場合、-1。
0の場合、0。
正の値の場合、1。
NULLの場合、NULL。
例
次の式は、SALESポートに負の値が含まれるかどうかを確認します。
SIGN( SALES )
SALES
100
-25.99
0
NULL
RETURN VALUE
1
-1
0
NULL
SIN
数値(ラジアン単位)の正弦を返します。
構文
SIN( numeric_value )
引数
必須/
説明
オプシ
ョン
numeric_v
alue
必須
数値データ型。ラジアンで表された数値データ(角度に
πを掛け、180で割ったもの)。正弦を計算したい値を
渡します。有効なトランスフォーメーション式を必要に
応じて入力できます。演算子を使って、SINの計算時に
数値をラジアンに変換したり算術演算を行ったりするこ
ともできます。
SIN
145
戻り値
Double値。
関数にNULL値を渡した場合はNULLです。
例
次の式は、Degreesポート内の値をラジアンに変換してから、各ラジアン値に対して正弦を
計算します。
SIN( DEGREES * 3.14159265359 / 180 )
DEGREES
0
90
70
30
5
89
NULL
RETURN VALUE
0
1
0.939692620785936
0.50000000000003
0.0871557427476639
0.999847695156393
NULL
SIN関数で正弦を計算する前に、SINに渡す値に算術演算を実行することができます。以下
に例を示します。
SIN( ARCS * 3.14159265359 / 180 )
SINH
数値の双曲正弦を返します。
構文
SINH( numeric_value )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。ラジアンで表された数値データ(角度
にπを掛け、180で割ったもの)。双曲正弦を計算した
い値を渡します。有効なトランスフォーメーション式
を必要に応じて入力できます。
戻り値
Double値。
関数にNULL値を渡した場合はNULLです。
146
章 6: 関数
例
次の式は、Anglesポートの値に対して双曲正弦を返します。
SINH( ANGLES )
ANGLES
1.0
2.897
3.66
5.45
0
0.345
NULL
RETURN VALUE
1.1752011936438
9.03225804884884
19.4178051793031
116.376934801486
0.0
0.35188478309993
NULL
ヒント
SINH関数で双曲正弦を計算する前に、SINHに渡す値に算術演算を実行することができま
す。以下に例を示します。
SINH( MEASURES.ARCS / 180 )
SOUNDEX
文字列値を4字の文字列にエンコードします。
SOUNDEXは英語アルファベット(A-Z)の文字に対して機能します。入力文字列の最初の文
字が、戻り値の先頭文字として使用され、それ以外の文字は、子音に基づく3桁の数値に
エンコーディングします。
SOUNDEXは下記の規則に従って文字をエンコードします。
¨ stringの最初の文字を戻り値の最初の文字として使用し、大文字にエンコードします。
たとえば、SOUNDEX(‘John’)とSOUNDEX(‘john’)は両方とも‘J500’を返します。
¨ stringの第一文字以降の最初の3つの異なる子音をエンコードし、残りは無視します。
たとえば、SOUNDEX(‘JohnRB’)とSOUNDEX(‘JohnRBCD’)は両方とも‘J561’を返し
ます。
¨ 音が似ている子音には同じコードを割り当てます。
以下の表に、SOUNDEXの子音に対するエンコードガイドラインを示します。
表 2. SOUNDEX子音用エンコードガイドライン
コード
子音
1
B、P、F、V
2
C、S、G、J、K、Q、X、Z
3
D、T
SOUNDEX
147
コード
子音
4
L
5
M、N
6
R
¨ A、E、I、O、U、H、Wは stringの最初の文字である場合を除き、これらの文字をスキッ
プします。たとえば、SOUNDEX(‘A123’)は‘A000’を返し、SOUNDEX(‘MAeiouhwC’)
は‘M000’を返します。
¨ stringが4文字未満の文字数で文字を生成した場合、SOUNDEXは生成された文字列の残り
の部分にゼロを埋め込みます。たとえば、SOUNDEX(‘J’)は‘J000’を返します。
¨ stringで「SOUNDEX」
(147ページの)にリストされた同じコードを使用する子音が続け
て登場する場合は、SOUNDEXは最初の子音をエンコードし、残りの同じコードの子音は
スキップします。たとえば、SOUNDEX(‘AbbpdMN’)は‘A135’を返します。
¨ string内の数字をスキップします。たとえば、SOUNDEX(‘Joh12n’)と
SOUNDEX(‘1John’)は両方とも‘J500’を返します。
¨ stringがNULLの場合、またはstring内のすべての文字が英字でない場合、NULLを返しま
す。
構文
SOUNDEX( string )
引数
必須/
説明
オプシ
ョン
文字列
必須
文字列。エンコードしたい文字列値を渡します。有効な
トランスフォーメーション式を必要に応じて入力できま
す。
戻り値
文字列。
下記の条件のいずれかが真の場合、NULLとなります。
¨ 関数に渡した値がNULL。
¨ string内の文字が英字ではない。
¨ stringは空です。
例
下記の式はEMPLOYEE_NAMEポート内の値をエンコードします。
SOUNDEX( EMPLOYEE_NAME )
EMPLOYEE_NAME
John
148
章 6: 関数
RETURN VALUE
J500
EMPLOYEE_NAME
William
jane
joh12n
1abc
NULL
RETURN VALUE
W450
J500
J500
A120
NULL
SQRT
負以外の数値の平方根を返します。
構文
SQRT( numeric_value )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
正の数値。平方根を計算したい値を渡します。有効な
トランスフォーメーション式を必要に応じて入力でき
ます。
戻り値
Double値。
関数にNULL値を渡した場合はNULLです。
例
次の式は、Numbersポートの値に対して平方根を返します。
SQRT( NUMBERS )
NUMBERS
100
-100
NULL
60.54
RETURN VALUE
10
Error. Data Integration Service does not write row.
NULL
7.78074546557076
値-100はエラーとなります。これは、関数SQRTが正の数値だけを評価するからです。負の
値または文字値を渡すと、Data Integration Serviceはトランスフォーメーション評価エ
ラーを表示し、行を書き込みません。
SQRT関数で平方根を計算する前に、SQRTに渡す値に算術演算を実行することができます。
SQRT
149
STDDEV
関数に渡された数値の標準偏差を返します。STDDEVは統計データの分析に使用されます。
STDDEVには他の集計関数は1つしかネストできません。また、ネストされた関数は数値デー
タ型を返さなければなりません。
構文
STDDEV( numeric_value [,filter_condition] )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。この関数は、標準偏差を計算したい
値、または他の関数の結果を渡します。有効なトラン
スフォーメーション式を必要に応じて入力できます。
演算子を使って、複数のポートの値の平均を取ること
もできます。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけれ
ばなりません。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
数値。
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合(たと
えば、フィルタ条件の値がすべての行に対してFALSEまたはNULLであった場合)には、NULL
です。
注: 戻り値が15を超える精度を持つ10進値である場合は、高精度を有効にして、最大28桁
までの10進精度を使用可能にできます。
NULL
値の1つがNULLであると、STDDEVはその値を無視します。ただし、すべての値がNULLである
場合には、NULLを返します。
Group By
STDDEVは、トランスフォーメーションで定義したGroup Byポートに基づいて値をグループ
分けし、各グループについて1つの結果を返します。
Group Byポートがない場合には、STDDEVはすべての行を1つのグループとして扱い、1つの
値を返します。
150
章 6: 関数
例
次の式は、TOTAL_SALESポート内で2000.00ドルを超えるすべての行の標準偏差を計算しま
す。
STDDEV( SALES, SALES > 2000.00 )
SALES
2198.0
1010.90
2256.0
153.88
3001.0
NULL
8953.0
RETURN VALUE: 3254.60361129688
値1010.90と 153.88は計算に含まれません。これは、 filter_condition によって$ 2,000
を超える販売額が指定されているからです。
次の式は、SALESポート内のすべての行の標準偏差を計算します。
STDDEV(SALES)
SALES
2198.0
2198.0
2198.0
2198.0
RETURN VALUE: 0
戻り値は0です。これは、各行に同じ数値がある(標準偏差がない)からです。標準偏差が
ない場合、戻り値は0になります。
SUBSTR
文字列の一部を返します。SUBSTRは、空白を含むすべての文字を文字列の先頭から数えま
す。
構文
SUBSTR( string, start [,length] )
引数
必須/
説明
オプシ
ョン
文字列
必須
文字列でなければなりません。検索したい文字列を渡し
ます。有効なトランスフォーメーション式を必要に応じ
SUBSTR
151
引数
必須/
説明
オプシ
ョン
て入力できます。数値を渡すと、関数はそれを文字列に
変換します。
start
必須
整数でなければなりません。文字列内でカウントを開始
する位置を示します。有効なトランスフォーメーション
式を必要に応じて入力できます。開始位置が正の数であ
る場合、SUBSTRは文字列の先頭からその数だけ数えた位
置を開始位置とします。開始位置が負の数である場合、
SUBSTRは文字列の最後から数えた位置を開始位置としま
す。開始位置が0の場合、SUBSTRは文字列の最初の文字
から検索を開始します。
length
オプシ
ョン
0より大きい整数でなければなりません。SUBSTRが返す
文字の数を指定します。有効なトランスフォーメーショ
ン式を必要に応じて入力できます。length引数を省略す
ると、SUBSTRは開始位置から文字列の終わりまで、すべ
ての文字を返します。負の整数または0を渡すと、関数は
空の文字列を返します。小数を渡すと、関数はそれを最
も近い整数値に丸めます。
戻り値
文字列。
負または0の長さ値を渡した場合は、空の文字列です。
関数にNULL値を渡した場合はNULLです。
例
以下の式は、Phoneポート内の各行に対して、市外局番を返します。
SUBSTR( PHONE, 0, 3 )
PHONE
809-555-0269
357-687-6708
NULL
RETURN VALUE
809
357
NULL
SUBSTR( PHONE, 1, 3 )
PHONE
809-555-3915
357-687-6708
NULL
RETURN VALUE
809
357
NULL
以下の式は、Phoneポート内の各行に対して、市外局番を除いた電話番号を返します。
SUBSTR( PHONE, 5, 8 )
PHONE
808-555-0269
809-555-3915
152
章 6: 関数
RETURN VALUE
555-0269
555-3915
PHONE
357-687-6708
NULL
RETURN VALUE
687-6708
NULL
負の開始値を渡すことにより、Phoneポート内の各行に対して電話番号を返こともできま
す。式は、length引数の結果を返す際には、元の文字列を左から順に読みます。
SUBSTR( PHONE, -8, 3 )
PHONE
808-555-0269
809-555-3915
357-687-6708
NULL
RETURN VALUE
555
555
687
NULL
start引数、またはlength引数でINSTRをネストして特定の文字列を検索し、その位置を返
すことができます。
次の式は、文字列を最後の文字から順に評価します。文字列内の最後(一番右側)のスペ
ースを見つけて、それより前にある文字をすべて返します。
SUBSTR( CUST_NAME,1,INSTR( CUST_NAME,' ' ,-1,1 ) - 1 )
CUST_NAME
PATRICIA JONES
MARY ELLEN SHAH
RETURN VALUE
PATRICIA
MARY ELLEN
次の式は、文字列から文字#を削除します。
SUBSTR( CUST_ID, 1, INSTR(CUST_ID, '#')-1 ) || SUBSTR( CUST_ID, INSTR(CUST_ID, '#')+1 )
length引数が文字列より長い場合、SUBSTRは開始位置から文字列の終わりまで、すべての
文字を返します。次の例を検討します。
SUBSTR('abcd', 2, 8)
戻り値は‘bcd’です。この結果を、以下の例と比較します。
SUBSTR('abcd', -2, 8)
戻り値は‘cd’です。
SUM
選択したポート内のすべての値の合計を返します。 オプションとして、合計を計算するた
めに読み込む行を制限するフィルタを適用できます。SUMには他の集計関数は1つしかネス
トできません。また、ネストされた関数は数値データ型を返さなければなりません。
SUM
153
構文
SUM( numeric_value [, filter_condition ] )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。追加したい値を渡します。有効なトラ
ンスフォーメーション式を必要に応じて入力できま
す。演算子を使って、複数のポートの値を加算するこ
ともできます。
filter_con
dition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値であ
るか、TRUE、FALSE、またはNULLの値が求められなけれ
ばなりません。有効なトランスフォーメーション式を
必要に応じて入力できます。
戻り値
数値。
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合(たと
えば、フィルタ条件の値がすべての行に対してFALSEまたはNULLであった場合)には、NULL
です。
注: 戻り値が15を超える精度を持つ10進値である場合は、高精度を有効にして、最大28桁
までの10進精度を使用可能にできます。
NULL
値の1つがNULLであると、SUMはその値を無視します。ただし、ポートから渡された値がす
べてNULLである場合には、NULLを返します。
Group By
SUMは、トランスフォーメーションで定義したGroup Byポートに基づいて値をグループ分け
し、各グループについて1つの結果を返します。
Group Byポートがない場合には、SUMはすべての行を1つのグループとして扱い、1つの値を
返します。
例
次の式は、Salesポート内で2000より大きいすべての値の合計を返します。
SUM( SALES, SALES > 2000 )
SALES
2500.0
1900.0
1200.0
NULL
3458.0
4519.0
RETURN VALUE: 10477.0
154
章 6: 関数
ヒント
SUM関数で合計を計算する前に、SUMに渡す値に算術演算を実行することができます。以下
に例を示します。
SUM( QTY * PRICE - DISCOUNT )
SYSTIMESTAMP
Data Integration Serviceのホストノードの現在の日付と時刻をナノ秒の精度で返しま
す。 日時を表示する制度はプラットフォームにより異なります。
関数の戻り値は引数の設定方法に応じて異なります。
¨ SYSTIMESTAMPの引数を変数として設定する場合、Data Integration Serviceではトラ
ンスフォーメーションの各行で関数を評価します。
¨ SYSTIMESTAMPの引数を定数として設定する場合、Data Integration Serviceではトラ
ンスフォーメーションの各行で関数を一度評価し、その値を保持します。
構文
SYSTIMESTAMP( [format] )
引数
必須/
説明
オプシ
ョン
形式
オプシ
ョン
値を取得する対象となるメトリック。最大個の履歴ログを
指定できます。フォーマット文字列は一重引用符で囲んで
ください。フォーマット文字列は大文字と小文字を区別し
ません。たとえば、ミリ秒の精度で日時を表示するには、
構文SYSTIMESTAMP(‘MS’)を使用します。デフォルトの精
度はマイクロ秒(US)です。
戻り値
タイムスタンプ。入力値に基づく日付と時間を返します。
例
組織にはオンライン注文サービスがあり、リアルタイムでデータを処理します。
SYSTIMESTAMP関数を使用すると、ターゲットデータベースの各トランザクションに対して
プライマリキーを生成できます。
以下のポートと値でExpressionトランスフォーメーションを作成します。
Port Name
Customer_Name
Order_Qty
Time_Counter
Transaction_Id
Port Type
Input
Input
Variable
Output
Expression
n/a
n/a
‘US’
SYSTIMESTAMP ( Time_Counter )
SYSTIMESTAMP
155
実行時、Data Integration Serviceは各行に対して、マイクロ秒の精度でシステム時間を
生成します。
Customer_Name
Vani Deed
Kalia Crop
Vani Deed
Harry Spoon
Order_Qty
14
3
6
32
Transaction_Id
07/06/2007 18:00:30.701015000
07/06/2007 18:00:30.701029000
07/06/2007 18:00:30.701039000
07/06/2007 18:00:30.701048000
TAN
数値(ラジアン単位)の正接を返します。
構文
TAN( numeric_value )
引数
必須/
説明
オプシ
ョン
numeric_v
alue
必須
数値データ型。ラジアンで表された数値データ(角度に
πを掛け、180で割ったもの)。正接を計算したい数値を
渡します。有効なトランスフォーメーション式を必要に
応じて入力できます。
戻り値
Double値。
関数にNULL値を渡した場合はNULLです。
例
次の式は、Degreesポートのすべての値に対して正接を返します。
TAN( DEGREES * 3.14159 / 180 )
DEGREES
70
50
30
5
18
89
NULL
RETURN VALUE
2.74747741945531
1.19175359259435
0.577350269189672
0.0874886635259298
0.324919696232929
57.2899616310952
NULL
TANH
この関数に渡された数値の双曲正接を返します。
156
章 6: 関数
構文
TANH( numeric_value )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。ラジアンで表された数値データ(角度
にπを掛け、180で割ったもの)。双曲正接を計算した
い数値を渡します。有効なトランスフォーメーション
式を必要に応じて入力できます。
戻り値
Double値。
関数にNULL値を渡した場合はNULLです。
例
次の式は、Anglesポートの値に対して双曲正接を返します。
TANH( ANGLES )
ANGLES
1.0
2.897
3.66
5.45
0
0.345
NULL
RETURN VALUE
0.761594155955765
0.993926947790665
0.998676551914886
0.999963084213409
0.0
0.331933853503641
NULL
ヒント
TANH関数で双曲正接を計算する前に、TANHに渡す値に算術演算を実行することができま
す。以下に例を示します。
TANH( ARCS / 360 )
TO_BIGINT
文字列または数値をBigint値に変換します。TO_BIGINT構文にはオプションの引数があり、
数字を近似値の整数に丸めるか、小数点以下を切り詰めるかを選択できます。TO_BIGINT
は、先頭の空白を無視します。
TO_BIGINT
157
構文
TO_BIGINT( value [, flag] )
引数
必須/
説明
オプシ
ョン
value
必須
文字列データ型または数値データ型。Bigint値に変換し
たい値を渡します。有効なトランスフォーメーション式
を必要に応じて入力できます。
flag
オプシ
ョン
小数点以下を切り捨てるか丸めるかを指定します。フラ
グは整数リテラルか、TRUEまたはFALSEの定数でなけれ
ばなりません。
TO_INTEGERは、フラグがTRUEまたは非0の数字の場合に
小数点以下を切り捨てます。
フラグがFALSEまたは0の場合、あるいはこの引数が省略
された場合、TO_INTEGERは値を近似値の整数に丸めま
す。
既定ではフラグは設定されません。
戻り値
Bigint。
関数にNULL値を渡した場合はNULLです。
数字以外の文字を含む関数に値が渡されると、Data Integration Serviceはその行をエラ
ー行とマークするか、マッピングが失敗します。
例
次の式は、ポートIN_TAXからの値を使用します。
TO_BIGINT( IN_TAX, TRUE )
IN_TAX
'7245176201123435.6789'
'7245176201123435.2'
'7245176201123435.2.48'
NULL
'A12.3Grove'
'
176201123435.87'
'-7245176201123435.2’
'-7245176201123435.23'
-9223372036854775806.9
9223372036854775806.9
RETURN VALUE
7245176201123435
7245176201123435
7245176201123435
NULL
0
176201123435
-7245176201123435
-7245176201123435
-9223372036854775806
9223372036854775806
TO_BIGINT( IN_TAX )
IN_TAX
'7245176201123435.6789'
'7245176201123435.2'
'7245176201123435.348'
NULL
'A12.3Grove'
158
章 6: 関数
RETURN VALUE
7245176201123436
7245176201123435
7245176201123435
NULL
0
IN_TAX
'
176201123435.87'
'-7245176201123435.6789'
'-7245176201123435.23'
-9223372036854775806.9
9223372036854775806.9
RETURN VALUE
176201123436
-7245176201123436
-7245176201123435
-9223372036854775807
9223372036854775807
TO_CHAR (Dates)
日付を文字列に変換します。TO_CHARは、数値を文字列に変換することもできます。
TO_CHARフォーマット文字列を使用して、日付を任意の形式に変換できます。
構文
TO_CHAR( date [,format] )
引数
必須/
説明
オプシ
ョン
日付
必須
Date/Timeデータ型。文字列に変換したい日付値を渡し
ます。有効なトランスフォーメーション式を必要に応じ
て入力できます。
形式
オプシ
ョン
正しいTO_CHAR形式文字列を入力します。このフォーマ
ット文字列は戻り値の形式を定義するものであり、date
引数の値の形式を定義するものではありません。フォー
マット文字列を省略すると、マッピング設定に指定され
ている日付形式で文字列が返されます。
戻り値
文字列。
関数にNULL値を渡した場合はNULLです。
例
次の式は、DATE_PROMISEDポート内の日付をMON DD YYYY:形式の文字列に変換します。
TO_CHAR( DATE_PROMISED, 'MON DD YYYY' )
DATE_PROMISED
Apr 1 1998 12:00:10AM
Feb 22 1998 01:31:10PM
Oct 24 1998 02:12:30PM
NULL
RETURN VALUE
'Apr 01 1998'
'Feb 22 1998'
'Oct 24 1998'
NULL
TO_CHAR (Dates)
159
format引数を省略すると、TO_CHARはデフォルトではマッピング設定に指定されている日付
形式であるMM/DD/YYYY HH24:MI:SS.USで文字列を返します。
TO_CHAR( DATE_PROMISED )
DATE_PROMISED
Apr 1 1998 12:00:10AM
Feb 22 1998 01:31:10PM
Oct 24 1998 02:12:30PM
NULL
RETURN VALUE
'04/01/1998 00:00:10.000000'
'02/22/1998 13:31:10.000000'
'10/24/1998 14:12:30.000000'
NULL
次の式は、ポート内の各日付の曜日を返します。
TO_CHAR( DATE_PROMISED, 'D' )
DATE_PROMISED
04-01-1997 12:00:10AM
02-22-1997 01:31:10PM
10-24-1997 02:12:30PM
NULL
RETURN VALUE
'3'
'7'
'6'
NULL
TO_CHAR( DATE_PROMISED, 'DAY' )
DATE_PROMISED
04-01-1997 12:00:10AM
02-22-1997 01:31:10PM
10-24-1997 02:12:30PM
NULL
RETURN VALUE
'Tuesday'
'Saturday'
'Friday'
NULL
次の式は、ポート内の各日付の日の部分を返します。
TO_CHAR( DATE_PROMISED, 'DD' )
DATE_PROMISED
04-01-1997 12:00:10AM
02-22-1997 01:31:10PM
10-24-1997 02:12:30PM
NULL
RETURN VALUE
'01'
'22'
'24'
NULL
次の式は、ポート内の各日付に対して、その年の通算何日目になるかを返します。
TO_CHAR( DATE_PROMISED, 'DDD' )
DATE_PROMISED
04-01-1997 12:00:10AM
02-22-1997 01:31:10PM
10-24-1997 02:12:30PM
NULL
RETURN VALUE
'091'
'053'
'297'
NULL
次の式は、ポート内の各日付の時の部分を返します。
TO_CHAR( DATE_PROMISED, 'HH' )
TO_CHAR( DATE_PROMISED, 'HH12' )
DATE_PROMISED
04-01-1997 12:00:10AM
02-22-1997 01:31:10PM
160
章 6: 関数
RETURN VALUE
'12'
'01'
DATE_PROMISED
10-24-1997 02:12:30PM
NULL
RETURN VALUE
'02'
NULL
TO_CHAR( DATE_PROMISED, 'HH24' )
DATE_PROMISED
04-01-1997 12:00:10AM
02-22-1997 01:31:10PM
10-24-1997 11:12:30PM
NULL
RETURN VALUE
'00'
'13'
'23'
NULL
次の式は、日付値を文字列で表されたMJD値に変換します。
TO_CHAR( SHIP_DATE, 'J')
SHIP_DATE
Dec 31 1999 03:59:59PM
Jan 1 1900 01:02:03AM
RETURN_VALUE
2451544
2415021
次の式は、日付をMM/DD/YY形式の文字列に変換します。
TO_CHAR( SHIP_DATE, 'MM/DD/RR')
SHIP_DATE
12/31/1999 01:02:03AM
09/15/1996 03:59:59PM
05/17/2003 12:13:14AM
RETURN_VALUE
12/31/99
09/15/96
05/17/03
SSSSSフォーマット文字列をTO_CHAR式で使用することもできます。たとえば、次の式は
SHIP_DATEポートの日付を深夜0時からの通算秒を示す文字列に変換します。
TO_CHAR( SHIP_DATE, 'SSSSS')
SHIP_DATE
12/31/1999 01:02:03AM
09/15/1996 03:59:59PM
RETURN_VALUE
3783
86399
TO_CHAR式では、YYフォーマット文字列はRRフォーマット文字列と同じ結果を返します。
次の式は、日付をMM/DD/YY形式の文字列に変換します。
TO_CHAR( SHIP_DATE, 'MM/DD/YY')
SHIP_DATE
12/31/1999 01:02:03AM
09/15/1996 03:59:59PM
05/17/2003 12:13:14AM
RETURN_VALUE
12/31/99
09/15/96
05/17/03
次の式は、ポート内の各日付に対して、その月の何週目であるかを返します。
TO_CHAR( DATE_PROMISED, 'W' )
DATE_PROMISED
04-01-1997 12:00:10AM
02-22-1997 01:31:10AM
RETURN VALUE
'01'
'04'
TO_CHAR (Dates)
161
DATE_PROMISED
10-24-1997 02:12:30PM
NULL
RETURN VALUE
'04'
NULL
次の式は、ポート内の各日付に対して、その年の何週目であるかを返します。
TO_CHAR( DATE_PROMISED, 'WW' )
DATE_PROMISED
04-01-1997 12:00:10PM
02-22-1997 01:31:10AM
10-24-1997 02:12:30AM
NULL
RETURN VALUE
'18'
'08'
'43'
NULL
ヒント
TO_CHARとTO_DATEを組み合わせて次のような関数を記述すれば、月の数値を対応する月の
文字列に変換することができます。
TO_CHAR( TO_DATE( numeric_month, 'MM' ), 'MONTH' )
TO_CHAR(数値)
数値をテキスト文字列に変換します。 TO_CHARは、日付を文字列に変換することもできま
す。
TO_CHARは、次のように数値をテキスト文字列に変換します。
¨ Double値を16桁までの文字列に変換し、15桁までの精度を表示します。15桁を超える数
値を渡すと、TO_CHARは数値を16桁に丸めます。
¨ (-1e16,-1e-16]および[1e-16, 1e16)の範囲の数値は、10進表記で返します。この範
囲以外の数値は科学的表記で返します。
注: Data Integration Serviceは、1e-16と-1e16は科学的表記に変換しますが、1e-16
と-1e-16は10進表記で返します。
構文
TO_CHAR( numeric_value )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。文字列に変換したい数値です。有効な
トランスフォーメーション式を必要に応じて入力でき
ます。
戻り値
文字列。
関数にNULL値を渡した場合はNULLです。
162
章 6: 関数
例
次の式は、SALESポート内の値をテキストに変換します。
TO_CHAR( SALES )
SALES
1010.99
-15.62567
10842764968208837340
1.234567890123456789e-10
RETURN VALUE
'1010.99'
'-15.62567'
'1.084276496820884e+019' (rounded to 16th digit)
'0.0000000001234567890123457'
(greater than 1e-16 but less than 1e16)
'1.23456789012345e17' (greater than 1e16)
'0'
'33.15'
NULL
1.23456789012345e17
0
33.15
NULL
TO_DATE
Date/Timeデータ型に文字列を変換します。元の文字列の形式を指定するには、TO_DATEフ
ォーマット文字列を使用します。
TO_DATE式の出力ポートはDate/Timeでなければなりません。
TO_DATEで2桁の年を変換する場合には、RRまたはYYのフォーマット文字列を使ってくださ
い。YYYYフ形式文字列を使用してはなりません。
構文
TO_DATE( string [, format] )
引数
必須/
説明
オプシ
ョン
文字列
必須
文字列データ型であること。日付に変換したい値を渡し
ます。有効なトランスフォーメーション式を必要に応じ
て入力できます。
形式
オプシ
ョン
正しいTO_DATE形式文字列を入力します。フォーマット
文字列は、string引数の各部分と一致しなければなりま
せん。たとえば、文字列'Mar 15 1998 12:43:10AM'を渡
す場合は、フォーマット文字列'MON DD YYYY
HH12:MI:SSAM'を使用します。フォーマット文字列を省
略する場合は、文字列の値がセッションで指定された日
付形式になっている必要があります。
戻り値
日付。
TO_DATEは常に日付と時刻を返します。時刻値を含まない文字列を渡すと、返される日付の
時刻は常に00:00:00.000000000になります。この関数の結果は、Date/Timeデータ型を持
TO_DATE
163
つ任意のターゲット列にマッピングできます。ターゲット列の精度がナノ秒未満である場
合、Data Integration Serviceはターゲットにdatetime値を書き込むときにターゲット列
の精度に合わせてdatetime値を切り詰めます。
関数にNULL値を渡した場合はNULLです。
警告: フォーマット文字列は、日付区切り文字を含め、TO_DATE文字列の形式と一致しな
ければなりません。一致しない場合、Data Integration Serviceは不正確な値を返すか、
レコードをスキップする可能性があります。
例
次の式は、DATE_PROMISEDポートの文字列に対して日付値を返します。TO_DATEは常に日付
と時刻を返します。時刻値を含まない文字列を渡すと、返される日付の時刻は常に
00:00:00.000000000になります。20世紀にマッピングを実行した場合、年の最初の2桁は
19になります。この例では、Data Integration Serviceが実行されているノードでの現在
の年は1998です。 ターゲット列の日付形式がMON DD YY HH24:MI SSであるため、Data
Integration Serviceはターゲットに書き込むときにdatetime値を秒単位に切り詰めます。
TO_DATE( DATE_PROMISED, 'MM/DD/YY' )
DATE_PROMISED
'01/22/98'
'05/03/98'
'11/10/98'
'10/19/98'
NULL
RETURN VALUE
Jan 22 1998 00:00:00
May 3 1998 00:00:00
Nov 10 1998 00:00:00
Oct 19 1998 00:00:00
NULL
次の式は、DATE_PROMISEDポートの文字列に対して日付および時刻値を返します。時刻値を
含まない文字列を渡すと、Data Integration Serviceはエラーを返します。 20世紀にマ
ッピングを実行した場合、年の最初の2桁は19になります。Data Integration Serviceが
実行されているノードでの現在の年は、1998です。
TO_DATE( DATE_PROMISED, 'MON DD YYYY HH12:MI:SSAM' )
DATE_PROMISED
'Jan 22 1998 02:14:56PM'
'Mar 15 1998 11:11:11AM'
'Jun 18 1998 10:10:10PM'
'October 19 1998'
NULL
RETURN
Jan 22
Mar 15
Jun 18
Error.
NULL
VALUE
1998 02:14:56PM
1998 11:11:11AM
1998 10:10:10PM
Integration Service skips this row.
以下の式は、SHIP_DATE_MJD_STRINGポートの文字列を日付値に変換します。
TO_DATE (SHIP_DATE_MJD_STR, 'J')
SHIP_DATE_MJD_STR
'2451544'
'2415021'
RETURN_VALUE
Dec 31 1999 00:00:00.000000000
Jan 1 1900 00:00:00.000000000
Jフォーマット文字列には日付の時間部分が含まれないため、戻り値では時間が
00.000000000:00:00に設定されています。
164
章 6: 関数
次の式は、文字列を4桁形式の年に変換します。現在の年は1998です。
TO_DATE( DATE_STR, 'MM/DD/RR')
DATE_STR
'04/01/98'
'08/17/05'
RETURN VALUE
04/01/1998 00:00:00.000000000
08/17/2005 00:00:00.000000000
次の式は、文字列を4桁形式の年に変換します。現在の年は1998です。
TO_DATE( DATE_STR, 'MM/DD/YY')
DATE_STR
'04/01/98'
'08/17/05'
注:
RETURN VALUE
04/01/1998 00:00:00.000000000
08/17/1905 00:00:00.000000000
2番目の行については、RRは2005年を返しますが、YYは 1905年を返します。
次の式は、文字列を4桁形式の年に変換します。現在の年は1998です。
TO_DATE( DATE_STR, 'MM/DD/Y')
DATE_STR
'04/01/8'
'08/17/5'
RETURN VALUE
04/01/1998 00:00:00.000000000
08/17/1995 00:00:00.000000000
次の式は、文字列を4桁形式の年に変換します。現在の年は1998です。
TO_DATE( DATE_STR, 'MM/DD/YYY')
DATE_STR
'04/01/998'
'08/17/995'
RETURN VALUE
04/01/1998 00:00:00.000000000
08/17/1995 00:00:00.000000000
次の式は、深夜からの通算秒を含む文字を日付値に変換します。
TO_DATE( DATE_STR, 'MM/DD/YYYY SSSSS')
DATE_STR
'12/31/1999 3783'
'09/15/1996 86399'
RETURN_VALUE
12/31/1999 01:02:03
09/15/1996 23:59:59
ターゲットで複数の異なる日付形式を使用できる場合は、DECODE関数でTO_DATEとIS_DATE
を使用して、使用可能な形式をテストできます。以下に例を示します。
DECODE( TRUE,
--test first format
IS_DATE( CLOSE_DATE,'MM/DD/YYYY HH24:MI:SS' ),
--if true, convert to date
TO_DATE( CLOSE_DATE,'MM/DD/YYYY HH24:MI:SS' ),
--test second format; if true, convert to date
IS_DATE( CLOSE_DATE,'MM/DD/YYYY'), TO_DATE( CLOSE_DATE,'MM/DD/YYYY' ),
--test third format; if true, convert to date
IS_DATE( CLOSE_DATE,'MON DD YYYY'), TO_DATE( CLOSE_DATE,'MON DD YYYY'),
--if none of the above
ERROR( 'NOT A VALID DATE') )
TO_DATE
165
TO_CHARとTO_DATEを組み合わせて次のような関数を記述すれば、月の数値を対応する月の
文字列に変換することができます。
TO_CHAR( TO_DATE( numeric_month, 'MM' ), 'MONTH' )
関連項目:
¨ 「日付形式文字列のルールとガイドライン」
(30ページの)
TO_DECIMAL
文字列または数値を10進値に変換します。 TO_DECIMALは、先頭の空白を無視します。
構文
TO_DECIMAL( value [, scale] )
引数
必須/
説明
オプシ
ョン
value
必須
文字列データ型または数値データ型であること。10進に
変換したい値を渡します。有効なトランスフォーメーシ
ョン式を必要に応じて入力できます。
scale
オプシ
ョン
0から28までの整数リテラル。小数点以下の桁数を指定し
ます。この引数を省略すると、関数は入力値と同じ位取
りの値を返します。
戻り値
0から28までの精度と位取りを持つ10進値。
関数にNULL値を渡した場合はNULLです。
数字以外の文字を含む関数に値が渡されると、Data Integration Serviceはその行をエラ
ー行とマークするか、マッピングが失敗します。
注: 戻り値が15を超える精度を持つ10進値である場合は、高精度を有効にして、最大28桁
までの10進精度を使用可能にできます。
例
次の式は、ポートIN_TAXからの値を使用します。データ型は10進で、精度は10、位取りは3
です。
TO_DECIMAL( IN_TAX, 3 )
IN_TAX
'15.6789'
'60.2'
'118.348'
NULL
166
章 6: 関数
RETURN VALUE
15.679
60.200
118.348
NULL
IN_TAX
'A12.3Grove'
‘711A1’
RETURN VALUE
0
711
TO_FLOAT
文字列または数値を倍精度浮動小数点数(Doubleデータ型)に変換します。 TO_FLOATは、
先頭の空白を無視します。
構文
TO_FLOAT( value )
引数
必須/
説明
オプシ
ョン
value
必須
文字列データ型または数値データ型であること。Double
値に変換したい値を渡します。有効なトランスフォーメ
ーション式を必要に応じて入力できます。
戻り値
Double値。
関数にNULL値を渡した場合はNULLです。
数字以外の文字を含む関数に値が渡されると、Data Integration Serviceはその行をエラ
ー行とマークするか、マッピングが失敗します。
例
次の式は、ポートIN_TAXからの値を使用します。
TO_FLOAT( IN_TAX )
IN_TAX
'15.6789'
'60.2'
'118.348'
NULL
'A12.3Grove'
RETURN VALUE
15.6789
60.2
118.348
NULL
0
TO_INTEGER
文字列または数値を整数に変換します。 TO_INTEGER構文にはオプションの引数があり、数
字を近似値の整数に丸めるか、小数点以下を切り詰めるかを選択できます。TO_INTEGER
は、先頭の空白を無視します。
TO_FLOAT
167
構文
TO_INTEGER( value [, flag] )
引数
必須/
説明
オプシ
ョン
value
必須
文字列データ型または数値データ型。整数に変換したい
値を渡します。有効なトランスフォーメーション式を必
要に応じて入力できます。
flag
オプシ
ョン
小数点以下を切り捨てるか丸めるかを指定します。フラ
グは整数リテラルか、TRUEまたはFALSEの定数でなけれ
ばなりません。
TO_INTEGERは、フラグがTRUEまたは非0の数字の場合に
小数点以下を切り捨てます。
フラグがFALSEまたは0の場合、あるいはこの引数が省略
された場合、TO_INTEGERは値を近似値の整数に丸めま
す。
戻り値
整数。
関数にNULL値を渡した場合はNULLです。
数字以外の文字を含む関数に値が渡されると、Data Integration Serviceはその行をエラ
ー行とマークするか、マッピングが失敗します。
例
次の式は、ポートIN_TAXからの値を使用します。変換によって数値のオーバーフローが発
生すると、Data Integration Serviceはエラーを表示します。
TO_INTEGER( IN_TAX, TRUE )
IN_TAX
'15.6789'
'60.2'
'118.348'
‘5,000,000,000’
NULL
'A12.3Grove'
'
123.87'
'-15.6789'
'-15.23'
RETURN VALUE
15
60
118
Error. Integration Service doesn't write row.
NULL
0
123
-15
-15
TO_INTEGER( IN_TAX, FALSE)
IN_TAX
'15.6789'
'60.2'
'118.348'
‘5,000,000,000’
NULL
'A12.3Grove'
168
章 6: 関数
RETURN VALUE
16
60
118
Error. Integration Service doesn't write row.
NULL
0
IN_TAX
'
123.87'
'-15.6789'
'-15.23'
RETURN VALUE
124
-16
-15
TRUNC (Dates)
日付を特定の年、月、日、時、分、秒、ミリ秒、またはマイクロ秒に切り詰めます。ま
た、TRUNCを使って数値を切り詰めることもできます。
日付の中の以下の部分を切り詰めることができます。
¨ 年。日付の年の部分を切り詰めると、関数は入力された年の1月1日を返し、時刻を
00:00:00.000000000に設定します。たとえば、次の式では1/1/1997
00:00:00.000000000を返します。
TRUNC(12/1/1997 3:10:15, 'YY')
¨ 月。日付の月の部分を切り詰めると、関数は月の最初の日を返し、時刻を
00:00:00.000000000に設定します。たとえば、次の式では4/1/1997
00:00:00.000000000を返します。
TRUNC(4/15/1997 12:15:00, 'MM')
¨ 日。日付の日の部分を切り詰めると、関数は日付を返し、時刻を00:00:00.000000000に
設定します。たとえば、次の式では6/13/1997 00:00:00.000000000を返します。
TRUNC(6/13/1997 2:30:45, 'DD')
¨ 時間。日付の時の部分を切り詰めると、関数は日付の分、秒、およびサブ秒を0に設定
して返します。 たとえば、次の式では4/1/1997 11:00:00.000000000を返します。
TRUNC(4/1/1997 11:29:35, 'HH')
¨ 分。日付の分の部分を切り詰めると、関数は日付の秒およびサブ秒を0に設定して返し
ます。 たとえば、次の式では5/22/1997 10:15:00.000000000を返します。
TRUNC(5/22/1997 10:15:29, 'MI')
¨ 秒。日付の秒の部分を切り詰めると、関数は日付のミリ秒を0に設定して返します。 た
とえば、次の式では5/22/1997 10:15:29.000000000を返します。
TRUNC(5/22/1997 10:15:29.135, 'SS')
¨ ミリ秒。日付のミリ秒の部分を切り詰めると、関数は日付のマイクロ秒を0に設定して
返します。 たとえば、次の式では5/22/1997 10:15:30.135000000を返します。
TRUNC(5/22/1997 10:15:30.135235, 'MS')
¨ マイクロ秒。日付のマイクロ秒の部分を切り詰めると、関数は日付のナノ秒を0に設定
して返します。 たとえば、次の式では5/22/1997 10:15:30.135235000を返します。
TRUNC(5/22/1997 10:15:29.135235478, 'US')
TRUNC (Dates)
169
構文
TRUNC( date [,format] )
引数
必須/
説明
オプシ
ョン
日付
必須
Date/Timeデータ型。切り詰めを行う日付です。日付を
求める有効なトランスフォーメーション式を必要に応じ
て入力できます。
形式
オプシ
ョン
正しい形式文字列を入力します。フォーマット文字列は
大文字と小文字を区別しません。フォーマット文字列を
省略すると、関数は日付の時刻部分を切り詰めて、
00.000000000:00:00に設定します。
戻り値
日付。
関数にNULL値を渡した場合はNULLです。
例
以下の式は、DATE_SHIPPEDポートの日付の年の部分を切り詰めます。
TRUNC(
TRUNC(
TRUNC(
TRUNC(
DATE_SHIPPED,
DATE_SHIPPED,
DATE_SHIPPED,
DATE_SHIPPED,
'Y' )
'YY' )
'YYY' )
'YYYY' )
DATE_SHIPPED
Jan 15 1998 2:10:30AM
Apr 19 1998 1:31:20PM
Jun 20 1998 3:50:04AM
Dec 20 1998 3:29:55PM
NULL
RETURN VALUE
Jan 1 1998 12:00:00.000000000
Jan 1 1998 12:00:00.000000000
Jan 1 1998 12:00:00.000000000
Jan 1 1998 12:00:00.000000000
NULL
以下の式は、DATE_SHIPPEDポートの各日付の月の部分を切り詰めます。
TRUNC( DATE_SHIPPED, 'MM' )
TRUNC( DATE_SHIPPED, 'MON' )
TRUNC( DATE_SHIPPED, 'MONTH' )
DATE_SHIPPED
Jan 15 1998 2:10:30AM
Apr 19 1998 1:31:20PM
Jun 20 1998 3:50:04AM
Dec 20 1998 3:29:55PM
NULL
RETURN VALUE
Jan 1 1998 12:00:00.000000000AM
Apr 1 1998 12:00:00.000000000AM
Jun 1 1998 12:00:00.000000000AM
Dec 1 1998 12:00:00.000000000AM
NULL
以下の式は、DATE_SHIPPEDポートの各日付の日の部分を切り詰めます。
TRUNC( DATE_SHIPPED, 'D' )
TRUNC( DATE_SHIPPED, 'DD' )
TRUNC( DATE_SHIPPED, 'DDD' )
170
章 6: 関数
TRUNC( DATE_SHIPPED, 'DY' )
TRUNC( DATE_SHIPPED, 'DAY' )
DATE_SHIPPED
Jan 15 1998 2:10:30AM
Apr 19 1998 1:31:20PM
Jun 20 1998 3:50:04AM
Dec 20 1998 3:29:55PM
Dec 31 1998 11:59:59PM
NULL
RETURN
Jan 15
Apr 19
Jun 20
Dec 20
Dec 31
NULL
VALUE
1998 12:00:00.000000000AM
1998 12:00:00.000000000AM
1998 12:00:00.000000000AM
1998 12:00:00.000000000AM
1998 12:00:00.000000000AM
以下の式は、DATE_SHIPPEDポートの各日付の時の部分を切り詰めます。
TRUNC( DATE_SHIPPED, 'HH' )
TRUNC( DATE_SHIPPED, 'HH12' )
TRUNC( DATE_SHIPPED, 'HH24' )
DATE_SHIPPED
Jan 15 1998 2:10:31AM
Apr 19 1998 1:31:20PM
Jun 20 1998 3:50:04AM
Dec 20 1998 3:29:55PM
Dec 31 1998 11:59:59PM
NULL
RETURN
Jan 15
Apr 19
Jun 20
Dec 20
Dec 31
NULL
VALUE
1998 2:00:00.000000000AM
1998 1:00:00.000000000PM
1998 3:00:00.000000000AM
1998 3:00:00.000000000PM
1998 11:00:00.000000000AM
以下の式は、DATE_SHIPPEDポートの各日付の分の部分を切り詰めます。
TRUNC( DATE_SHIPPED, 'MI' )
DATE_SHIPPED
Jan 15 1998 2:10:30AM
Apr 19 1998 1:31:20PM
Jun 20 1998 3:50:04AM
Dec 20 1998 3:29:55PM
Dec 31 1998 11:59:59PM
NULL
RETURN
Jan 15
Apr 19
Jun 20
Dec 20
Dec 31
NULL
VALUE
1998 2:10:00.000000000AM
1998 1:31:00.000000000PM
1998 3:50:00.000000000AM
1998 3:29:00.000000000PM
1998 11:59:00.000000000PM
TRUNC(数値)
数値が特定の桁数になるように切り詰めます。また、TRUNCを使用して日付を切り詰めるこ
ともできます。
TRUNC(数値)
171
構文
TRUNC( numeric_value [, precision] )
引数
必須/
説明
オプシ
ョン
numeric_va
lue
必須
数値データ型。切り詰める値を渡します。数値データ
型を求める有効なトランスフォーメーション式を必要
に応じて入力できます。
precision
オプシ
ョン
正または負の整数です。整数を求める有効なトランス
フォーメーション式を必要に応じて入力できます。こ
の整数は、切り詰め後の桁数を指定します。
precisionが正の整数である場合、TRUNCはprecisionで指定された値を小数点以下の桁数
としてnumeric_value を返します。precisionが負の整数である場合、TRUNCは小数点の左
側の指定された桁数をゼロに変更します。 precision引数を省略すると、TRUNCは
numeric_valueの小数部分を切り捨てて、整数を返します。
10進数のprecision値を渡すと、Data Integration Serviceはnumeric_valueを近似値の整
数に丸めてから式を評価します。
高精度モードでマッピングを実行する場合は、切り詰めを行う前にROUND関数を使用しま
す。
例えば、以下の式を使用してQTYポートの値の切り詰めを行うとします。
TRUNC ( QTY / 15 )
QTYの値が15000000である場合は、セッションから値999999が返されます。しかし、正しい
値は1000000です。
実行時にData Integration Serviceは、式の定数部分を評価し、その後に変数部分を評価
します。
上の式で、QTYは変数値であり、(1/15)は定数値です。
QTY = 15000000の場合、この式は以下のように評価されます。
TRUNC ( 15000000 * (1/15)
TRUNC ( 15000000 * (1/15)
= TRUNC ( 15000000 * 0.0666666666666666)
= TRUNC ( 15000000 * 0.0666666666666666)
= TRUNC ( 999999.99999999)
= 999999
切り詰めの前にROUND関数を使用した場合は、式が以下のように評価されます。
TRUNC (ROUND (QTY/15, .99999999999999999999999999)).
戻り値
数値。
いずれかの引数がNULLである場合は、NULL。
注: 戻り値が15を超える精度を持つ10進値である場合は、高精度を有効にして、最大28桁
までの10進精度を使用可能にできます。
172
章 6: 関数
例
以下の式は、Priceポート内の値の切り詰めを行います。
TRUNC( PRICE, 3 )
PRICE
12.9995
-18.8652
56.9563
15.9928
NULL
RETURN VALUE
12.999
-18.865
56.956
15.992
NULL
TRUNC( PRICE, -1 )
PRICE
12.99
-187.86
56.95
1235.99
NULL
RETURN VALUE
10.0
-180.0
50.0
1230.0
NULL
TRUNC( PRICE )
PRICE
12.99
-18.99
56.95
15.99
NULL
RETURN VALUE
12.0
-18.0
56.0
15.0
NULL
UPPER
小文字の文字列を大文字に変換します。
構文
UPPER( string )
引数
必須/
説明
オプシ
ョン
文字列
必須
文字列データ型。大文字のテキストに変換したい値を渡
します。有効なトランスフォーメーション式を必要に応
じて入力できます。
戻り値
大文字の文字列。データにマルチバイト文字が含まれている場合、戻り値はData
Integration Serviceのコードページとデータ移動モードに応じて異なります。
関数にNULL値を渡した場合はNULLです。
UPPER
173
例
次の式は、FIRST_NAMEポート内のすべての名前を大文字に変換します。
UPPER( FIRST_NAME )
FIRST_NAME
Ramona
NULL
THOMAS
PierRe
Bernice
RETURN VALUE
RAMONA
NULL
THOMAS
PIERRE
BERNICE
VARIANCE
渡された値の分散を返します。VARIANCEは統計データの分析に使用されます。VARIANCEに
は他の集計関数は1つしかネストできません。また、ネストされた関数は数値データ型を返
さなければなりません。
構文
VARIANCE( numeric_value [, filter_condition ] )
引数
必須/
説明
オプシ
ョン
numeric_v
alue
必須
数値データ型。分散を計算したい値を渡します。有効な
トランスフォーメーション式を必要に応じて入力できま
す。
filter_co
ndition
オプシ
ョン
検索される行を制限します。フィルタ条件は数値である
か、TRUE、FALSE、またはNULLの値が求められなければ
なりません。有効なトランスフォーメーション式を必要
に応じて入力できます。
計算式
この関数は、次の式を使って分散を計算します。
この式では、以下のガイドラインを使用します。
¨ xiは数値の1つです。
¨ nは、数値セットの要素の数です。 nが1の場合、分散は0になります。
174
章 6: 関数
戻り値
Double値。
関数に渡された値がすべてNULLである場合、または行が1つも選択されていない場合(たと
えば、フィルタ条件の値がすべての行に対してFALSEまたはNULLであった場合)には、NULL
です。
NULL
値の1つがNULLである場合、VARIANCEはその値を無視します。ただし、関数に渡された値が
すべてNULLである場合、または行が1つも選択されていない場合、VARIANCEはNULLを返しま
す。
Group By
VARIANCEは、トランスフォーメーションで定義したGroup Byポートに基づいて値をグルー
プ分けし、各グループについて1つの結果を返します。
Group Byポートがない場合には、VARIANCEはすべての行を1つのグループとして扱い、1つ
の値を返します。
例
次の式は、TOTAL_SALESポート内のすべての行の分散を計算します。
VARIANCE( TOTAL_SALES )
TOTAL_SALES
2198.0
2256.0
3001.0
NULL
8953.0
RETURN VALUE: 10592444.6666667
VARIANCE
175
索引
数字
10進数値
変換 166
A
ABORT関数
説明 39
ABS関数
説明 40
ADD_TO_DATE関数
説明 41
Advanced Encryption Standardアルゴリズム
説明 43, 44
AES_DECRYPT関数
説明 43
AES_ENCRYPT関数
説明 44
AND
予約語 6
ASCII
ASCII値の変換 49
CHR関数 49
Unicode値への変換 50
文字をASCII値に変換 45
ASCII関数
説明 45
AVG関数
説明 46
B
bigint
値を変換 157
C
CEIL関数
説明 48
CHOOSE関数
説明 49
CHRCODE関数
説明 50
CHR関数
一重引用符の挿入 3, 49
説明 49
176
COBOL構文
Perl構文への変換 123
COMPRESS関数
説明 51
CONCAT関数
使用した一重引用符の挿入 52
説明 52
CONVERT_BASE関数
説明 53
COSH関数
説明 55
COS関数
説明 54
COUNT関数
説明 56
CRC32関数
説明 58
CUME関数
説明 58
D
Data Integration Service
比較式でのNULLの取り扱い 10
DATE_COMPARE関数
説明 60
DATE_DIFF関数
説明 61
DD_DELETE定数
更新方式の例 7
説明 7
予約語 6
DD_INSERT定数
更新方式の例 8
説明 8
予約語 6
DD_REJECT定数
更新方式の例 8
説明 8
予約語 6
DD_UPDATE定数
更新方式の例 9
説明 9
予約語 6
DEC_BASE64関数
説明 63
DECODE関数
国際化 2
説明 63
DECOMPRESS関数
説明 66
IS_SPACES関数
説明 87
E
J
ENC_BASE64関数
説明 66
ERROR関数
説明 67
デフォルト値 67
EXP関数
説明 68
J形式文字列
IS_DATEでの使用 30
TO_CHARでの使用 27
TO_DATEでの使用 30
F
FALSE定数
説明 9
予約語 6
FIRST関数
説明 69
FLOOR関数
説明 70
FLOOR関数(式)
説明 70
形式
日付から文字文字列へ 159
文字文字列から日付 163
FV関数
説明 71
G
GET_DATE_PART関数
説明 72
GREATEST関数
説明 73
L
LAST_DAY関数
説明 88
LAST関数
説明 88
LEAST関数
説明 90
LENGTH関数
空の文字列テスト 90
説明 90
:LKP参照修飾子
説明 3
予約語 6
LN関数
説明 91
LOG関数
説明 92
LOWER関数
国際化 2
説明 93
LPAD関数
説明 94
LTRIM関数
説明 96
M
I
IIF関数
国際化 2
説明 74
INDEXOF関数
説明 78
:INFA参照修飾子
予約語 6
INITCAP関数
国際化 2
説明 79
INSTR関数
説明 79
IN関数
説明 77
IS_NUMBER関数
説明 85
IS_DATE関数
形式文字列 27
説明 83
ISNULL関数
説明 82
MAKE_DATE_TIME関数
説明 97
MAX (Dates)関数
国際化 2
説明 98
MAX (numbers) 関数
説明 99
MAX (numbers)関数
国際化 2
MAX (String)関数
説明 101
:MCR参照修飾子
予約語 6
MD5関数
説明 102
MEDIAN関数
説明 103
METAPHONE
説明 104
MIN (numbers)関数
国際化 2
説明 110, 111
索引
177
MIN (Dates)関数
国際化 2
説明 109
MOD関数
説明 112
MOVINGAVG関数
説明 114
MOVINGSUM関数
説明 115
NOT
予約語 6
NPER関数
説明 116
NULL値
ISNULL 82
演算子 11
集計関数 10, 34
チェックイン 82
比較式 10
フィルタ条件 11
文字列演算子 14
論理演算子 16
NULL定数
説明 10
予約語 6
REG_EXTRACT関数
Perl構文の使用 123
説明 123
REG_MATCH関数
Perl構文の使用 123
説明 126
REG_REPLACE関数
説明 128
REPLACECHR関数
説明 129
REPLACESTR関数
説明 131
REVERSE関数
説明 134
ROUND(数値)関数
説明 138
ROUND (Dates)関数
サブ秒の処理 134
説明 134
RPAD関数
説明 139
RR形式文字列
IS_DATEでの使用 30
TO_CHARでの使用 27
TO_DATEでの使用 30
YYとRRの違い 21
説明 20
RTRIM関数
説明 141
O
S
N
OR
予約語 6
P
PERCENTILE関数
説明 117
Perl互換の正規表現構文
REG_EXTRACT関数での使用 123
REG_MATCH関数での使用 123
PMT関数
説明 119
POWER関数
説明 119
PPER関数
国際化 2
説明 173
PROC_RESULT変数
予約語 6
PV関数
説明 120
R
RAND関数
説明 121
RATE関数
説明 122
178
索引
SESSSTARTTIME変数
日付関数での使用 31
SET_DATE_PART関数
説明 142
SIGN関数
説明 144
SINH関数
説明 146
SIN関数
説明 145
SOUNDEX関数
説明 147
SPOUTPUT
予約語 6
SQL IS_CHAR関数
REG_MATCHの使用 126
SQL LIKE関数
REG_MATCHの使用 126
SQL構文
Perl構文への変換 123
SQRT関数
説明 149
SSSSS形式文字列
IS_DATEでの使用 31
TO_CHARでの使用 27
TO_DATEでの使用 31
STDDEV関数
説明 150
SUBSTR関数
説明 151
SUM関数
説明 153
SYSDATE変数
式の使用 17
説明 17
予約語 6
システム変数 17
SYSTIMESTAMP関数
説明 155
TO_DATEでの使用 31
あ
圧縮
データの圧縮 51
データの解凍 66
暗号化
Advanced Encryption Standardアルゴリズムの使用 44
AES_ENCRYPT関数 44
T
TANH関数
説明 156
TAN関数
説明 156
TO_CHAR (Dates)関数
説明 159
例 26
TO_CHAR (dates)関数
形式文字列 24
TO_DECIMAL関数
説明 166
TO_FLOAT関数
説明 167
TO_INTEGER関数
説明 167
TO_CHAR(数値)関数
説明 162
TO_DATE関数
形式文字列 27
説明 163
例 30
TRUE定数
説明 11
予約語 6
TRUNC(数値)関数
説明 171
TRUNC (Dates)関数
サブ秒の処理 169
説明 169
U
Unicode
ASCII値への変換 50
Unicode値の変換 49
文字をUnicode値に変換 45
V
VARIANCE関数
説明 174
Y
YY形式文字列
IS_DATEでの使用 31
RRとYYの違い 21
TO_CHARでの使用 27
い
一重引用符
CHR関数を使用した一重引用符の挿入 3
え
エンコード
ENC_BASE64関数 66
文字 104, 147
エンコード関数
AES_DECRYPT 43
AES_ENCRYPT 44
COMPRESS 51
CRC32 58
DEC_BASE64 63
DECOMPRESS 66
ENC_BASE64 66
MD5 102
説明 37
演算子
NULL値 11
算術演算 13
算術演算での文字列の使用 13
説明 1
比較演算子 15
比較演算での文字列の使用 15
文字列演算子 14
論理演算子 15
演算子の優先順位
式 12
お
大文字化
文字列 79, 93, 173
か
科学関数
COS 54
COSH 55
SIN 145
SINH 146
TAN 156
TANH 156
説明 38
索引
179
空の文字列
テスト 90
カレンダー
サポートされている日付タイプ 20
関数
日付 36
文字列 39
エンコード 37
科学的 38
カテゴリ 32
国際化 2
財務 37
集計 32
数値 37
説明 1
テスト 39
データークレンジング 35
特殊 38
変換 35
文字 34
き
行
数える 56
合計を返す 115
最後の行を返す 88
最初の行を返す 69
修正移動合計 58
スキップ 67
スペースの回避 87
平均を返す 114
切り詰め
数値 171
日付 169
く
グレゴリオ暦
日付関数 20
け
形式文字列
IS_DATE関数 27
TO_CHAR関数 24
TO_DATE関数 27
一致 30
修正ユリウス日 24, 27
定義 19
日付 23
ユリウス日 24, 27
ケース
大文字に変換 173
こ
合計
返す 115, 153
180
索引
更新方式
DD_DELETEの例 7
DD_INSERTの例 8
DD_REJECTの例 8
DD_UPDATEの例 9
高精度
ABS 40
ABS関数 40
AVG 46
AVG関数 46
CEIL 48
CUME 58
CUME関数 58
EXP 68
LOG 92
MAX (numbers) 99
MAX関数 99
MEDIAN 103
MEDIAN関数 103
MIN (numbers) 110
MIN関数 110
MOD 112
MOVINGAVG 114
MOVINGAVG関数 114
MOVINGSUM 115
MOVINGSUM関数 115
PERCENTILE 117
PERCENTILE関数 117
POWER 119
ROUND関数 138
ROUND(数値) 138
SIGN 144
SIN 145
STDDEV関数 150
SUM 153
SUM関数 153
TO_DECIMAL関数 166
TRUNC関数 171
算術演算子 13
構文
一般的なルール 4
式 3
ポート 3
戻り値 3
国際化
影響のある関数 2
ソート順 2
無効な式 2
コメント
式への追加 5
さ
最小
値、戻り 109
財務関数
FV関数 71
NPER関数 116
PMT関数 119
PV関数 120
RATE関数 122
説明 37
サブ秒
ROUND (Dates)関数での処理 134
TRUNC (Dates)関数での処理 169
算術演算
日付/時刻値 31
算術演算子
式での文字列の使用 13
説明 13
データー変換に使用 13
参照修飾子
説明 3
し
式
演算子の使用 12
概要 1
構文 3
コメントの追加 5
条件 9
指数値
返す 119
計算 68
修正移動合計
返す 58
集計関数
AVG 46
COUNT 56
FIRST 69
LAST 88
MAX (Dates) 98
MAX (numbers) 99
MAX (String) 101
MEDIAN 103
MIN (dates) 109
MIN (numbers) 110, 111
NULL値 10, 34
PERCENTILE 117
STDDEV 150
SUM 153
VARIANCE 174
説明 32
修正ユリウス日
形式文字列 24, 27
除算
余りを返す 112
す
数値
SIGN 144
切り詰め 171
最小値を返す 110
正弦を返す 145
正接を返す 156
絶対値を返す 40
双曲正弦を返す 146
双曲正接を返す 156
双曲余弦を返す 55
対数を返す 91, 92
テキスト文字列への変換 162
標準偏差を返す 150
平方根を返す 149
丸め処理 138
余弦を返す 54
数値関数
ABS 40
CEIL 48
CONVERT_BASE 53
CUME 58
EXP 68
FLOOR 70
LN 91
LOG 92
MOD 112
MOVINGAVG 114
MOVINGSUM 115
POWER 119
RAND 121
ROUND(数値) 138
SIGN 144
SQRT 149
TRUNC(数値) 171
説明 37
スキップ
行 67
スペース
DD_REJECTでの削除 8
行での回避 87
せ
正弦
返す 145, 146
正接
返す 156
正の値
SIGN 144
西暦2000年
日付 20
絶対値
取得 40
そ
双曲
正弦関数 146
双曲関数 156
余弦関数 55
ソート順
国際化 2
た
対数
返す 91, 92
つ
月
最終日を返す 88
索引
181
て
ひ
定数
DD_INSERT 8
DD_REJECT 8
DD_UPDATE 9
FALSE 9
NULL 10
TRUE 11
説明 1
テキスト文字列
数値の変換 162
デコード
DEC_BASE64関数 63
テスト関数
IS_DATE 83
IS_NUMBER 85
IS_SPACES 87
ISNULL 82
説明 39
データ型
日付/時刻 19
データークレンジング関数
説明 35
データクレンジング関数
GREATEST 73
IN 77
LEAST 90
デフォルト値
ERROR関数 67
デフォルトの日時形式
設定 22
比較演算子
式での文字列の使用 15
説明 15
日付
概要 19
関数 36
切り詰め 169
形式文字列 23
算術演算の実行 31
修正ユリウス 20
西暦2000年 20
デフォルトの日時形式 22
フラットファイル 22
丸め処理 134
文字文字列への変換 159
ユリウス 20
リレーショナルデーターベース 22
日付関数
ADD_TO_DATE 41
DATE_COMPARE 60
DATE_DIFF 61
GET_DATE_PART 72
LAST_DAY 88
MAKE_DATE_TIME 97
MAX (Dates) 98
MIN (dates) 109
ROUND 134
SET_DATE_PART 142
SYSTIMESTAMP 155
TRUNC (Dates) 169
日付/時刻値
追加 41
標準偏差
返す 150
ビルトイン変数
説明 17
と
特殊関数
ABORT 39
DECODE 63
ERROR 67
IIF 74
説明 38
トランスフォーメーション言語
SQLとの比較 3
演算子 12
予約語 6
トランスフォーメーション言語のアップデート
比較式 10
ブール式 10
トランスフォーメーション言語の構成要素
概要 1
トランスフォーメーション式
NULL制約 10
概要 1
ね
ネストした式
演算子 12
ふ
フィルタトランスフォーメーション
ISNULL関数の使用 82
フィルタ条件
NULL値 11
集計関数 34
復号化
AES_DECRYPT関数 43
複数検索
TRUE定数の例 11
負の値
SIGN 144
プライマリキー制約
NULL値 10
フラットファイル
日付 22
へ
平均
返す 114
182
索引
決定のための集計関数 46
平方根
返す 149
変換
日付文字列 20
変換関数
TO_CHAR (dates) 159
TO_DATE 163
TO_DECIMAL 166
TO_FLOAT 167
TO_INTEGER 167
TO_CHAR(数値) 162
説明 35
変数
SYSDATE 17
ビルトイン変数 17
ほ
ポート
構文 3
ま
マッピングパラメータ
定義 1
マッピング変数
ビルトイン変数 17
丸め処理
数値 138
日付 134
も
文字
1つの置換 129
ASCII文字 45, 49
Unicode文字 45, 49, 50
エンコード 104, 147
大文字化 79, 93, 173
数える 151
数値を返す 90
複数の置換 131
文字列からの削除 96, 141
文字列への追加 94, 139
文字関数
ASCII 45
CHR 49
CHRCODE 50
CONCAT関数 52
INITCAP 79
INSTR 79
LENGTH 90
LOWER 93
LPAD 94
LTRIM 96
METAPHONE 104
REG_EXTRACT 123
REG_MATCH 126
REG_REPLACE 128
REPLACECHR 129
REPLACESTR 131
RPAD 139
RTRIM 141
SOUNDEX 147
SUBSTR 151
UPPER 173
リスト 34
文字列
1文字の置換 129
一部を返す 151
大文字化 79, 93, 173
空白と文字の削除 141
空白の削除 96
空白の追加 94
数値からテキスト文字列への変換 162
長さの変換 139
日付から文字への変換 159
複数文字の置換 131
文字数 90
文字セット 79
文字の削除 96
文字の追加 94
文字文字列への変換 163
連結 14, 52
文字文字列
日付からの変換 159
日付への変換 163
文字列演算子
説明 14
文字列関数
CHOOSE 49
INDEXOF 78
REVERSE 134
説明 39
文字列値
最大値を返す 101
最小値を返す 111
文字列変換
日付 20
文字列リテラル
一重引用符 49, 52
一重引用符の要件 3
文字列リテラルの一重引用符
CHR関数 49
CHR関数とCONCAT関数の使用 52
戻り値
構文 3
説明 1
ゆ
ユリウス日
形式文字列 24, 27
日付関数 20
よ
余弦
計算 54
双曲余弦の計算 55
予約語
リスト 6
索引
183
り
ろ
リテラル
一重引用符 49, 52
一重引用符の要件 3
リレーショナルデーターベース
日付 22
ローカル変数
説明 1
論理演算子
説明 15
れ
連結
文字列 14, 52
184
索引
Fly UP