ACCESSDATA コマンド
コンセプト情報
さまざまな ODBC 準拠データ ソースからデータをインポートします。
64 ビットと 32 ビットのどちらの ODBC ドライバーを使用するかによって、このコマンドは ACCESSDATA64 または ACCESSDATA32 という形を取ります。
構文
{ACCESSDATA64 | ACCESSDATA32} {CONNECTOR | ODBC {"Driver"|"Dsn"|"File"}} NAME 値 <USER ユーザー ID> <PASSWORD num | PROMPT_PASSWORD> <PASSWORD 数値 AS パスワード キー名 <...n>> 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 省略可能 |
単一のパスワードが必要なデータソース:
詳細については、ACCESSDATA でパスワード定義を使用するを参照してください。 抑制されるパスワード値 Analytics のデータ アクセス ウィンドウを使用して ACCESSDATA コマンドを実行し、パスワードを入力すると、パスワード値はログに記録されません。PROMPT_PASSWORD パラメーターが代用されます。 PASSWORD コマンドを PASSWORD 数値 とともに使用すると、PROMPT_PASSWORD の使用と同様の結果になります。両方のアプローチでユーザーにパスワードを要求します。PROMPT_PASSWORD にはユーザー ID を変更できるという利点があります。 |
PASSWORD 数値 AS パスワード キー名 <...n> 省略可能 |
複数のパスワードが必要なデータソースで使用するパスワード定義。 パスワード キー名は、SOURCE で指定された接続設定に表示されるように正確にパスワード キー名を複製する必要があります。 詳細については、ACCESSDATA でパスワード定義を使用するを参照してください。 |
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 である必要があります。 メモ SQL インポート文の本文では、ACLScript 構文(コマンドまたは関数)を使用できません。有効な 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
備考
このコマンドの動作の詳細については、データ アクセス ウィンドウの作業を参照してください。
ACCESSDATA でパスワード定義を使用する
一般的に、ACCESSDATA コマンドで接続するデータソースでは、パスワード、トークン、または他のシークレット認証値を使用した認証が必要です。一部のデータソースでは、複数の認証値が必要です。
ACCESSDATA コマンドの一部として、複数のパスワード定義を指定してこの認証を提供できます。パスワード定義はパスワードや認証値自体ではありません。どちらかというと、パスワード変数のようなものであり、以前に入力されたパスワードや認証値を安全に保存します。ACCESSDATA コマンドでパスワード定義を指定すると、SOURCE で指定された接続設定で、実際のパスワードをクリアテキストに表示しないようにすることができます。
パスワード定義の作成
インポート スクリプトでは、パスワード定義を作成した後に、ACCESSDATA コマンドで定義を使用できます。
Analytics で使用するパスワード定義の作成については、PASSWORD コマンドを参照してください。
ロボット、Analytics Exchange、分析アプリ ウィンドウで使用するパスワード定義の作成については、PASSWORD タグを参照してください。
パスワード定義を指定する 2 つのオプション
ACCESSDATA でパスワード定義を指定するときには 2 つのオプションがあります。
- PASSWORD数値単一のパスワードが必要なデータ ソースに対して、単一のパスワード定義を指定します。
- PASSWORD 数値 AS パスワード キー名 繰り返し使用して、複数の認証値が必要なデータソースで複数のパスワード定義を指定できます。
メモ
オプションは 1 つずつ使用することも、2 つまとめて使用することもできます。
PASSWORD 数値の仕組み
データソースで単一のパスワードが必要な場合にのみ、PASSWORD 数値パラメーターを使用します。
以下の例:
- PASSWORD 1 コマンドはパスワードを入力するようにユーザーに指示し、入力されたパスワードを安全に保存するパスワード定義を作成します。
- ACCESSDATA コマンドでは、PASSWORD 1 パラメーターがパスワード定義を参照し、保存されたパスワード値を SOURCE(auth_accesstoken=[$pwd] )で指定された接続設定に安全に渡します。
PASSWORD 1 ACCESSDATA64 CONNECTOR NAME "Concur" PASSWORD 1 TO "Concur_data_import.FIL" CHARMAX 50 MEMOMAX 100 SOURCE( auth_accesstoken=[$pwd];auth_type=OAuth 2.0;enabledoublebuffer=1;host=www.concursolutions.com;useencryptedendpoints=1;userparam=all) SQL_QUERY( SELECT "List_Items"."Level_7_Code" AS "Level_7_Code", "List_Items"."Name" AS "Name", "List_Items"."Level_10_Code" AS "Level_10_Code", "List_Items"."Level_8_Code" AS "Level_8_Code", "List_Items"."URI" AS "URI", "List_Items"."Id" AS "Id", "List_Items"."Level_3_Code" AS "Level_3_Code", "List_Items"."List_Id" AS "List_Id", "List_Items"."Level_4_Code" AS "Level_4_Code", "List_Items"."Level_1_Code" AS "Level_1_Code", "List_Items"."Parent_Id" AS "Parent_Id", "List_Items"."Level_2_Code" AS "Level_2_Code", "List_Items"."Level_5_Code" AS "Level_5_Code", "List_Items"."Level_6_Code" AS "Level_6_Code", "List_Items"."Level_9_Code" AS "Level_9_Code" FROM "Concur"."List_Items" "List_Items" ) END_QUERY
PASSWORD 数値 AS パスワード キー名の仕組み
データソースで複数のパスワードまたは認証値が必要な場合は、PASSWORD 数値 AS パスワード キー名パラメーターを使用します。
以下の例:
- ロボットまたは Analytics Exchange では、アナリティクス ヘッダーの //PASSWORD タブは、ユーザーが認証値を入力する必要がある 4 つのパスワード パラメーターを作成します。4 つのパラメーターは、入力された値を安全に保存する 4 つのパスワード定義を作成します。
- ACCESSDATA コマンドでは、4 つの PASSWORD パラメーターがパスワード定義を参照し、保存された認証値を SOURCE で指定された接続設定に安全に渡します。
- oauthclientid=
- oauthclientsecret=
- oauthaccesstoken=
- OAuthAccessTokenSecret
詳細については、複数のパスワード定義で動作するように ACCESSDATA を構成するを参照してください。
COMMENT //ANALYTIC TYPE IMPORT Twitter データをインポート //PASSWORD 1 OAuth クライアント ID を入力: //PASSWORD 2 OAuth クライアント シークレットを入力: //PASSWORD 3 OAuth アクセス トークンを入力: //PASSWORD 3 OAuth アクセス トークン シークレットを入力: //RESULT TABLE Twitter_user_data END ACCESSDATA64 CONNECTOR NAME "Twitter" PASSWORD 1 AS oauthclientid PASSWORD 2 AS oauthclientsecret PASSWORD 3 AS oauthaccesstoken PASSWORD 4 AS oauthaccesstokensecret TO "Twitter_user_data.FIL" CHARMAX 50 MEMOMAX 100 SOURCE( oauthclientid=;oauthclientsecret=;oauthaccesstoken=;oauthaccesstokensecret=;readonly=true;drivertype=ACL Connector for Twitter;connectonopen=true;convertdatetimetogmt=true;limitkeysize=255;maptolongvarchar=-1;maptowvarchar=true;uppercaseidentifiers=false;supportenhancedsql=true;proxyauthscheme=BASIC;proxyautodetect=true;_persist_=encrypted-dp{AQA ... kX3E8yyh05HoG1rH4bm1lhwudUQ==}}) SQL_QUERY( SELECT "Users"."ID" AS "ID", "Users"."Name" AS "Name", "Users"."Screen_Name" AS "Screen_Name", "Users"."Location" AS "Location", "Users"."Profile_URL" AS "Profile_URL", "Users"."Lang" AS "Lang", "Users"."Created_At" AS "Created_At", "Users"."Friends_Count" AS "Friends_Count", "Users"."Followers_Count" AS "Followers_Count", "Users"."Favourites_Count" AS "Favourites_Count", "Users"."Statuses_Count" AS "Statuses_Count", "Users"."Time_Zone" AS "Time_Zone", "Users"."Following" AS "Following", "Users"."Contributors_Enabled" AS "Contributors_Enabled", "Users"."Follow_Request_Sent" AS "Follow_Request_Sent", "Users"."Listed_Count" AS "Listed_Count", "Users"."Description" AS "Description", "Users"."Default_Profile" AS "Default_Profile" FROM "Twitter"."Users" "Users" ) END_QUERY
複数のパスワード定義で動作するように ACCESSDATA を構成する
複数のパスワード定義で動作するように ACCESSDATA コマンドを構成するには、コマンドに PASSWORD パラメーターを挿入し、SOURCE パラメーターのパスワード キー名を PASSWORD パラメーターにコピーします。
- Analytics でデータ アクセス ウィンドウを使用して、複数の認証値が必要なデータソースからデータをインポートします。
- ログの ACCESSDATA コマンドをスクリプト エディターで開いているスクリプトにコピーします。
一般的に、1 つの認証値のみが SOURCE パラメーターでマスク([$pwd])されます。追加の値はクリアテキストで表示されます。例:
SOURCE( oauthclientid=cXQ ... dR4;oauthclientsecret=QUt ... beo;oauthaccesstoken=913 ... cPn;oauthaccesstokensecret=[$pwd]; ... )
- SOURCE パラメーターからクリアテキスト認証値を削除し、パスワード キー名と等号のみを残します。
例:
SOURCE( oauthclientid=;oauthclientsecret=;oauthaccesstoken=;oauthaccesstokensecret=[$pwd]; ... )
メモ
認証値は、PASSWORD コマンドまたは PASSWORD アナリティクス タグで作成されたパスワード定義を使用してユーザーが指定する必要があります。詳細については、パスワード定義の作成を参照してください。
- 省略可能。マスクされた認証値の 1 つのパスワード キー名から [$pwd] を削除します。
このパスワード キー名では、2 つの方法のいずれかを使用して、ACCESSDATA コマンドでパスワード定義を指定できます。詳細については、パスワード定義を指定する 2 つのオプションを参照してください。
- PROMPT_PASSWORD パラメーターを ACCESSDATA コマンドから削除します。
- PROMPT_PASSWORD を削除した場所に PASSWORD パラメーターを挿入し、SOURCE パラメーターのパスワード キー名をコピーして PASSWORD パラメーターに貼り付けます。
例:
ACCESSDATA64 CONNECTOR NAME "Twitter" PASSWORD 1 AS oauthclientid PASSWORD 2 AS oauthclientsecret PASSWORD 3 AS oauthaccesstoken PASSWORD 4 AS oauthaccesstokensecret ... SOURCE( oauthclientid=;oauthclientsecret=;oauthaccesstoken=;oauthaccesstokensecret=; ... )
重要
パスワード キー名は、SOURCE パラメーターと PASSWORD パラメーターで同じでなければなりません。異なる場合、ACCESSDATA コマンドが失敗します。
- マスクされた認証値のパスワード キー名から [$pwd] を削除しなかった場合、単一のパスワード定義を指定する方法を使用します。
例:
ACCESSDATA64 CONNECTOR NAME "Twitter" PASSWORD 1 AS oauthclientid PASSWORD 2 AS oauthclientsecret PASSWORD 3 AS oauthaccesstoken PASSWORD 4 ... SOURCE( oauthclientid=;oauthclientsecret=;oauthaccesstoken=;oauthaccesstokensecret=[$pwd]; ... )
結果 ACCESSDATA コマンドと個別に作成されたパスワード定義をインポート スクリプトで使用できます。SOURCE 接続設定にはクリアテキストの認証値は表示されません。
多要素認証は適切ではありません
多要素認証(MFA)が必要データソースにアクセスするには、ACCESSDATA コマンドを使用することはできません。スクリプトはこの方法で認証することができません。MFA で保護されたデータにアクセスする必要がある場合は、MFA が必要ではない汎用作業者アカウントの使用が組織で許可されているかどうかを確認してください。
データ コネクターの更新
Analytic、ロボット エージェント、または AX Server をアップグレードする場合は、いずれかの Analytics データ コネクターを使ってデータをインポートするスクリプト(ACCESSDATA コマンド)をテストする必要があります。
データ ソースまたは ODBC ドライバーのサード パーティ ベンダーが加えた変更により、1 つまたは複数のデータ コネクターを更新しなければならない可能性があります。スクリプトに作り込んだデータ接続を引き続き正常に動作させるには、それを更新する必要があります。
- インポートの再実行 接続機能を最も簡単に更新する方法は、更新されたバージョンの Analytics のデータ アクセス ウィンドウを使って、インポートを手動で実行することです。ログに記録されている ACCESSDATA コマンドをコピーし、それを使ってスクリプトを更新します。
メモ
データ ソースに接続してインポートを再実行する前に、コネクターのキャッシュを消去することで、既存の一連のテーブル名を削除します。
データ アクセス ウィンドウの[既存の接続]タブで、接続名の横にある[
>キャッシュの消去]を選択します。
- フィールド指定の更新 データ ソースまたは ODBC ドライバーのテーブル スキーマの変更と一致するように、スクリプト本体内のフィールド指定を更新しなければならない場合もあります。必要に応じてフィールド名、フィールドのデータ型、およびフィールド長とレコード長を変更します。
- フィルター処理の結果の確認 データ インポートの一環として適用したフィルター処理の結果も確認する必要があります。インポートのフィルター処理によってレコードを正しく追加または除外できたかどうかを確認します。
ODBC 接続設定と SQL インポート文の作成
ODBC 接続設定と SQL インポート文は例に示すように通常、きわめて長く複雑です。
ACCESSDATA コマンドのこれらの部分を最も簡単に作成するには、まず Analytics の Data Access ウィンドウを使ってターゲットのデータ ソースに接続してからデータをインポートします。次に、ログから、接続設定やインポート文など ACCESSDATA コマンド全体をコピーし、必要に応じてこのコマンドをカスタマイズします。
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 コマンド インポートの一部としてハッシュ化された値を比較できます。