2015-01-13 27 views
0

首先,我需要将数据从Magento导出到JSON或CSV。然后需要将这些数据导入Mixpanel。 Mixpanel提供演示(见下文)。班级和其他一切似乎都很好,但是我很难从Magento获得实际的数据。我尝试了很多脚本等,但无法工作。有任何想法吗?Magento数据导出到JSON然后导入到Mixpanel

<?php 
/* 
Example script that will import $born events into your Mixpanel projects for your existing users. 

Feel free to modify. If you have a high number of users you might want to use some sort of queing system instead of 
a sleep command to make sure that all the requests get sent propertly. 
*/ 

/* 
Dummy Data: 
This array represents the data you would fetch from your own database that would have user_ids and the date you would like to set as their 
birthdate. Mixpanel will use this birthdate to determine their cohort. 
*/ 

$users = array(
    "47859"=>"2011-01-07 12:23:01", 
    "47860"=>"2011-01-07 13:43:47", 
    "47861"=>"2011-01-07 13:54:24", 
    "47862"=>"2011-01-08 20:12:23", 
    "47863"=>"2011-01-08 22:59:29", 
); 

date_default_timezone_set("America/New_York"); //set for the timezone your sign up data is using. 

//Constructer: new EventImporter("Project Token","Project API Key"); 
//Both these values are on your mixpanel accounts page: http://mixpanel.com/account/ 
$metrics = new EventImporter("TOKEN_HERE","API_KEY_HERE"); 

foreach($users as $id=>$birthdate){ 
$props = array(); 
$props['distinct_id'] = $id; //distinct_id should be your identifier 
$props['time'] = strtotime($birthdate); //time should be their $birthdate 
$event = '$signup'; //you are sending the $signup event. You could also put $born here. 
echo "\nSending $event event for ".$props['distinct_id']." at $birthdate (".$props['time'].")\n"; 

$metrics->track($event, $props); 
} 


class EventImporter { 
    public $token; 
    public $api_key; 
    public $host = 'http://api.mixpanel.com/'; 
    public function __construct($token_string,$api_key) { 
     $this->token = $token_string; 
     $this->api_key = $api_key; 
    } 
    function track($event, $properties=array()) { 
     $params = array(
      'event' => $event, 
      'properties' => $properties 
      ); 

     if (!isset($params['properties']['token'])){ 
      $params['properties']['token'] = $this->token; 
     } 
     $url = $this->host . 'import/?data=' . base64_encode(json_encode($params)) . "&api_key=$this->api_key"; 
     //you still need to run as a background process 
     echo "$url\n"; 
     exec("curl '" . $url . "' >/dev/null 2>&1 &"); 
     sleep(.2); 
    } 
} 


?> 
+0

更多信息对此有所帮助:您打算在Magento所在服务器上的哪个位置执行此操作?作为一个Magento模块?通过API调用Magento?其他? –

+0

因此,从我读过的内容来看,它是一种将脚本中的数据发送到Mixpanel Endpoint API的脚本。事实上,它将与Magento在同一台服务器上。为了向您提供更多信息,请点击这里链接到Mixpanels文章:https://mixpanel.com/docs/api-documentation/importing-events-older-than-31-days - 我也可以为您提供这些功能为我提供了Magento的日常数据。从我与Mixpanel支持交谈开始,数据就变成了JSON或CSV格式。 – damek132

+0

考虑到最干净的是做一个Magento模块,你可能想从这里开始http://stackoverflow.com/questions/576908/how-to-create-a-simple-hello-world-module-in- magento,然后用特定的问题来优化你的问题。 –

回答

0

如果您将数据存储在CSV文件中,则可以使用分段CSV导入器轻松导入到Mixpanel。这个工具是建立在Segment之上的,如果你已经在使用Segment,这个过程会更容易。要导入数据和csv文件规范,请访问here