2

Salesforce.com を SQL Server と統合するために DBAmp を使用し (基本的にはリンク サーバーを追加します)、OPENQUERY を使用して SF データに対してクエリを実行しています。

商談に対してレポートを作成しようとしていますが、商談の作成日を商談所有者の現地日時 (つまり、ユーザーが Salesforce で表示する日時) で返したいと考えています。

私たちの dbamp 構成は、日付を強制的に UTC にします。

参考になるかもしれない日付関数 (Salesforce のドキュメント) を偶然見つけましたが、使用しようとするとエラーが発生するため、それを証明できません。convertTimezone 関数の使用例を以下に示します。

SELECT HOUR_IN_DAY(convertTimezone(CreatedDate)), SUM(Amount)
FROM Opportunity
GROUP BY HOUR_IN_DAY(convertTimezone(CreatedDate))

以下は、返されたエラーです。

リンク サーバー "SALESFORCE" の OLE DB プロバイダー "DBAmp.DBAmp" は、メッセージ "エラー 13005: SQL ステートメントの変換エラー: 行 1:37: "from" を期待していますが、"(" が見つかりました。
メッセージ 7350、レベル 16、状態 2、行 1
リンク サーバー "SALESFORCE" の OLE DB プロバイダー "DBAmp.DBAmp" から列情報を取得できません。

以下のように OPENQUERY で SOQL 関数を使用することはできませんか?

SELECT
    *
FROM
    OPENQUERY(SALESFORCE,'
        SELECT HOUR_IN_DAY(convertTimezone(CreatedDate)), SUM(Amount) 
        FROM Opportunity 
        GROUP BY HOUR_IN_DAY(convertTimezone(CreatedDate))')

アップデート:

Bill Emerson と連絡を取りました (彼は DBAmp Integration Tool の作成者だと思います)。

SOQL 関数を使用できるはずなので、解析に失敗する理由がわかりません。テストケースをセットアップして報告します。

返事が来たらまた記事を更新します。ありがとう

4

2 に答える 2

1

DBAmp (2.14.4) の新しいバージョンがリリースされ、openquery での ConvertTimezone の使用に関する問題が修正されました。

バージョン 2.14.4

  • メモリ使用率を向上させるために変更されたコード
  • API 24.0 (SPRING 12) のサポートを追加
  • 文字列リテラルに疑問符が埋め込まれていた問題を修正
  • openquery での ConvertTimezone の使用に関する問題を修正しました
  • openquery で集計関数を使用する場合の「無効な数値」の問題を修正しました
于 2012-02-20T16:22:56.123 に答える
0

DBAmp は SOQL ではなく SQL を使用するため、SOQL 関数を使用できないことは確かです。申し訳ありません。

このデータを別の方法で公開する必要があります。おそらく、Salesforce レポートWeb サービス、または (DBAmp) SQL Server へのアクセスに使用しているプログラムを介してデータをコンパイルすることで可能です。

Salesforce Web サービスを作成する場合は、次のが役立つ場合があります。

global class MyWebService 
{
    webservice static AggregateResult MyWebServiceMethod() 
    {
        AggregateResult ar = [
            SELECT 
                HOUR_IN_DAY(convertTimezone(CreatedDate)) Hour, 
                SUM(Amount) Amount 
            FROM Opportunity 
            GROUP BY HOUR_IN_DAY(convertTimezone(CreatedDate))];

        system.debug(ar);
        return ar;
    }
}
于 2012-02-13T16:28:16.703 に答える