Comments
Description
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 索引