ACCESSDATA コマンド
さまざまな ODBC 準拠データ ソースからデータをインポートします。
64 ビットと 32 ビットのどちらの ODBC ドライバーを使用するかによって、このコマンドは ACCESSDATA64 または ACCESSDATA32 という形を取ります。
構文
{ACCESSDATA64 | ACCESSDATA32} {CONNECTOR | ODBC {"Driver"|"Dsn"|"File"}} NAME 値 <USER ユーザー ID> <PASSWORD 数値 | PROMPT_PASSWORD> TO テーブル名 CHARMAX 最大フィールド長 MEMOMAX 最大フィールド長 ALLCHARACTER SOURCE (接続設定) <HASH(ソルト値, フィールド)> SQL_QUERY (SQL 構文) END_QUERY
パラメーター
名前 | 説明 |
---|---|
CONNECTOR | ODBC {"Driver"|"Dsn"|"File"} |
行いたい ODBC 接続の種類。
|
NAME 値 |
Analytics データ コネクター、ODBC ドライバー、または DSN の名前。 例:
|
USER ユーザーID 省略可能 |
ユーザー ID が必要なデータ ソースのユーザー ID。 |
PASSWORD 数値 | PROMPT_PASSWORD 省略可能 |
パスワードが必要なデータソース:
PASSWORD 数値を使用する場合は、以前に作成したパスワード定義を指定する必要があります。 詳細については、PASSWORD コマンドと SET コマンドを参照してください。 ヒント PASSWORD コマンドを PASSWORD パラメーターnum とともに使用すると、PROMPT_PASSWORD の使用と同様の結果になります。 両方のアプローチでユーザーにパスワードを要求します。 PROMPT_PASSWORD にはユーザー ID を変更できるという利点があります。 |
TO テーブル名 |
コマンドの結果を送信する場所:
|
CHARMAX 最大フィールド長 |
インポートしているソースの文字データから発生する Analytics テーブルの任意のフィールドの文字の最大長。 デフォルト値は 50 です。 最大フィールド長を超えるデータは、Analytics にインポートすると切り捨てられます。 |
MEMOMAX 最大フィールド長 |
インポートするテキスト、ノート、またはメモ フィールドの文字の最大長。 デフォルト値は 100 です。 最大フィールド長を超えるデータは、Analytics にインポートすると切り捨てられます。 |
ALLCHARACTER 省略可能 |
インポートされたすべてのフィールドには、自動的に文字のデータ型が割り当てられます。 Analytics にインポートされたデータのフィールドには、数値や日付時刻などのさまざまなデータ型を割り当て、書式の詳細を指定することができます。 ヒント ALLCHARACTER は、数値 ID 値を含むテーブルをインポートする際に有効な場合があります。 ALLCHARACTER を使用すると、Analytics は自動的に数値データ型を、文字データ型を使用すべき値に割り当てることができません。 |
SOURCE 接続設定 |
データ ソースへの接続に必要な接続設定(接続文字列)。 |
HASH(salt 値, フィールド) 省略可能 |
暗号ハッシュ値として指定されたフィールドをインポートします。 ハッシュ値は単方向の変換であり、フィールドのインポート後に復号化できません。
HASH("QZ3x7", "SSN_NO, CC_NO, Last_Name") ACLScript でのハッシュ値のインポート中におけるハッシュ値の比較については、ACCESSDATA でハッシュ化されたデータを ACLScript HASH( ) 関数でハッシュ化されたデータと比較するを参照してください。 |
SQL_QUERY (SQL構文) END_QUERY |
SQL のインポート文。 丸括弧内はすべて SQL クエリの構成要素のため有効な SQL である必要があります。 |
例
ネイティブの Analytics データ コネクターを使用してデータをインポートする
Amazon Redshift クラウド データ サービスからのデータをインポートする必要があるとします。 そうするには、Analytics Amazon Redshift データ コネクターを使用します。
ACCESSDATA64 CONNECTOR NAME "Amazon Redshift" USER "ACL_user" PROMPT_PASSWORD TO "Entitlement_History.FIL" CHARMAX 50 MEMOMAX 100 SOURCE( boolsaschar=0;cachesize=100;database=usage;declarefetchmode=0;maxbytea=255;maxlongvarchar=8190;maxvarchar=255;port=5439;servername=acl_test.highbond.com;singlerowmode=1;sslmode=require;textaslongvarchar=0;usemultiplestatments=0;useunicode=1) SQL_QUERY( SELECT "entitlement_history"."organization" AS "organization", "entitlement_history"."user_email" AS "user_email", "entitlement_history"."plan_id" AS "plan_id", "entitlement_history"."date_from" AS "date_from", "entitlement_history"."date_to" AS "date_to" FROM "prm"."entitlement_history" "entitlement_history" ) END_QUERY
Windows ODBC ドライバーを使用してデータをインポートする
Microsoft Access データベースからデータをインポートする必要があるとします。 インポートを行うには、Windows ODBC ドライバーを使用して MS Access に接続します。
ACCESSDATA32 ODBC "Driver" NAME "Microsoft Access Driver (*.mdb)" TO "Invoices.FIL" CHARMAX 50 MEMOMAX 100 SOURCE( dbq=C:\Users\lachlan_murray\Documents\ACL Data\Sample Data Files\Sample.mdb;defaultdir=C:\Users\lachlan_murray\Documents\ACL Data\Sample Data Files;driverid=281;fil=MS Access;maxbuffersize=2048;maxscanrows=8;pagetimeout=5;safetransactions=0;threads=3;usercommitsync=Yes) SQL_QUERY( SELECT `Customer`.`CustID` AS `CustID`, `Customer`.`Company` AS `Company`, `Customer`.`Address` AS `Address`, `Customer`.`City` AS `City`, `Customer`.`Region` AS `Region`, `Customer`.`PostalCode` AS `PostalCode`, `Customer`.`Country` AS `Country`, `Customer`.`Phone` AS `Phone`, `Orders`.`OrderID` AS `OrderID`, `Orders`.`CustID` AS `Orders_CustID`, `Orders`.`ProdID` AS `ProdID`, `Orders`.`OrderDate` AS `OrderDate`, `Orders`.`Quantity` AS `Quantity`, `Product`.`ProdID` AS `Product_ProdID`, `Product`.`ProdName` AS `ProdName`, `Product`.`UnitPrice` AS `UnitPrice`, `Product`.`Descript` AS `Descript`, `Product`.`ShipWt` AS `ShipWt` FROM (`Customer` `Customer` INNER JOIN `Orders` `Orders` ON `Customer`.`CustID` = `Orders`.`CustID` ) INNER JOIN `Product` `Product` ON `Orders`.`ProdID` = `Product`.`ProdID` WHERE ( `Customer`.`Region` = 'BC' OR `Customer`.`Region` = 'WA' ) ) END_QUERY
Windows DSN(データソース名)を使用してデータをインポートする
Microsoft Excel ファイルからデータをインポートする必要があるとします。 インポートを行うには、Windows DSN を使用して Excel に接続します。
ACCESSDATA32 ODBC "Dsn" NAME "Excel Files" TO "Trans_April_15_cutoff.FIL" CHARMAX 50 MEMOMAX 100 SOURCE( dbq=C:\Users\lachlan_murray\Documents\ACL Data\Sample Data Files\Trans_April.xls;defaultdir=C:\Users\lachlan_murray\Documents\ACL Data\Sample Data Files;driverid=1046;maxbuffersize=2048;pagetimeout=5) SQL_QUERY( SELECT `Trans_Apr_`.`CARDNUM` AS `CARDNUM`, `Trans_Apr_`.`AMOUNT` AS `AMOUNT`, `Trans_Apr_`.`TRANS_DATE` AS `TRANS_DATE`, `Trans_Apr_`.`CODES` AS `CODES`, `Trans_Apr_`.`CUSTNO` AS `CUSTNO`, `Trans_Apr_`.`DESCRIPTION` AS `DESCRIPTION` FROM `Trans_Apr$` `Trans_Apr_` WHERE ( `Trans_Apr_`.`TRANS_DATE` <= {ts '2003-04-15 00:00:00'} ) ) END_QUERY
備考
メモ
このコマンドの動作の詳細については、Analytics のヘルプを参照してください。
データ コネクターの更新
Analytic、ロボット エージェント、または AX Server をアップグレードする場合は、いずれかの Analytics データ コネクターを使ってデータをインポートするスクリプト(ACCESSDATA コマンド)をテストする必要があります。
データ ソースまたは ODBC ドライバーのサード パーティ ベンダーが加えた変更により、1 つまたは複数のデータ コネクターを更新しなければならない可能性があります。 スクリプトに作り込んだデータ接続を引き続き正常に動作させるには、それを更新する必要があります。
- インポートの再実行 接続機能を最も簡単に更新する方法は、更新されたバージョンの Analytics のデータ アクセス ウィンドウを使って、インポートを手動で実行することです。 ログに記録されている ACCESSDATA コマンドをコピーし、それを使ってスクリプトを更新します。
メモ
データ ソースに接続してインポートを再実行する前に、コネクターのキャッシュを消去することで、既存の一連のテーブル名を削除します。
データ アクセス ウィンドウの[既存の接続]タブで、接続名の横にある[
>キャッシュの消去]を選択します。
- フィールド指定の更新 データ ソースまたは ODBC ドライバーのテーブル スキーマの変更と一致するように、スクリプト本体内のフィールド指定を更新しなければならない場合もあります。 必要に応じてフィールド名、フィールドのデータ型、およびフィールド長とレコード長を変更します。
- フィルター処理の結果の確認 データ インポートの一環として適用したフィルター処理の結果も確認する必要があります。 インポートのフィルター処理によってレコードを正しく追加または除外できたかどうかを確認します。
ODBC 接続設定と SQL インポート文の作成
ODBC 接続設定と SQL インポート文は例に示すように通常、きわめて長く複雑です。
ACCESSDATA コマンドのこれらの部分を最も簡単に作成するには、まず Analytics の Data Access ウィンドウを使ってターゲットのデータ ソースに接続してからデータをインポートします。 次に、ログから、接続設定やインポート文など ACCESSDATA コマンド全体をコピーし、必要に応じてこのコマンドをカスタマイズします。
抑制されるパスワード値
Analytics のデータ アクセス ウィンドウを使用して ACCESSDATA コマンドを実行し、パスワードを入力すると、パスワード値はログに記録されません。 PROMPT_PASSWORD パラメーターが代用されます。
ACCESSDATA ログ ファイル
2 つのログ ファイルは ACCESSDATA コマンドに関連付けられたトランザクションを記録し、データ接続が失敗した場合にトラブルシューティングで使用できます。
- ServerDataAccess.log はデータをインポートする前のすべての作業とエラーを記録します
場所:C:\Users\<ユーザー アカウント>\AppData\Local\ACL\ACL for Windows\Data Access\ServerDataAccess.log
メモ
ServerDataAccess.log の "Server" は Analytics がインストールされているコンピューターでローカルに実行されている Analytics のデータ アクセス コンポーネントを参照します。
- DataAccess.log には、インポート操作に関する情報と、
場所 ..\<Analytics プロジェクト フォルダー>\DataAccess.log
にインポートしようとしているデータが含まれる Analytics プロジェクトに関する情報が記録されます。
ACCESSDATA でハッシュ化されたデータを ACLScript HASH( ) 関数でハッシュ化されたデータと比較する
ハッシュ データの未加工値を読み取れない場合でも、データの結合または分析時に役立ちます。
インポート中に ACCESSDATA でハッシュ化された値を、ACLScript の HASH( ) 関数を使用してハッシュ化された値と比較する場合は、Analytics の数値または日付時刻フィールドを文字値に変換し、データをハッシュ化する前に前後のスペースを切り取る必要があります。
文字に変換するときには、日付時刻フィールドは次の形式を使用する必要があります。
- 日付時刻 "YYYY-MM-DD hh:mm:ss"
- 日付 "YYYY-MM-DD"
- 時刻 "hh:mm:ss"
次の例は、STRING( ) および ALLTRIM( ) 関数を使用して、ACLScript's HASH( ) 関数を使用して値をハッシュ化する前に、数値のクレジットカード番号フィールドをを文字データに変換します。
COMMENT ACL HASH 関数は、データのインポート後に使用されます HASH(ALLTRIM(STRING(CC_No, 16)), "QZ3x7")
Analytics 値をハッシュ化すると、ACCESSDATA コマンド インポートの一部としてハッシュ化された値を比較できます。