Example #1
0
 public static function getDataLoadManifest($identifier, array $columns, $incrementalLoad = false)
 {
     $manifest = ['dataSetSLIManifest' => ['file' => "{$identifier}.csv", 'dataSet' => $identifier, 'parts' => []]];
     foreach ($columns as $columnName => $column) {
         if (!isset($column['type'])) {
             continue;
         }
         switch ($column['type']) {
             case 'CONNECTION_POINT':
             case 'ATTRIBUTE':
                 if (!isset($column['identifierLabel'])) {
                     throw Exception::configurationError("Configuration of column {$columnName} is missing 'identifierLabel'");
                 }
                 $manifest['dataSetSLIManifest']['parts'][] = ['columnName' => $columnName, 'populates' => [$column['identifierLabel']], 'mode' => $incrementalLoad ? 'INCREMENTAL' : 'FULL', 'referenceKey' => 1];
                 break;
             case 'FACT':
                 if (!isset($column['identifier'])) {
                     throw Exception::configurationError("Configuration of column {$columnName} is missing 'identifier'");
                 }
                 $manifest['dataSetSLIManifest']['parts'][] = ['columnName' => $columnName, 'populates' => [$column['identifier']], 'mode' => $incrementalLoad ? 'INCREMENTAL' : 'FULL'];
                 break;
             case 'LABEL':
             case 'HYPERLINK':
                 if (!isset($column['identifier'])) {
                     throw Exception::configurationError("Configuration of column {$columnName} is missing 'identifier'");
                 }
                 $manifest['dataSetSLIManifest']['parts'][] = ['columnName' => $columnName, 'populates' => [$column['identifier']], 'mode' => $incrementalLoad ? 'INCREMENTAL' : 'FULL'];
                 break;
             case 'REFERENCE':
                 if (!isset($column['schemaReferenceConnectionLabel'])) {
                     throw Exception::configurationError("Configuration of column {$columnName} is missing 'schemaReferenceConnectionLabel'");
                 }
                 $manifest['dataSetSLIManifest']['parts'][] = ['columnName' => $columnName, 'populates' => [$column['schemaReferenceConnectionLabel']], 'mode' => $incrementalLoad ? 'INCREMENTAL' : 'FULL', 'referenceKey' => 1];
                 break;
             case 'DATE':
                 if (!isset($column['identifier'])) {
                     throw Exception::configurationError("Configuration of column {$columnName} is missing 'identifier'");
                 }
                 $manifest['dataSetSLIManifest']['parts'][] = ['columnName' => $columnName, 'populates' => ["{$column['identifier']}.date.mmddyyyy"], 'constraints' => ['date' => (string) $column['format']], 'mode' => $incrementalLoad ? 'INCREMENTAL' : 'FULL', 'referenceKey' => 1];
                 if (!empty($column['includeTime'])) {
                     if (!isset($column['identifierTimeFact'])) {
                         throw Exception::configurationError("Configuration of column {$columnName} is missing 'identifierTimeFact'");
                     }
                     $manifest['dataSetSLIManifest']['parts'][] = ['columnName' => $columnName . '_tm', 'populates' => [$column['identifierTimeFact']], 'mode' => $incrementalLoad ? 'INCREMENTAL' : 'FULL'];
                     $manifest['dataSetSLIManifest']['parts'][] = ['columnName' => $columnName . '_id', 'populates' => ["label.time.second.of.day." . Identifiers::getIdentifier($column['dateDimension'])], 'mode' => $incrementalLoad ? 'INCREMENTAL' : 'FULL', 'referenceKey' => 1];
                 }
                 break;
             case 'IGNORE':
                 break;
         }
     }
     return $manifest;
 }